...

Source file src/edge-infra.dev/pkg/edge/component/build/updatemanifests/update_manifests_test.go

Documentation: edge-infra.dev/pkg/edge/component/build/updatemanifests

     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  	// copy test data to tmpdir
    27  	// https://docs.bazel.build/versions/2.2.0/test-encyclopedia.html#test-interaction-with-the-filesystem
    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  	// create test variables
    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  	// execute Update() function and verify results
    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