Skip to content

Commit 8cd4cb4

Browse files
committed
fix(diff): swagger diff is not working for certain cases
Signed-off-by: Suraj Chafle <suraj.chafle@crowdstrike.com>
1 parent 7434253 commit 8cd4cb4

File tree

4 files changed

+402
-0
lines changed

4 files changed

+402
-0
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
BREAKING CHANGES:
2+
=================
3+
/a/:get - Request - FormData.filter2<string> - Added required param
4+
/a/:get - Request - Header.X-Forwarded-For<array[string]> - Changed collection format
5+
/a/:get - Request - Query.limit<integer.double> - Changed optional param to required
6+
/a/:get - Request - Query.limit<integer.double> - Changed type - integer.float -> integer.double
7+
compatibility test FAILED: 4 breaking changes detected

diff/fixtures/reqparam.diff.txt

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
NON-BREAKING CHANGES:
2+
=====================
3+
/a/:get - Request - FormData.filter<string> - Deleted required param
4+
/a/:get - Request - FormData.format2<string> - Added optional param
5+
/a/:get - Request - FormData.format<string> - Deleted optional param
6+
/a/:get - Request - Query.sort<string> - Changed required param to optional
7+
/a/{id}:get - Request - FormData.widenedParam<integer.int32> - Example value is added
8+
/a/{id}:get - Request - Path.id<string> - Example value is changed
9+
/a/{id}:get - Request - Query.flavour<string> - Example value is removed
10+
11+
NON-BREAKING CHANGES WITH WARNING:
12+
==================================
13+
/a/{id}:post - Request - FormData.address<string> - Default value is changed
14+
/a/{id}:post - Request - FormData.firstname<string> - Default value is removed
15+
/a/{id}:post - Request - FormData.lastname<string> - Default value is added
16+
17+
BREAKING CHANGES:
18+
=================
19+
/a/:get - Request - FormData.filter2<string> - Added required param
20+
/a/:get - Request - Header.X-Forwarded-For<array[string]> - Changed collection format
21+
/a/:get - Request - Query.limit<integer.double> - Changed optional param to required
22+
/a/:get - Request - Query.limit<integer.double> - Changed type - integer.float -> integer.double
23+
compatibility test FAILED: 4 breaking changes detected

diff/fixtures/reqparam.v1.json

Lines changed: 186 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,186 @@
1+
{
2+
"swagger": "2.0",
3+
"info": {
4+
"title": "Swagger Fixture",
5+
"version": "1.0"
6+
},
7+
"paths": {
8+
"/a/": {
9+
"get": {
10+
"parameters": [
11+
{
12+
"name": "limit",
13+
"in": "query",
14+
"required": false,
15+
"type": "integer",
16+
"format": "float"
17+
},
18+
{
19+
"name": "sort",
20+
"in": "query",
21+
"required": true,
22+
"type": "string"
23+
},
24+
{
25+
"name": "filter",
26+
"in": "formData",
27+
"required": true,
28+
"type": "string"
29+
},
30+
{
31+
"name": "format",
32+
"in": "formData",
33+
"required": false,
34+
"type": "string"
35+
},
36+
{
37+
"name": "X-Forwarded-For",
38+
"in": "header",
39+
"required": true,
40+
"type": "array",
41+
"collectionFormat": "csv",
42+
"items": {
43+
"type": "string"
44+
}
45+
}
46+
],
47+
"responses": {
48+
"200": {
49+
"description": "200 response",
50+
"schema": {
51+
"type": "array",
52+
"items": { "$ref": "#/definitions/A1" }
53+
}
54+
}
55+
}
56+
}
57+
},
58+
"/a/{id}": {
59+
"get": {
60+
"parameters": [
61+
{
62+
"name": "flavour",
63+
"required": false,
64+
"in": "query",
65+
"type": "string",
66+
"example": "salty"
67+
},
68+
{
69+
"name": "widenedParam",
70+
"in": "formData",
71+
"type": "integer",
72+
"format":"int32"
73+
},
74+
{
75+
"name": "id",
76+
"in": "path",
77+
"type": "string",
78+
"required": true,
79+
"example": "123"
80+
}
81+
],
82+
"responses": {
83+
"200": {
84+
"description": "200 response",
85+
"schema": {
86+
"type": "array",
87+
"items": { "$ref": "#/definitions/A1" }
88+
},
89+
"headers":{
90+
"optResponseHeader":{
91+
"schema":{ "type":"integer"}
92+
}
93+
}
94+
95+
}
96+
}
97+
},
98+
"post": {
99+
"parameters": [
100+
{
101+
"name": "firstname",
102+
"in": "formData",
103+
"type":"string",
104+
"required":true,
105+
"default": "fnu"
106+
},
107+
{
108+
"name": "lastname",
109+
"in": "formData",
110+
"type":"string",
111+
"required":false
112+
},
113+
{
114+
"name": "address",
115+
"in": "formData",
116+
"type":"string",
117+
"required":false,
118+
"default": "unknown"
119+
},
120+
{
121+
"name": "",
122+
"in": "body",
123+
"schema": { "$ref": "#/definitions/A2" }
124+
}
125+
],
126+
"responses": {
127+
"200": {
128+
"description": "200 response",
129+
"schema": { "$ref": "#/definitions/A3" }
130+
}
131+
}
132+
}
133+
},
134+
"/b/": {
135+
"post": {
136+
"parameters": [
137+
{
138+
"name": "",
139+
"in": "body",
140+
"schema": { "$ref": "#/definitions/A2" }
141+
}
142+
],
143+
"responses": {
144+
"200": {
145+
"description": "200 response",
146+
"schema": { "$ref": "#/definitions/A3" }
147+
}
148+
}
149+
}
150+
}
151+
},
152+
"definitions": {
153+
"A1": {
154+
"type": "object",
155+
"properties": {
156+
"id": { "type": "integer" },
157+
"name": { "type": "string" }
158+
}
159+
},
160+
"A2": {
161+
"type": "object",
162+
"required": [ "name", "description" ],
163+
"properties": {
164+
"name": { "type": "string" },
165+
"description": { "type": "string" }
166+
}
167+
},
168+
"A3": {
169+
"type": "object",
170+
"properties": {
171+
"id": { "type": "integer" },
172+
"name": { "type": "string" },
173+
"otherDeletedName":{"type":"string","deprecated":true},
174+
"description": { "type": "string" },
175+
"letters": {
176+
"type": "array",
177+
"items": { "type": "string" }
178+
},
179+
"attributes": {
180+
"type": "object",
181+
"additionalProperties": { "type": "string" }
182+
}
183+
}
184+
}
185+
}
186+
}

0 commit comments

Comments
 (0)