diff options
Diffstat (limited to 'registry-scanner/pkg/registry/config_test.go')
| -rw-r--r-- | registry-scanner/pkg/registry/config_test.go | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/registry-scanner/pkg/registry/config_test.go b/registry-scanner/pkg/registry/config_test.go new file mode 100644 index 0000000..5664ecf --- /dev/null +++ b/registry-scanner/pkg/registry/config_test.go @@ -0,0 +1,110 @@ +package registry + +import ( + "testing" + "time" + + "github.com/argoproj-labs/argocd-image-updater/registry-scanner/test/fixture" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func Test_ParseRegistryConfFromYaml(t *testing.T) { + t.Run("Parse from valid YAML", func(t *testing.T) { + data := fixture.MustReadFile("../../config/example-config.yaml") + regList, err := ParseRegistryConfiguration(data) + require.NoError(t, err) + assert.Len(t, regList.Items, 4) + }) + + t.Run("Parse from invalid YAML: no name found", func(t *testing.T) { + registries := ` +registries: +- api_url: https://foo.io + ping: false +` + regList, err := ParseRegistryConfiguration(registries) + require.Error(t, err) + assert.Contains(t, err.Error(), "name is missing") + assert.Len(t, regList.Items, 0) + }) + + t.Run("Parse from invalid YAML: no API URL found", func(t *testing.T) { + registries := ` +registries: +- name: Foobar Registry + ping: false +` + regList, err := ParseRegistryConfiguration(registries) + require.Error(t, err) + assert.Contains(t, err.Error(), "API URL must be") + assert.Len(t, regList.Items, 0) + }) + + t.Run("Parse from invalid YAML: multiple registries without prefix", func(t *testing.T) { + registries := ` +registries: +- name: Foobar Registry + api_url: https://foobar.io + ping: false +- name: Barbar Registry + api_url: https://barbar.io + ping: false +` + regList, err := ParseRegistryConfiguration(registries) + require.Error(t, err) + assert.Contains(t, err.Error(), "already is Foobar Registry") + assert.Len(t, regList.Items, 0) + }) + + t.Run("Parse from invalid YAML: invalid tag sort mode", func(t *testing.T) { + registries := ` +registries: +- name: Foobar Registry + api_url: https://foobar.io + ping: false + tagsortmode: invalid +` + regList, err := ParseRegistryConfiguration(registries) + require.Error(t, err) + assert.Contains(t, err.Error(), "unknown tag sort mode") + assert.Len(t, regList.Items, 0) + }) + +} + +func Test_LoadRegistryConfiguration(t *testing.T) { + RestoreDefaultRegistryConfiguration() + + t.Run("Load from valid location", func(t *testing.T) { + err := LoadRegistryConfiguration("../../config/example-config.yaml", true) + require.NoError(t, err) + assert.Len(t, registries, 4) + reg, err := GetRegistryEndpoint("gcr.io") + require.NoError(t, err) + assert.Equal(t, "pullsecret:foo/bar", reg.Credentials) + reg, err = GetRegistryEndpoint("ghcr.io") + require.NoError(t, err) + assert.Equal(t, "ext:/some/script", reg.Credentials) + assert.Equal(t, 5*time.Hour, reg.CredsExpire) + RestoreDefaultRegistryConfiguration() + reg, err = GetRegistryEndpoint("gcr.io") + require.NoError(t, err) + assert.Equal(t, "", reg.Credentials) + }) + + t.Run("Load from invalid location", func(t *testing.T) { + err := LoadRegistryConfiguration("../../test/testdata/registry/config/does-not-exist.yaml", true) + require.Error(t, err) + require.Contains(t, err.Error(), "no such file or directory") + }) + + t.Run("Two defaults defined in same config", func(t *testing.T) { + err := LoadRegistryConfiguration("../../test/testdata/registry/config/two-defaults.yaml", true) + require.Error(t, err) + require.Contains(t, err.Error(), "cannot set registry") + }) + + RestoreDefaultRegistryConfiguration() +} |
