...

Source file src/edge-infra.dev/pkg/f8n/warehouse/pallet/resolve/resolve_test.go

Documentation: edge-infra.dev/pkg/f8n/warehouse/pallet/resolve

     1  package resolve
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  	"testing"
     7  
     8  	"github.com/google/go-containerregistry/pkg/name"
     9  	v1 "github.com/google/go-containerregistry/pkg/v1"
    10  	"github.com/stretchr/testify/assert"
    11  	"github.com/stretchr/testify/require"
    12  
    13  	"edge-infra.dev/pkg/f8n/warehouse/oci"
    14  	"edge-infra.dev/pkg/f8n/warehouse/oci/mutate"
    15  	"edge-infra.dev/pkg/f8n/warehouse/whtest/registry"
    16  	"edge-infra.dev/test/fixtures"
    17  	"edge-infra.dev/test/snapshot"
    18  )
    19  
    20  var path *fixtures.Path
    21  
    22  func TestMain(m *testing.M) {
    23  	var err error
    24  	path, err = fixtures.Layout()
    25  	if err != nil {
    26  		panic(err)
    27  	}
    28  
    29  	os.Exit(m.Run())
    30  }
    31  
    32  func TestResolve(t *testing.T) {
    33  	tcs := map[string]name.Reference{
    34  		"shoot artifact":           name.MustParseReference("shoot:latest"),
    35  		"redpanda-system artifact": name.MustParseReference("redpanda-system:latest"),
    36  	}
    37  	for test, tc := range tcs {
    38  		t.Run(test, func(t *testing.T) {
    39  			oart, err := path.Get(tc)
    40  			if err != nil {
    41  				t.Error(err)
    42  			}
    43  
    44  			result, err := Resolve(oart)
    45  			if err != nil {
    46  				t.Error(err)
    47  			}
    48  
    49  			snapshot.Snap(t, result)
    50  		})
    51  	}
    52  }
    53  
    54  func TestResolveRef(t *testing.T) {
    55  	u, testRegistry, err := registry.New()
    56  	if err != nil {
    57  		t.Error(err)
    58  	}
    59  
    60  	tcs := map[string]string{
    61  		"shoot artifact":           "shoot",
    62  		"redpanda-system artifact": "redpanda-system",
    63  	}
    64  
    65  	for test, tc := range tcs {
    66  		t.Run(test, func(t *testing.T) {
    67  			ref, err := name.ParseReference(fmt.Sprintf("%s/test/%s:latest", u.Host, tc))
    68  			if err != nil {
    69  				t.Error(err)
    70  			}
    71  			t.Log(ref)
    72  
    73  			if err := path.Push(ref, tc, "latest"); err != nil {
    74  				t.Error(err)
    75  			}
    76  
    77  			result, err := Ref(ref)
    78  			if err != nil {
    79  				t.Error(err)
    80  			}
    81  			snapshots := make(map[string]v1.Hash, len(result))
    82  			for k, v := range result {
    83  				d, err := v.Digest()
    84  				require.NoError(t, err)
    85  				snapshots[k] = d
    86  			}
    87  			snapshot.Snap(t, snapshots)
    88  		})
    89  	}
    90  	testRegistry.Close()
    91  }
    92  
    93  func TestAcceptFirst(t *testing.T) {
    94  	oart, err := path.Get(name.MustParseReference("linkerdctl-test:latest"))
    95  	if err != nil {
    96  		require.NoError(t, err)
    97  	}
    98  
    99  	certMgr, err := path.Get(name.MustParseReference("cert-manager-test:resolve-conflict"))
   100  	if err != nil {
   101  		require.NoError(t, err)
   102  	}
   103  
   104  	newIdx, err := mutate.AppendManifests(oart.(v1.ImageIndex), certMgr)
   105  	if err != nil {
   106  		require.NoError(t, err)
   107  	}
   108  
   109  	_, err = Resolve(newIdx)
   110  	var conflict *oci.ConflictError
   111  	assert.ErrorAs(t, err, &conflict, "Failed TestAcceptFirst -> ConflictError expected")
   112  
   113  	result, err := Resolve(newIdx, AcceptFirstDigest())
   114  	assert.NoError(t, err, "Resolve should not error when AcceptFirst() is passed in.")
   115  	d, err := result["cert-manager-test"].Digest()
   116  	require.NoError(t, err)
   117  
   118  	snapshot.Snap(t, d)
   119  }
   120  

View as plain text