...
1 package updatemanifests
2
3 import (
4 "os"
5 "path/filepath"
6 "strings"
7 "testing"
8
9 assertapi "github.com/stretchr/testify/assert"
10 "sigs.k8s.io/kustomize/kyaml/kio"
11 "sigs.k8s.io/kustomize/kyaml/yaml"
12
13 "edge-infra.dev/pkg/edge/component/build"
14 "edge-infra.dev/pkg/edge/component/build/image"
15 "edge-infra.dev/pkg/edge/gitops/fns/edgerelease"
16 "edge-infra.dev/pkg/lib/build/bazel"
17 )
18
19 func TestUpdateManifests(t *testing.T) {
20 assert := assertapi.New(t)
21
22 tmpdir, err := bazel.NewTestTmpDir("edge-infra-update-manifests-test-*")
23 assert.NoError(err)
24 tmpfile := filepath.Join(tmpdir, "manifests.yaml")
25
26
27
28 data, err := os.ReadFile("testdata/manifests.yaml")
29 assert.NoError(err)
30 err = os.WriteFile(tmpfile, data, 0600)
31 assert.NoError(err)
32
33
34 metadata := edgerelease.Metadata{
35 Repo: "edge-infra",
36 Org: "ncrvoyix-swt-retail",
37 Commit: "97117a2b07f13a6ffe423af362e13912412d3492",
38 ID: "499021129",
39 SemVer: "0.0.1-rc.499021129.97117a.2021-01-20",
40 Timestamp: "built.2021-01-20.17-04-04.0000UTC",
41 }
42 registry := "ncr-emeraldedge-docker-dev.jfrog.io"
43 img := image.Image{Repository: "talaria", Digest: "sha256:8334923ba95cfda891632977c5885b018aea2fba42423b32350ce8e42e13aa7f"}
44 component := edgerelease.Component{
45 Name: "talaria",
46 Images: []edgerelease.PodImage{{Image: img}},
47 }
48
49 er := edgerelease.New(edgerelease.Spec{
50 Metadata: metadata,
51 AddBuildLabels: true,
52 Registry: registry,
53 Components: []edgerelease.Component{component},
54 })
55
56
57 err = Update(er, tmpdir)
58 assert.NoError(err)
59
60 r := kio.LocalPackageReader{PackagePath: tmpdir}
61 y, err := r.Read()
62 assert.NoError(err)
63 assert.True(len(y) > 0)
64
65 for _, y := range y {
66 m, err := y.GetMeta()
67 assert.NoError(err)
68
69 if m.TypeMeta.Kind == "Deployment" {
70 assert.Equal(metadata.ID, m.Labels[build.BuildIDLabel], "build ID strings don't match")
71 assert.Equal(metadata.Commit, m.Labels[build.CommitLabel], "commit strings don't match")
72 assert.Equal(metadata.SemVer, m.Labels[build.SemVerLabel], "SemVer strings don't match")
73 assert.Equal(metadata.Timestamp, m.Labels[build.TimestampLabel], "build timestamp strings don't match")
74 assert.Equal(metadata.Repo, m.Labels[build.RepoLabel], "repo strings don't match")
75 assert.Equal(metadata.Org, m.Labels[build.OrgLabel], "org strings don't match")
76
77 containerList, err := y.Pipe(yaml.Lookup("spec", "template", "spec", "containers"))
78 assert.NoError(err)
79
80 container := containerList.Element("name", "talaria")
81
82 imgValue, err := container.Pipe(yaml.Lookup("image"))
83 assert.NoError(err)
84 assert.Equal(registry+"/talaria@"+img.Digest, strings.TrimSpace(imgValue.MustString()))
85 }
86 }
87 }
88
View as plain text