package updatemanifests import ( "os" "path/filepath" "strings" "testing" assertapi "github.com/stretchr/testify/assert" "sigs.k8s.io/kustomize/kyaml/kio" "sigs.k8s.io/kustomize/kyaml/yaml" "edge-infra.dev/pkg/edge/component/build" "edge-infra.dev/pkg/edge/component/build/image" "edge-infra.dev/pkg/edge/gitops/fns/edgerelease" "edge-infra.dev/pkg/lib/build/bazel" ) func TestUpdateManifests(t *testing.T) { assert := assertapi.New(t) tmpdir, err := bazel.NewTestTmpDir("edge-infra-update-manifests-test-*") assert.NoError(err) tmpfile := filepath.Join(tmpdir, "manifests.yaml") // copy test data to tmpdir // https://docs.bazel.build/versions/2.2.0/test-encyclopedia.html#test-interaction-with-the-filesystem data, err := os.ReadFile("testdata/manifests.yaml") assert.NoError(err) err = os.WriteFile(tmpfile, data, 0600) assert.NoError(err) // create test variables metadata := edgerelease.Metadata{ Repo: "edge-infra", Org: "ncrvoyix-swt-retail", Commit: "97117a2b07f13a6ffe423af362e13912412d3492", ID: "499021129", SemVer: "0.0.1-rc.499021129.97117a.2021-01-20", Timestamp: "built.2021-01-20.17-04-04.0000UTC", } registry := "ncr-emeraldedge-docker-dev.jfrog.io" img := image.Image{Repository: "talaria", Digest: "sha256:8334923ba95cfda891632977c5885b018aea2fba42423b32350ce8e42e13aa7f"} component := edgerelease.Component{ Name: "talaria", Images: []edgerelease.PodImage{{Image: img}}, } er := edgerelease.New(edgerelease.Spec{ Metadata: metadata, AddBuildLabels: true, Registry: registry, Components: []edgerelease.Component{component}, }) // execute Update() function and verify results err = Update(er, tmpdir) assert.NoError(err) r := kio.LocalPackageReader{PackagePath: tmpdir} y, err := r.Read() assert.NoError(err) assert.True(len(y) > 0) for _, y := range y { m, err := y.GetMeta() assert.NoError(err) if m.TypeMeta.Kind == "Deployment" { assert.Equal(metadata.ID, m.Labels[build.BuildIDLabel], "build ID strings don't match") assert.Equal(metadata.Commit, m.Labels[build.CommitLabel], "commit strings don't match") assert.Equal(metadata.SemVer, m.Labels[build.SemVerLabel], "SemVer strings don't match") assert.Equal(metadata.Timestamp, m.Labels[build.TimestampLabel], "build timestamp strings don't match") assert.Equal(metadata.Repo, m.Labels[build.RepoLabel], "repo strings don't match") assert.Equal(metadata.Org, m.Labels[build.OrgLabel], "org strings don't match") containerList, err := y.Pipe(yaml.Lookup("spec", "template", "spec", "containers")) assert.NoError(err) container := containerList.Element("name", "talaria") imgValue, err := container.Pipe(yaml.Lookup("image")) assert.NoError(err) assert.Equal(registry+"/talaria@"+img.Digest, strings.TrimSpace(imgValue.MustString())) } } }