mirror of
https://github.com/komodorio/helm-dashboard.git
synced 2026-03-24 11:48:04 +00:00
@@ -2,22 +2,47 @@ package objects
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"helm.sh/helm/v3/pkg/action"
|
"helm.sh/helm/v3/pkg/action"
|
||||||
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
|
"path"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"gotest.tools/v3/assert"
|
"gotest.tools/v3/assert"
|
||||||
"helm.sh/helm/v3/pkg/cli"
|
"helm.sh/helm/v3/pkg/cli"
|
||||||
"helm.sh/helm/v3/pkg/repo"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var filePath = "./testdata/repositories.yaml"
|
var filePath = "./testdata/repositories.yaml"
|
||||||
|
|
||||||
func initRepository(t *testing.T, filePath string) *Repositories {
|
func initRepository(t *testing.T) *Repositories {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
|
|
||||||
settings := cli.New()
|
settings := cli.New()
|
||||||
|
|
||||||
|
fname, err := ioutil.TempFile("", "repo-*.yaml")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
input, err := ioutil.ReadFile(filePath)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = ioutil.WriteFile(fname.Name(), input, 0644)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
t.Cleanup(func() {
|
||||||
|
err := os.Remove(fname.Name())
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
// Sets the repository file path
|
// Sets the repository file path
|
||||||
settings.RepositoryConfig = filePath
|
settings.RepositoryConfig = fname.Name()
|
||||||
|
settings.RepositoryCache = path.Dir(filePath)
|
||||||
|
|
||||||
testRepository := &Repositories{
|
testRepository := &Repositories{
|
||||||
Settings: settings,
|
Settings: settings,
|
||||||
@@ -27,118 +52,55 @@ func initRepository(t *testing.T, filePath string) *Repositories {
|
|||||||
return testRepository
|
return testRepository
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestLoadRepo(t *testing.T) {
|
|
||||||
|
|
||||||
res, err := repo.LoadFile(filePath)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
testRepository := initRepository(t, filePath)
|
|
||||||
|
|
||||||
file, err := testRepository.Load()
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
assert.Equal(t, file.Generated, res.Generated)
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestList(t *testing.T) {
|
func TestList(t *testing.T) {
|
||||||
res, err := repo.LoadFile(filePath)
|
testRepository := initRepository(t)
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
testRepository := initRepository(t, filePath)
|
|
||||||
|
|
||||||
repos, err := testRepository.List()
|
repos, err := testRepository.List()
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
assert.Equal(t, len(repos), len(res.Repositories))
|
assert.Equal(t, len(repos), 4)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestAdd(t *testing.T) {
|
func TestAdd(t *testing.T) {
|
||||||
testRepoName := "TEST"
|
testRepoName := "TEST"
|
||||||
testRepoUrl := "https://helm.github.io/examples"
|
testRepoUrl := "https://helm.github.io/examples"
|
||||||
|
|
||||||
res, err := repo.LoadFile(filePath)
|
testRepository := initRepository(t)
|
||||||
if err != nil {
|
err := testRepository.Add(testRepoName, testRepoUrl)
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete the repository if already exist
|
|
||||||
res.Remove(testRepoName)
|
|
||||||
|
|
||||||
testRepository := initRepository(t, filePath)
|
|
||||||
|
|
||||||
err = testRepository.Add(testRepoName, testRepoUrl)
|
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err, "Failed to add repo")
|
t.Fatal(err, "Failed to add repo")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reload the file
|
r, err := testRepository.Get(testRepoName)
|
||||||
res, err = repo.LoadFile(filePath)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err, "Failed to add repo")
|
||||||
}
|
}
|
||||||
|
|
||||||
assert.Equal(t, res.Has(testRepoName), true)
|
assert.Equal(t, r.Orig.URL, testRepoUrl)
|
||||||
|
|
||||||
// Removes test repository which is added for testing
|
|
||||||
t.Cleanup(func() {
|
|
||||||
removed := res.Remove(testRepoName)
|
|
||||||
if removed != true {
|
|
||||||
t.Log("Failed to clean the test repository file")
|
|
||||||
}
|
|
||||||
err = res.WriteFile(filePath, 0644)
|
|
||||||
if err != nil {
|
|
||||||
t.Log("Failed to write the file while cleaning test repo")
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestDelete(t *testing.T) {
|
func TestDelete(t *testing.T) {
|
||||||
testRepoName := "TEST DELETE"
|
testRepository := initRepository(t)
|
||||||
testRepoUrl := "https://helm.github.io/examples"
|
|
||||||
|
|
||||||
res, err := repo.LoadFile(filePath)
|
testRepoName := "charts" // don't ever delete 'testing'!
|
||||||
if err != nil {
|
err := testRepository.Delete(testRepoName)
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add a test entry
|
|
||||||
res.Add(&repo.Entry{Name: testRepoName, URL: testRepoUrl})
|
|
||||||
err = res.WriteFile(filePath, 0644)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal("Failed to write the file while creating test repo")
|
|
||||||
}
|
|
||||||
|
|
||||||
testRepository := initRepository(t, filePath)
|
|
||||||
|
|
||||||
err = testRepository.Delete(testRepoName)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err, "Failed to delete the repo")
|
t.Fatal(err, "Failed to delete the repo")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reload the file
|
_, err = testRepository.Get(testRepoName)
|
||||||
res, err = repo.LoadFile(filePath)
|
if err == nil {
|
||||||
if err != nil {
|
t.Fatal("Failed to delete repo")
|
||||||
t.Fatal(err)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
assert.Equal(t, res.Has(testRepoName), false)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGet(t *testing.T) {
|
func TestGet(t *testing.T) {
|
||||||
// Initial repositiry name in test file
|
// Initial repositiry name in test file
|
||||||
repoName := "charts"
|
repoName := "charts"
|
||||||
|
|
||||||
testRepository := initRepository(t, filePath)
|
testRepository := initRepository(t)
|
||||||
|
|
||||||
repo, err := testRepository.Get(repoName)
|
repo, err := testRepository.Get(repoName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -147,3 +109,21 @@ func TestGet(t *testing.T) {
|
|||||||
|
|
||||||
assert.Equal(t, repo.Orig.Name, repoName)
|
assert.Equal(t, repo.Orig.Name, repoName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestCharts(t *testing.T) {
|
||||||
|
testRepository := initRepository(t)
|
||||||
|
|
||||||
|
r, err := testRepository.Get("testing")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
charts, err := r.Charts()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(charts) != 2 {
|
||||||
|
t.Fatalf("Wrong charts len: %d", len(charts))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -28,3 +28,6 @@ repositories:
|
|||||||
password: ""
|
password: ""
|
||||||
url: http://secondexample.com
|
url: http://secondexample.com
|
||||||
username: ""
|
username: ""
|
||||||
|
- cache: testing-index.yaml
|
||||||
|
name: testing
|
||||||
|
url: http://example.com/charts
|
||||||
|
|||||||
66
pkg/dashboard/objects/testdata/testing-index.yaml
vendored
Normal file
66
pkg/dashboard/objects/testdata/testing-index.yaml
vendored
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
entries:
|
||||||
|
alpine:
|
||||||
|
- name: alpine
|
||||||
|
url: https://charts.helm.sh/stable/alpine-0.1.0.tgz
|
||||||
|
checksum: 0e6661f193211d7a5206918d42f5c2a9470b737d
|
||||||
|
created: "2018-06-27T10:00:18.230700509Z"
|
||||||
|
deprecated: true
|
||||||
|
home: https://helm.sh/helm
|
||||||
|
sources:
|
||||||
|
- https://github.com/helm/helm
|
||||||
|
version: 0.1.0
|
||||||
|
appVersion: 1.2.3
|
||||||
|
description: Deploy a basic Alpine Linux pod
|
||||||
|
keywords: []
|
||||||
|
maintainers: []
|
||||||
|
icon: ""
|
||||||
|
apiVersion: v2
|
||||||
|
- name: alpine
|
||||||
|
url: https://charts.helm.sh/stable/alpine-0.2.0.tgz
|
||||||
|
checksum: 0e6661f193211d7a5206918d42f5c2a9470b737d
|
||||||
|
created: "2018-07-09T11:34:37.797864902Z"
|
||||||
|
home: https://helm.sh/helm
|
||||||
|
sources:
|
||||||
|
- https://github.com/helm/helm
|
||||||
|
version: 0.2.0
|
||||||
|
appVersion: 2.3.4
|
||||||
|
description: Deploy a basic Alpine Linux pod
|
||||||
|
keywords: []
|
||||||
|
maintainers: []
|
||||||
|
icon: ""
|
||||||
|
apiVersion: v2
|
||||||
|
- name: alpine
|
||||||
|
url: https://charts.helm.sh/stable/alpine-0.3.0-rc.1.tgz
|
||||||
|
checksum: 0e6661f193211d7a5206918d42f5c2a9470b737d
|
||||||
|
created: "2020-11-12T08:44:58.872726222Z"
|
||||||
|
home: https://helm.sh/helm
|
||||||
|
sources:
|
||||||
|
- https://github.com/helm/helm
|
||||||
|
version: 0.3.0-rc.1
|
||||||
|
appVersion: 3.0.0
|
||||||
|
description: Deploy a basic Alpine Linux pod
|
||||||
|
keywords: []
|
||||||
|
maintainers: []
|
||||||
|
icon: ""
|
||||||
|
apiVersion: v2
|
||||||
|
mariadb:
|
||||||
|
- name: mariadb
|
||||||
|
url: https://charts.helm.sh/stable/mariadb-0.3.0.tgz
|
||||||
|
checksum: 65229f6de44a2be9f215d11dbff311673fc8ba56
|
||||||
|
created: "2018-04-23T08:20:27.160959131Z"
|
||||||
|
home: https://mariadb.org
|
||||||
|
sources:
|
||||||
|
- https://github.com/bitnami/bitnami-docker-mariadb
|
||||||
|
version: 0.3.0
|
||||||
|
description: Chart for MariaDB
|
||||||
|
keywords:
|
||||||
|
- mariadb
|
||||||
|
- mysql
|
||||||
|
- database
|
||||||
|
- sql
|
||||||
|
maintainers:
|
||||||
|
- name: Bitnami
|
||||||
|
email: containers@bitnami.com
|
||||||
|
icon: ""
|
||||||
|
apiVersion: v2
|
||||||
Reference in New Issue
Block a user