package release_test import ( "fmt" "testing" "git.badhouseplants.net/allanger/shoebill/internal/utils/helmhelper" "git.badhouseplants.net/allanger/shoebill/pkg/release" "git.badhouseplants.net/allanger/shoebill/pkg/repository" "github.com/stretchr/testify/assert" "gopkg.in/yaml.v2" ) func TestRepositoryObjFromNameExisting(t *testing.T) { repos := []*repository.Repository{ { Name: "test0", URL: "https://test.test", }, { Name: "test1", URL: "oco://test.test", }, } release := &release.Release{ Repository: "test0", } err := release.RepositoryObjFromName(repos) if err != nil { t.Error(err) } assert.Equal( t, release.RepositoryObj.Name, "test0", fmt.Sprintf("unexpected repo name: %s", release.RepositoryObj.Name), ) assert.Equal( t, release.RepositoryObj.URL, "https://test.test", fmt.Sprintf("unexpected repo url: %s", release.RepositoryObj.URL), ) } func TestRepositoryObjFromNameNonExisting(t *testing.T) { repos := []*repository.Repository{ { Name: "test0", URL: "https://test.test", }, { Name: "test1", URL: "oco://test.test", }, } release := &release.Release{ Repository: "test_notfound", } err := release.RepositoryObjFromName(repos) assert.ErrorContains(t, err, "couldn't gather the RepositoryObj for test_notfound", fmt.Sprintf("got an unexpected error: %s", err), ) } func TestRepositoryObjParsing(t *testing.T) { t.Log("Repository Object should be empty after parsing") rls := &release.Release{} const yamlSnippet = `--- repository: test repositoryObj: name: test url: test.test ` if err := yaml.Unmarshal([]byte(yamlSnippet), &rls); err != nil { t.Error(err) } assert.Equal(t, (*repository.Repository)(nil), rls.RepositoryObj, "release object should be empty") } func TestRepositoryObjFillingUp(t *testing.T) { rls := &release.Release{ Repository: "test1", } expectedRepo := &repository.Repository{ Name: "test1", URL: "oci://test.test", Kind: repository.HELM_REPO_OCI, } var repos repository.Repositories = repository.Repositories{ &repository.Repository{ Name: "test1", URL: "https://test.test", Kind: repository.HELM_REPO_DEFAULT, }, expectedRepo, } if err := rls.RepositoryObjFromName(repos); err != nil { t.Error(err) } assert.Equal(t, expectedRepo, rls.RepositoryObj, "release object should be empty") } func TestVersionHandlerLatest(t *testing.T) { hh := helmhelper.NewHelmMock() rls := &release.Release{ Repository: "test1", Version: "latest", RepositoryObj: new(repository.Repository), } if err := rls.VersionHandler("", hh); err != nil { t.Error(err) } assert.Equal(t, helmhelper.MOCK_LATEST_VERSION, rls.Version, "unexpected latest version") }