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