diff options
| author | noah <noah@hackedu.io> | 2021-10-21 21:34:05 +1300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-10-21 10:34:05 +0200 |
| commit | 4b130437536e3e321b4ad1ca9dc725f771f3d697 (patch) | |
| tree | 3196cff76463904e24564d1da2a97a5367c10902 /pkg/argocd/git_test.go | |
| parent | 89b10c14b5015b644f6d909cce067001220033e6 (diff) | |
fix: use kyaml to preserve kustomization (#274)
* fix: use kyaml to preserve kustomization
fixes #250
fixes #268
fixes #247
* chore: linter error
* fix: tests and linting
* go mod tidy
Diffstat (limited to 'pkg/argocd/git_test.go')
| -rw-r--r-- | pkg/argocd/git_test.go | 83 |
1 files changed, 74 insertions, 9 deletions
diff --git a/pkg/argocd/git_test.go b/pkg/argocd/git_test.go index 5a60d57..92731d5 100644 --- a/pkg/argocd/git_test.go +++ b/pkg/argocd/git_test.go @@ -9,9 +9,11 @@ import ( "github.com/argoproj-labs/argocd-image-updater/pkg/image" "github.com/argoproj-labs/argocd-image-updater/pkg/tag" + "sigs.k8s.io/kustomize/api/types" + kyaml "sigs.k8s.io/kustomize/kyaml/yaml" + "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" "github.com/stretchr/testify/assert" - image2 "sigs.k8s.io/kustomize/pkg/image" ) func Test_TemplateCommitMessage(t *testing.T) { @@ -44,36 +46,36 @@ func Test_parseImageOverride(t *testing.T) { cases := []struct { name string override v1alpha1.KustomizeImage - expected image2.Image + expected types.Image }{ - {"tag update", "ghcr.io:1234/foo/foo:123", image2.Image{ + {"tag update", "ghcr.io:1234/foo/foo:123", types.Image{ Name: "ghcr.io:1234/foo/foo", NewTag: "123", }}, - {"image update", "ghcr.io:1234/foo/foo=ghcr.io:1234/bar", image2.Image{ + {"image update", "ghcr.io:1234/foo/foo=ghcr.io:1234/bar", types.Image{ Name: "ghcr.io:1234/foo/foo", NewName: "ghcr.io:1234/bar", }}, - {"update everything", "ghcr.io:1234/foo/foo=1234.foo.com:9876/bar:123", image2.Image{ + {"update everything", "ghcr.io:1234/foo/foo=1234.foo.com:9876/bar:123", types.Image{ Name: "ghcr.io:1234/foo/foo", NewName: "1234.foo.com:9876/bar", NewTag: "123", }}, - {"change registry and tag", "ghcr.io:1234/foo/foo=1234.dkr.ecr.us-east-1.amazonaws.com/bar:123", image2.Image{ + {"change registry and tag", "ghcr.io:1234/foo/foo=1234.dkr.ecr.us-east-1.amazonaws.com/bar:123", types.Image{ Name: "ghcr.io:1234/foo/foo", NewName: "1234.dkr.ecr.us-east-1.amazonaws.com/bar", NewTag: "123", }}, - {"change only registry", "0001.dkr.ecr.us-east-1.amazonaws.com/bar=1234.dkr.ecr.us-east-1.amazonaws.com/bar", image2.Image{ + {"change only registry", "0001.dkr.ecr.us-east-1.amazonaws.com/bar=1234.dkr.ecr.us-east-1.amazonaws.com/bar", types.Image{ Name: "0001.dkr.ecr.us-east-1.amazonaws.com/bar", NewName: "1234.dkr.ecr.us-east-1.amazonaws.com/bar", }}, - {"change image and set digest", "foo=acme/app@sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", image2.Image{ + {"change image and set digest", "foo=acme/app@sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", types.Image{ Name: "foo", NewName: "acme/app", Digest: "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", }}, - {"set digest", "acme/app@sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", image2.Image{ + {"set digest", "acme/app@sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", types.Image{ Name: "acme/app", Digest: "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", }}, @@ -86,3 +88,66 @@ func Test_parseImageOverride(t *testing.T) { } } + +func Test_imagesFilter(t *testing.T) { + for _, tt := range []struct { + name string + images v1alpha1.KustomizeImages + expected string + }{ + {name: "simple", images: v1alpha1.KustomizeImages{"foo"}, expected: ` +images: +- name: foo +`}, + {name: "tagged", images: v1alpha1.KustomizeImages{"foo:bar"}, expected: ` +images: +- name: foo + newTag: bar +`}, + {name: "rename", images: v1alpha1.KustomizeImages{"baz=foo:bar"}, expected: ` +images: +- name: baz + newName: foo + newTag: bar +`}, + {name: "digest", images: v1alpha1.KustomizeImages{"baz=foo@sha12345"}, expected: ` +images: +- name: baz + newName: foo + digest: sha12345 +`}, + {name: "digest simple", images: v1alpha1.KustomizeImages{"foo@sha12345"}, expected: ` +images: +- name: foo + digest: sha12345 +`}, + {name: "all", images: v1alpha1.KustomizeImages{ + "foo", + "foo=bar", // merges with above + "baz@sha12345", + "bar:123", + "foo=bar:123", // merges and overwrites the first two + }, expected: ` +images: +- name: foo + newName: bar + newTag: "123" +- name: baz + digest: sha12345 +- name: bar + newTag: "123" +`}, + } { + t.Run(tt.name, func(t *testing.T) { + filter, err := imagesFilter(tt.images) + assert.NoError(t, err) + + node := kyaml.NewRNode(&kyaml.Node{Kind: kyaml.DocumentNode, Content: []*kyaml.Node{ + kyaml.NewMapRNode(nil).YNode(), + }}) + node, err = filter.Filter(node) + assert.NoError(t, err) + assert.YAMLEq(t, tt.expected, node.MustString()) + }) + } +} |
