...
1
2
3
4 package prefix_test
5
6 import (
7 "strings"
8 "testing"
9
10 "github.com/stretchr/testify/assert"
11 "sigs.k8s.io/kustomize/api/filters/prefix"
12 filtertest_test "sigs.k8s.io/kustomize/api/testutils/filtertest"
13 "sigs.k8s.io/kustomize/api/types"
14 "sigs.k8s.io/kustomize/kyaml/yaml"
15 )
16
17 var mutationTrackerStub = filtertest_test.MutationTrackerStub{}
18
19 var tests = map[string]TestCase{
20 "prefix": {
21 input: `
22 apiVersion: example.com/v1
23 kind: Foo
24 metadata:
25 name: instance
26 ---
27 apiVersion: example.com/v1
28 kind: Bar
29 metadata:
30 name: instance
31 `,
32 expected: `
33 apiVersion: example.com/v1
34 kind: Foo
35 metadata:
36 name: foo-instance
37 ---
38 apiVersion: example.com/v1
39 kind: Bar
40 metadata:
41 name: foo-instance
42 `,
43 filter: prefix.Filter{
44 Prefix: "foo-",
45 FieldSpec: types.FieldSpec{Path: "metadata/name"},
46 },
47 },
48
49 "data-fieldspecs": {
50 input: `
51 apiVersion: example.com/v1
52 kind: Foo
53 metadata:
54 name: instance
55 a:
56 b:
57 c: d
58 ---
59 apiVersion: example.com/v1
60 kind: Bar
61 metadata:
62 name: instance
63 a:
64 b:
65 c: d
66 `,
67 expected: `
68 apiVersion: example.com/v1
69 kind: Foo
70 metadata:
71 name: instance
72 a:
73 b:
74 c: foo-d
75 ---
76 apiVersion: example.com/v1
77 kind: Bar
78 metadata:
79 name: instance
80 a:
81 b:
82 c: foo-d
83 `,
84 filter: prefix.Filter{
85 Prefix: "foo-",
86 FieldSpec: types.FieldSpec{Path: "a/b/c"},
87 },
88 },
89
90 "mutation tracker": {
91 input: `
92 apiVersion: example.com/v1
93 kind: Foo
94 metadata:
95 name: instance
96 ---
97 apiVersion: example.com/v1
98 kind: Bar
99 metadata:
100 name: instance
101 `,
102 expected: `
103 apiVersion: example.com/v1
104 kind: Foo
105 metadata:
106 name: foo-instance
107 ---
108 apiVersion: example.com/v1
109 kind: Bar
110 metadata:
111 name: foo-instance
112 `,
113 filter: prefix.Filter{
114 Prefix: "foo-",
115 FieldSpec: types.FieldSpec{Path: "metadata/name"},
116 },
117 mutationTracker: mutationTrackerStub.MutationTracker,
118 expectedSetValueArgs: []filtertest_test.SetValueArg{
119 {
120 Value: "foo-instance",
121 NodePath: []string{"metadata", "name"},
122 },
123 {
124 Value: "foo-instance",
125 NodePath: []string{"metadata", "name"},
126 },
127 },
128 },
129 }
130
131 type TestCase struct {
132 input string
133 expected string
134 filter prefix.Filter
135 mutationTracker func(key, value, tag string, node *yaml.RNode)
136 expectedSetValueArgs []filtertest_test.SetValueArg
137 }
138
139 func TestFilter(t *testing.T) {
140 for name := range tests {
141 mutationTrackerStub.Reset()
142 test := tests[name]
143 test.filter.WithMutationTracker(test.mutationTracker)
144 t.Run(name, func(t *testing.T) {
145 if !assert.Equal(t,
146 strings.TrimSpace(test.expected),
147 strings.TrimSpace(
148 filtertest_test.RunFilter(t, test.input, test.filter))) {
149 t.FailNow()
150 }
151 assert.Equal(t, test.expectedSetValueArgs, mutationTrackerStub.SetValueArgs())
152 })
153 }
154 }
155
View as plain text