...
1
2
3
4 package filters_test
5
6 import (
7 "bytes"
8 "testing"
9
10 "github.com/stretchr/testify/assert"
11 . "sigs.k8s.io/kustomize/kyaml/kio"
12 . "sigs.k8s.io/kustomize/kyaml/kio/filters"
13 )
14
15 var r = `
16 apiVersion: apps/v1
17 kind: Deployment
18 metadata:
19 name: foo1
20 namespace: bar
21 ---
22 apiVersion: apps/v1
23 kind: Deployment
24 metadata:
25 name: foo2
26 ---
27 apiVersion: v1
28 kind: Service
29 metadata:
30 name: foo2
31 namespace: bar
32 ---
33 apiVersion: v1
34 kind: Service
35 metadata:
36 name: foo1
37 `
38
39 func TestFileSetter_Filter(t *testing.T) {
40 in := bytes.NewBufferString(r)
41 out := &bytes.Buffer{}
42 err := Pipeline{
43 Inputs: []Reader{&ByteReader{Reader: in}},
44 Filters: []Filter{&FileSetter{}},
45 Outputs: []Writer{ByteWriter{Sort: true, Writer: out}},
46 }.Execute()
47 if !assert.NoError(t, err) {
48 return
49 }
50 assert.Equal(t, `apiVersion: apps/v1
51 kind: Deployment
52 metadata:
53 name: foo1
54 namespace: bar
55 annotations:
56 internal.config.kubernetes.io/path: 'foo1_deployment.yaml'
57 config.kubernetes.io/path: 'foo1_deployment.yaml'
58 ---
59 apiVersion: v1
60 kind: Service
61 metadata:
62 name: foo1
63 annotations:
64 internal.config.kubernetes.io/path: 'foo1_service.yaml'
65 config.kubernetes.io/path: 'foo1_service.yaml'
66 ---
67 apiVersion: apps/v1
68 kind: Deployment
69 metadata:
70 name: foo2
71 annotations:
72 internal.config.kubernetes.io/path: 'foo2_deployment.yaml'
73 config.kubernetes.io/path: 'foo2_deployment.yaml'
74 ---
75 apiVersion: v1
76 kind: Service
77 metadata:
78 name: foo2
79 namespace: bar
80 annotations:
81 internal.config.kubernetes.io/path: 'foo2_service.yaml'
82 config.kubernetes.io/path: 'foo2_service.yaml'
83 `, out.String())
84 }
85
86 func TestFileSetter_Filter_pattern(t *testing.T) {
87 in := bytes.NewBufferString(r)
88 out := &bytes.Buffer{}
89 err := Pipeline{
90 Inputs: []Reader{&ByteReader{Reader: in}},
91 Filters: []Filter{&FileSetter{
92 FilenamePattern: "%n_%s_%k.yaml",
93 }},
94 Outputs: []Writer{ByteWriter{Sort: true, Writer: out}},
95 }.Execute()
96 if !assert.NoError(t, err) {
97 return
98 }
99 assert.Equal(t, `apiVersion: v1
100 kind: Service
101 metadata:
102 name: foo1
103 annotations:
104 internal.config.kubernetes.io/path: 'foo1__service.yaml'
105 config.kubernetes.io/path: 'foo1__service.yaml'
106 ---
107 apiVersion: apps/v1
108 kind: Deployment
109 metadata:
110 name: foo1
111 namespace: bar
112 annotations:
113 internal.config.kubernetes.io/path: 'foo1_bar_deployment.yaml'
114 config.kubernetes.io/path: 'foo1_bar_deployment.yaml'
115 ---
116 apiVersion: apps/v1
117 kind: Deployment
118 metadata:
119 name: foo2
120 annotations:
121 internal.config.kubernetes.io/path: 'foo2__deployment.yaml'
122 config.kubernetes.io/path: 'foo2__deployment.yaml'
123 ---
124 apiVersion: v1
125 kind: Service
126 metadata:
127 name: foo2
128 namespace: bar
129 annotations:
130 internal.config.kubernetes.io/path: 'foo2_bar_service.yaml'
131 config.kubernetes.io/path: 'foo2_bar_service.yaml'
132 `, out.String())
133 }
134
135 func TestFileSetter_Filter_empty(t *testing.T) {
136 in := bytes.NewBufferString(r)
137 out := &bytes.Buffer{}
138 err := Pipeline{
139 Inputs: []Reader{&ByteReader{Reader: in}},
140 Filters: []Filter{&FileSetter{
141 FilenamePattern: "resource.yaml",
142 }},
143 Outputs: []Writer{ByteWriter{Writer: out}},
144 }.Execute()
145 if !assert.NoError(t, err) {
146 return
147 }
148 assert.Equal(t, `apiVersion: apps/v1
149 kind: Deployment
150 metadata:
151 name: foo1
152 namespace: bar
153 annotations:
154 internal.config.kubernetes.io/path: 'resource.yaml'
155 config.kubernetes.io/path: 'resource.yaml'
156 ---
157 apiVersion: apps/v1
158 kind: Deployment
159 metadata:
160 name: foo2
161 annotations:
162 internal.config.kubernetes.io/path: 'resource.yaml'
163 config.kubernetes.io/path: 'resource.yaml'
164 ---
165 apiVersion: v1
166 kind: Service
167 metadata:
168 name: foo2
169 namespace: bar
170 annotations:
171 internal.config.kubernetes.io/path: 'resource.yaml'
172 config.kubernetes.io/path: 'resource.yaml'
173 ---
174 apiVersion: v1
175 kind: Service
176 metadata:
177 name: foo1
178 annotations:
179 internal.config.kubernetes.io/path: 'resource.yaml'
180 config.kubernetes.io/path: 'resource.yaml'
181 `, out.String())
182 }
183
View as plain text