...
1
2
3
4 package manifestreader
5
6 import (
7 "strings"
8 "testing"
9
10 "github.com/stretchr/testify/assert"
11 cmdtesting "k8s.io/kubectl/pkg/cmd/testing"
12 )
13
14 func TestStreamManifestReader_Read(t *testing.T) {
15 testCases := map[string]struct {
16 manifests string
17 namespace string
18 enforceNamespace bool
19 validate bool
20
21 infosCount int
22 namespaces []string
23 }{
24 "namespace should be set if not already present": {
25 manifests: depManifest,
26 namespace: "foo",
27 enforceNamespace: true,
28
29 infosCount: 1,
30 namespaces: []string{"foo"},
31 },
32 "multiple resources": {
33 manifests: depManifest + "\n---\n" + cmManifest,
34 namespace: "bar",
35 enforceNamespace: false,
36
37 infosCount: 2,
38 namespaces: []string{"bar", "bar"},
39 },
40 }
41
42 for tn, tc := range testCases {
43 t.Run(tn, func(t *testing.T) {
44 tf := cmdtesting.NewTestFactory().WithNamespace("test-ns")
45 defer tf.Cleanup()
46
47 mapper, err := tf.ToRESTMapper()
48 if !assert.NoError(t, err) {
49 t.FailNow()
50 }
51
52 stringReader := strings.NewReader(tc.manifests)
53
54 objs, err := (&StreamManifestReader{
55 ReaderName: "testReader",
56 Reader: stringReader,
57 ReaderOptions: ReaderOptions{
58 Mapper: mapper,
59 Namespace: tc.namespace,
60 EnforceNamespace: tc.enforceNamespace,
61 Validate: tc.validate,
62 },
63 }).Read()
64
65 assert.NoError(t, err)
66 assert.Equal(t, len(objs), tc.infosCount)
67
68 for i, obj := range objs {
69 assert.Equal(t, tc.namespaces[i], obj.GetNamespace())
70 }
71 })
72 }
73 }
74
View as plain text