...

Source file src/edge-infra.dev/pkg/f8n/warehouse/lift/cmd/pack/pack_test.go

Documentation: edge-infra.dev/pkg/f8n/warehouse/lift/cmd/pack

     1  package pack
     2  
     3  import (
     4  	"fmt"
     5  	"io/fs"
     6  	"os"
     7  	"testing"
     8  
     9  	"github.com/google/go-containerregistry/pkg/name"
    10  	"github.com/stretchr/testify/assert"
    11  	"gotest.tools/v3/icmd"
    12  
    13  	"edge-infra.dev/pkg/f8n/warehouse/lift/cmd/internal/lifttest"
    14  	"edge-infra.dev/pkg/f8n/warehouse/whtest/registry"
    15  	"edge-infra.dev/pkg/k8s/kustomize"
    16  	"edge-infra.dev/pkg/lib/build/bazel"
    17  	"edge-infra.dev/test/fixtures"
    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 TestPackCmd(t *testing.T) {
    33  	dir, err := bazel.NewTestTmpDir("pack-test")
    34  	if err != nil {
    35  		t.Fatal(err)
    36  	}
    37  	defer os.RemoveAll(dir)
    38  	lifttest.Setup(t, dir)
    39  	path, err := lifttest.CreateLiftBinary()
    40  	if err != nil {
    41  		t.Fatal(err)
    42  	}
    43  	result := icmd.RunCommand(path, "pack", "-h")
    44  
    45  	fmt.Println(result.String())
    46  	icmd.RunCommand(path).Assert(t, icmd.Success)
    47  }
    48  
    49  func TestResolvePalletPaths(t *testing.T) {
    50  	fs, err := fs.Sub(fixtures.PalletFixtures, "warehouse/src")
    51  	assert.NoError(t, err)
    52  	kfs := &kustomize.FS{FS: fs}
    53  
    54  	tcs := map[string]struct {
    55  		path string
    56  		err  bool
    57  	}{
    58  		"single valid path": {
    59  			path: "pallets/real/edge/datasync/shoot",
    60  			err:  false,
    61  		},
    62  		"single valid path with pallet.yaml": {
    63  			path: "pallets/real/edge/datasync/shoot/pallet.yaml",
    64  			err:  false,
    65  		},
    66  		"recursive valid path": {
    67  			path: "pallets/real/edge/datasync/...",
    68  			err:  false,
    69  		},
    70  		"recursive invalid path": {
    71  			path: "pallets/real/invalid/...",
    72  			err:  true,
    73  		},
    74  	}
    75  
    76  	for test, tc := range tcs {
    77  		t.Run(test, func(t *testing.T) {
    78  			actual, err := resolvePalletPaths(tc.path, kfs)
    79  			if tc.err {
    80  				assert.Error(t, err)
    81  			} else {
    82  				assert.NoError(t, err)
    83  			}
    84  			for _, path := range actual {
    85  				assert.True(t, kfs.Exists(path))
    86  			}
    87  		})
    88  	}
    89  }
    90  
    91  func TestPush(t *testing.T) {
    92  	u, registry, err := registry.New()
    93  	if err != nil {
    94  		t.Fatal(err)
    95  	}
    96  	t.Setenv("WAREHOUSE_REPO", u.Host)
    97  	dir, err := bazel.NewTestTmpDir("pack-test")
    98  	if err != nil {
    99  		t.Fatal(err)
   100  	}
   101  	defer os.RemoveAll(dir)
   102  	lifttest.Setup(t, dir, lifttest.WithFixtures())
   103  	path, err := lifttest.CreateLiftBinary()
   104  	if err != nil {
   105  		t.Fatal(err)
   106  	}
   107  	badResult := icmd.RunCommand(path, "pack", "-push", "pallets/real/does-not-exist")
   108  	assert.Error(t, badResult.Error)
   109  	result := icmd.RunCommand(path, "pack", "-push", "pallets/real/external-secrets")
   110  	assert.NoError(t, result.Error)
   111  	icmd.RunCommand(path).Assert(t, icmd.Success)
   112  	ref, err := name.ParseReference(fmt.Sprintf("%s/test/external-secrets:latest", u.Host))
   113  	if err != nil {
   114  		t.Fatal(err)
   115  	}
   116  	t.Log(ref)
   117  	registry.Close()
   118  }
   119  

View as plain text