forked from karatelabs/karate
-
Notifications
You must be signed in to change notification settings - Fork 0
/
content-type.feature
99 lines (90 loc) · 3.57 KB
/
content-type.feature
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
Feature: exotic content-type situations
Background:
* url demoBaseUrl
* configure lowerCaseResponseHeaders = true
Scenario: json post with charset
Given path 'search', 'headers'
And header Content-Type = 'application/json; charset=utf-8'
And request { foo: 'bar' }
When method post
Then status 200
And match header content-type contains 'application/json'
And match header content-type contains 'charset=UTF-8'
And def response = karate.lowerCase(response)
And def temp = response['content-type'][0]
And match temp contains 'application/json'
And match temp contains 'charset=utf-8'
Scenario: form post with charset
Given path 'search', 'headers'
And header Content-Type = 'application/x-www-form-urlencoded; charset=utf-8'
And form field foo = 'bar'
When method post
Then status 200
And def response = karate.lowerCase(response)
And def temp = response['content-type'][0]
And match temp contains 'application/x-www-form-urlencoded'
Scenario: json post with with charset and version
Given path 'search', 'headers'
And header Content-Type = 'application/json; charset=utf-8; version=1.2.3'
And request { foo: 'bar' }
When method post
Then status 200
And def response = karate.lowerCase(response)
And def temp = response['content-type'][0]
And match temp contains 'application/json;'
And match temp contains 'charset=utf-8'
And match temp contains 'version=1.2.3'
@mock-servlet-todo
Scenario: json post with with unusual content-type and parameter
Given path 'search', 'headers'
And header Content-Type = 'application/vnd.app.test+json;ton-version=1'
And request { foo: 'bar' }
When method post
Then status 200
And def response = karate.lowerCase(response)
And def temp = response['content-type'][0]
And match temp contains 'application/vnd.app.test+json;'
And match temp contains 'charset=utf-8'
And match temp contains 'ton-version=1'
@mock-servlet-todo
Scenario: json post with with unusual content-type and configure-headers
* configure headers = function(){ return {'Content-Type': 'application/vnd.app.test+json;ton-version=1'} }
Given path 'search', 'headers'
And request { foo: 'bar' }
When method post
Then status 200
And def response = karate.lowerCase(response)
And def temp = response['content-type'][0]
And match temp contains 'application/vnd.app.test+json;'
And match temp contains 'charset=utf-8'
And match temp contains 'ton-version=1'
@apache @mock-servlet-todo
Scenario: empty string as content-type
Given path 'search', 'headers'
And header Content-Type = ''
And request { foo: 'bar' }
When method post
Then status 200
And def temp = response['content-type'][0]
And match temp == ''
Scenario: json post with header but NO charset
Given path 'search', 'headers'
And configure charset = null
And header Content-Type = 'application/json'
And request { foo: 'bar' }
When method post
Then status 200
And def response = karate.lowerCase(response)
And def temp = response['content-type'][0]
And match temp contains 'application/json'
And match temp !contains 'charset=utf-8'
Scenario: json post with default header but NO charset
Given path 'search', 'headers'
And configure charset = null
And request { foo: 'bar' }
When method post
Then status 200
And def response = karate.lowerCase(response)
And def temp = response['content-type'][0]
And match temp contains 'application/json'
And match temp !contains 'charset=utf-8'