This repository has been archived by the owner on Nov 8, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 11
/
body.feature
126 lines (117 loc) · 2.92 KB
/
body.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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
@javascript
Feature: Body validation
Background:
Given I expect "body" to equal:
"""
{
"firstName": "John",
"lastName": "Locke"
}
"""
Scenario: Matching body
Given the actual "body" equals:
"""
{
"firstName": "John",
"lastName": "Locke"
}
"""
When Gavel validates the HTTP message
Then the actual HTTP message is valid
And the result field "body" equals:
"""
{
"valid": true,
"kind": "json",
"values": {
"expected": "{\n \"firstName\": \"John\",\n \"lastName\": \"Locke\"\n}",
"actual": "{\n \"firstName\": \"John\",\n \"lastName\": \"Locke\"\n}"
},
"errors": []
}
"""
Scenario: Non-matching body
Given the actual "body" equals:
"""
{
"firstName": "John"
}
"""
When Gavel validates the HTTP message
Then the actual HTTP message is NOT valid
And the result field "body" equals:
"""
{
"valid": false,
"kind": "json",
"values": {
"expected": "{\n \"firstName\": \"John\",\n \"lastName\": \"Locke\"\n}",
"actual": "{\n \"firstName\": \"John\"\n}"
},
"errors": [
{
"message": "At '/lastName' Missing required property: lastName",
"location": {
"pointer": "/lastName",
"property": ["lastName"]
}
}
]
}
"""
Scenario: Other body type
Comparing JSON to plain text produces a validation error
and returns "null" kind, indicating no validation has happened.
Given the actual "body" equals:
"""
Textual body
"""
When Gavel validates the HTTP message
Then the actual HTTP message is NOT valid
And the result field "body" equals:
"""
{
"valid": false,
"kind": null,
"values": {
"expected": "{\n \"firstName\": \"John\",\n \"lastName\": \"Locke\"\n}",
"actual": "Textual body"
},
"errors": [
{
"message": "Can't validate actual media type 'text/plain' against the expected media type 'application/json'."
}
]
}
"""
Scenario: Text vs JSON
Comparing text to JSON produces a validation error
and "kind: null", meaning that no validation has happened.
Given I expect "body" to equal:
"""
Textual body
"""
And the actual "body" equals:
"""
{
"userId": 1
}
"""
When Gavel validates the HTTP message
Then the actual HTTP message is NOT valid
And the result field "body" equals:
"""
{
"valid": false,
"kind": null,
"values": {
"expected": "Textual body",
"actual": "{\n \"userId\": 1\n}"
},
"errors": [
{
"message": "Can't validate actual media type 'application/json' against the expected media type 'text/plain'."
}
]
}
"""