6
6
"strings"
7
7
"testing"
8
8
9
+ "github.com/stretchr/testify/assert"
9
10
"github.com/zalando/skipper/eskip"
10
11
"github.com/zalando/skipper/filters"
11
12
"github.com/zalando/skipper/filters/filtertest"
@@ -85,12 +86,7 @@ func testHeaders(t *testing.T, got, expected http.Header) {
85
86
delete (got , n )
86
87
}
87
88
}
88
-
89
- if ! compareHeaders (got , expected ) {
90
- printHeader (t , expected , "invalid header" , "expected" )
91
- printHeader (t , got , "invalid header" , "got" )
92
- t .Error ("invalid header" )
93
- }
89
+ assert .Equal (t , expected , got )
94
90
}
95
91
96
92
func TestHeader (t * testing.T ) {
@@ -132,10 +128,11 @@ func TestHeader(t *testing.T) {
132
128
requestHeader : http.Header {"X-Test-Name" : []string {"value0" , "value1" }},
133
129
expectedHeader : http.Header {"X-Test-Request-Name" : []string {"value" }},
134
130
}, {
135
- msg : "set outgoing host on set" ,
136
- args : []interface {}{"Host" , "www.example.org" },
137
- valid : true ,
138
- host : "www.example.org" ,
131
+ msg : "set outgoing host on set" ,
132
+ args : []interface {}{"Host" , "www.example.org" },
133
+ valid : true ,
134
+ host : "www.example.org" ,
135
+ expectedHeader : http.Header {},
139
136
}, {
140
137
msg : "set request header from path params" ,
141
138
args : []interface {}{"X-Test-Name" , "Mit ${was} zu ${wo}" },
@@ -161,10 +158,11 @@ func TestHeader(t *testing.T) {
161
158
requestHeader : http.Header {"X-Test-Name" : []string {"value0" , "value1" }},
162
159
expectedHeader : http.Header {"X-Test-Request-Name" : []string {"value0" , "value1" , "value" }},
163
160
}, {
164
- msg : "append outgoing host on set" ,
165
- args : []interface {}{"Host" , "www.example.org" },
166
- valid : true ,
167
- host : "www.example.org" ,
161
+ msg : "append outgoing host on set" ,
162
+ args : []interface {}{"Host" , "www.example.org" },
163
+ valid : true ,
164
+ host : "www.example.org" ,
165
+ expectedHeader : http.Header {},
168
166
}, {
169
167
msg : "append request header from path params" ,
170
168
args : []interface {}{"X-Test-Name" , "a ${foo}ter" },
@@ -186,19 +184,46 @@ func TestHeader(t *testing.T) {
186
184
expectedHeader : http.Header {"X-Test-Request-Name" : []string {"Value" }},
187
185
}},
188
186
"dropRequestHeader" : {{
189
- msg : "drop request header when none" ,
190
- args : []interface {}{"X-Test-Name" },
191
- valid : true ,
187
+ msg : "drop request header when none" ,
188
+ args : []interface {}{"X-Test-Name" },
189
+ valid : true ,
190
+ expectedHeader : http.Header {},
192
191
}, {
193
- msg : "drop request header when exists" ,
194
- args : []interface {}{"X-Test-Name" },
195
- valid : true ,
196
- requestHeader : http.Header {"X-Test-Name" : []string {"value0" , "value1" }},
192
+ msg : "drop request header when exists" ,
193
+ args : []interface {}{"X-Test-Name" },
194
+ valid : true ,
195
+ requestHeader : http.Header {"X-Test-Name" : []string {"value0" , "value1" }},
196
+ expectedHeader : http.Header {},
197
197
}, {
198
- msg : "name parameter is case-insensitive" ,
199
- args : []interface {}{"x-test-name" },
200
- valid : true ,
201
- requestHeader : http.Header {"X-Test-Name" : []string {"value0" , "value1" }},
198
+ msg : "drop request header when does not exist" ,
199
+ args : []interface {}{"X-Test-Does-Not-Exist" },
200
+ valid : true ,
201
+ requestHeader : http.Header {"X-Test-Name" : []string {"value0" , "value1" }},
202
+ expectedHeader : http.Header {"X-Test-Request-Name" : []string {"value0" , "value1" }},
203
+ }, {
204
+ msg : "name parameter is case-insensitive" ,
205
+ args : []interface {}{"x-test-name" },
206
+ valid : true ,
207
+ requestHeader : http.Header {"X-Test-Name" : []string {"value0" , "value1" }},
208
+ expectedHeader : http.Header {},
209
+ }, {
210
+ msg : "drop matching value" ,
211
+ args : []interface {}{"X-Test-Name" , "bar" },
212
+ valid : true ,
213
+ requestHeader : http.Header {"X-Test-Name" : []string {"foo" , "bar" , "baz" }, "X-Test-Name2" : []string {"qux" }},
214
+ expectedHeader : http.Header {"X-Test-Request-Name" : []string {"foo" , "baz" }, "X-Test-Request-Name2" : []string {"qux" }},
215
+ }, {
216
+ msg : "ignore non-matching" ,
217
+ args : []interface {}{"X-Test-Name" , "qux" },
218
+ valid : true ,
219
+ requestHeader : http.Header {"X-Test-Name" : []string {"foo" , "bar" , "baz" }, "X-Test-Name2" : []string {"qux" }},
220
+ expectedHeader : http.Header {"X-Test-Request-Name" : []string {"foo" , "bar" , "baz" }, "X-Test-Request-Name2" : []string {"qux" }},
221
+ }, {
222
+ msg : "drop matching value name parameter is case-insensitive" ,
223
+ args : []interface {}{"x-test-name" , "bar" },
224
+ valid : true ,
225
+ requestHeader : http.Header {"X-Test-Name" : []string {"foo" , "bar" , "baz" }, "X-Test-Name2" : []string {"qux" }},
226
+ expectedHeader : http.Header {"X-Test-Request-Name" : []string {"foo" , "baz" }, "X-Test-Request-Name2" : []string {"qux" }},
202
227
}},
203
228
"setResponseHeader" : {{
204
229
msg : "set response header when none" ,
@@ -220,9 +245,10 @@ func TestHeader(t *testing.T) {
220
245
valid : true ,
221
246
expectedHeader : http.Header {"X-Test-Name" : []string {"a small barter" }},
222
247
}, {
223
- msg : "set response header from path params when missing" ,
224
- args : []interface {}{"X-Test-Name" , "a ${foo}ter" },
225
- valid : true ,
248
+ msg : "set response header from path params when missing" ,
249
+ args : []interface {}{"X-Test-Name" , "a ${foo}ter" },
250
+ valid : true ,
251
+ expectedHeader : http.Header {},
226
252
}, {
227
253
msg : "name parameter is case-insensitive" ,
228
254
args : []interface {}{"x-test-name" , "Value" },
@@ -261,19 +287,46 @@ func TestHeader(t *testing.T) {
261
287
expectedHeader : http.Header {"X-Test-Name" : []string {"Value" }},
262
288
}},
263
289
"dropResponseHeader" : {{
264
- msg : "drop response header when none" ,
265
- args : []interface {}{"X-Test-Name" },
266
- valid : true ,
290
+ msg : "drop response header when none" ,
291
+ args : []interface {}{"X-Test-Name" },
292
+ valid : true ,
293
+ expectedHeader : http.Header {},
267
294
}, {
268
295
msg : "drop response header when exists" ,
269
296
args : []interface {}{"X-Test-Name" },
270
297
valid : true ,
271
298
responseHeader : http.Header {"X-Test-Name" : []string {"value0" , "value1" }},
299
+ expectedHeader : http.Header {},
300
+ }, {
301
+ msg : "drop response header when does not exist" ,
302
+ args : []interface {}{"X-Test-Does-Not-Exist" },
303
+ valid : true ,
304
+ responseHeader : http.Header {"X-Test-Name" : []string {"value0" , "value1" }},
305
+ expectedHeader : http.Header {"X-Test-Name" : []string {"value0" , "value1" }},
272
306
}, {
273
307
msg : "name parameter is case-insensitive" ,
274
308
args : []interface {}{"x-test-name" },
275
309
valid : true ,
276
310
responseHeader : http.Header {"X-Test-Name" : []string {"value0" , "value1" }},
311
+ expectedHeader : http.Header {},
312
+ }, {
313
+ msg : "drop matching value" ,
314
+ args : []interface {}{"X-Test-Name" , "bar" },
315
+ valid : true ,
316
+ responseHeader : http.Header {"X-Test-Name" : []string {"foo" , "bar" , "baz" }, "X-Test-Name2" : []string {"qux" }},
317
+ expectedHeader : http.Header {"X-Test-Name" : []string {"foo" , "baz" }, "X-Test-Name2" : []string {"qux" }},
318
+ }, {
319
+ msg : "ignore non-matching" ,
320
+ args : []interface {}{"X-Test-Name" , "qux" },
321
+ valid : true ,
322
+ responseHeader : http.Header {"X-Test-Name" : []string {"foo" , "bar" , "baz" }, "X-Test-Name2" : []string {"qux" }},
323
+ expectedHeader : http.Header {"X-Test-Name" : []string {"foo" , "bar" , "baz" }, "X-Test-Name2" : []string {"qux" }},
324
+ }, {
325
+ msg : "drop matching value name parameter is case-insensitive" ,
326
+ args : []interface {}{"x-test-name" , "bar" },
327
+ valid : true ,
328
+ responseHeader : http.Header {"X-Test-Name" : []string {"foo" , "bar" , "baz" }, "X-Test-Name2" : []string {"qux" }},
329
+ expectedHeader : http.Header {"X-Test-Name" : []string {"foo" , "baz" }, "X-Test-Name2" : []string {"qux" }},
277
330
}},
278
331
"setContextRequestHeader" : {{
279
332
msg : "set request header from context" ,
@@ -282,11 +335,12 @@ func TestHeader(t *testing.T) {
282
335
valid : true ,
283
336
expectedHeader : http.Header {"X-Test-Request-Foo" : []string {"bar" }},
284
337
}, {
285
- msg : "set request host header from context" ,
286
- args : []interface {}{"Host" , "foo" },
287
- context : map [string ]interface {}{"foo" : "www.example.org" },
288
- valid : true ,
289
- host : "www.example.org" ,
338
+ msg : "set request host header from context" ,
339
+ args : []interface {}{"Host" , "foo" },
340
+ context : map [string ]interface {}{"foo" : "www.example.org" },
341
+ valid : true ,
342
+ host : "www.example.org" ,
343
+ expectedHeader : http.Header {},
290
344
}, {
291
345
msg : "name parameter is case-insensitive" ,
292
346
args : []interface {}{"x-test-foo" , "foo" },
@@ -302,11 +356,12 @@ func TestHeader(t *testing.T) {
302
356
requestHeader : http.Header {"X-Test-Foo" : []string {"bar" }},
303
357
expectedHeader : http.Header {"X-Test-Request-Foo" : []string {"bar" , "baz" }},
304
358
}, {
305
- msg : "append request host header from context" ,
306
- args : []interface {}{"Host" , "foo" },
307
- context : map [string ]interface {}{"foo" : "www.example.org" },
308
- valid : true ,
309
- host : "www.example.org" ,
359
+ msg : "append request host header from context" ,
360
+ args : []interface {}{"Host" , "foo" },
361
+ context : map [string ]interface {}{"foo" : "www.example.org" },
362
+ valid : true ,
363
+ host : "www.example.org" ,
364
+ expectedHeader : http.Header {},
310
365
}, {
311
366
msg : "name parameter is case-insensitive" ,
312
367
args : []interface {}{"x-test-foo" , "foo" },
@@ -356,9 +411,10 @@ func TestHeader(t *testing.T) {
356
411
msg : "invalid target header name" ,
357
412
args : []interface {}{"X-Test-Foo" , 42 },
358
413
}, {
359
- msg : "no header to copy" ,
360
- args : []interface {}{"X-Test-Foo" , "X-Test-Bar" },
361
- valid : true ,
414
+ msg : "no header to copy" ,
415
+ args : []interface {}{"X-Test-Foo" , "X-Test-Bar" },
416
+ valid : true ,
417
+ expectedHeader : http.Header {},
362
418
}, {
363
419
msg : "copy header" ,
364
420
args : []interface {}{"X-Test-Foo" , "X-Test-Bar" },
@@ -414,9 +470,10 @@ func TestHeader(t *testing.T) {
414
470
msg : "invalid target header name" ,
415
471
args : []interface {}{"X-Test-Foo" , 42 },
416
472
}, {
417
- msg : "no header to copy" ,
418
- args : []interface {}{"X-Test-Foo" , "X-Test-Bar" },
419
- valid : true ,
473
+ msg : "no header to copy" ,
474
+ args : []interface {}{"X-Test-Foo" , "X-Test-Bar" },
475
+ valid : true ,
476
+ expectedHeader : http.Header {},
420
477
}, {
421
478
msg : "copy header" ,
422
479
args : []interface {}{"X-Test-Foo" , "X-Test-Bar" },
0 commit comments