Skip to content

Commit 99f5b3e

Browse files
chore: Address test not testing, according to parser spec behavior
1 parent 2d42f0c commit 99f5b3e

File tree

7 files changed

+120
-35
lines changed

7 files changed

+120
-35
lines changed

modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/processors/ParameterProcessorTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import io.swagger.v3.parser.ResolverCache;
1515
import io.swagger.v3.parser.models.RefFormat;
1616
import mockit.*;
17+
import org.testng.annotations.Ignore;
1718
import org.testng.annotations.Test;
1819

1920

@@ -109,10 +110,16 @@ public void testProcessParameters_RefToHeader() throws Exception {
109110

110111
final String ref = "#/components/parameters/foo";
111112
Parameter refParameter = new Parameter().$ref(ref);
113+
refParameter.setName("foo");
114+
refParameter.setIn("header");
112115

113116
expectLoadingRefFromCache(ref, RefFormat.INTERNAL, resolvedHeaderParam);
114117
new Expectations() {
115118
{
119+
resolvedHeaderParam.getName();
120+
result = "foo";
121+
resolvedHeaderParam.getIn();
122+
result = "header";
116123
resolvedHeaderParam.getSchema();
117124
result = null;
118125
resolvedHeaderParam.getContent();

modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/FileReferenceTest.java

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,18 @@
33

44

55
import io.swagger.v3.core.util.Yaml;
6+
import io.swagger.v3.oas.models.Components;
67
import io.swagger.v3.oas.models.OpenAPI;
78
import io.swagger.v3.oas.models.Operation;
89
import io.swagger.v3.oas.models.PathItem;
910
import io.swagger.v3.oas.models.media.ArraySchema;
1011
import io.swagger.v3.oas.models.media.ComposedSchema;
1112
import io.swagger.v3.oas.models.media.Schema;
13+
import io.swagger.v3.oas.models.parameters.Parameter;
1214
import io.swagger.v3.parser.OpenAPIV3Parser;
1315
import io.swagger.v3.parser.core.models.ParseOptions;
1416
import io.swagger.v3.parser.core.models.SwaggerParseResult;
17+
import io.swagger.v3.parser.reference.ReferenceUtils;
1518
import org.testng.annotations.Test;
1619

1720
import static org.testng.Assert.*;
@@ -226,28 +229,35 @@ public void testIssue421() {
226229
assertNotNull(swagger.getPaths().get("/pet/{petId}"));
227230
assertNotNull(swagger.getPaths().get("/pet/{petId}").getGet());
228231
assertNotNull(swagger.getPaths().get("/pet/{petId}").getGet().getParameters());
229-
assertTrue(swagger.getPaths().get("/pet/{petId}").getGet().getParameters().size() == 1);
230-
assertTrue(swagger.getPaths().get("/pet/{petId}").getGet().getParameters().get(0).getName().equals("petId"));
232+
assertEquals(swagger.getPaths().get("/pet/{petId}").getGet().getParameters().size(), 1);
233+
234+
Parameter parameter = swagger.getPaths().get("/pet/{petId}").getGet().getParameters().get(0);
235+
String refName = ReferenceUtils.getRefName(parameter.get$ref());
236+
Components components = result.getOpenAPI().getComponents();
237+
Parameter refParam = components.getParameters().get(refName);
238+
239+
assertEquals(refParam.getName(), "petId");
240+
231241
assertTrue(swagger.getComponents().getSchemas().get("Pet") instanceof Schema);
232-
assertTrue(swagger.getComponents().getSchemas().get("Pet").getProperties().size() == 6);
242+
assertEquals(swagger.getComponents().getSchemas().get("Pet").getProperties().size(), 6);
233243

234244
assertNotNull(swagger.getPaths().get("/pet/{petId}").getPost());
235245
assertNotNull(swagger.getPaths().get("/pet/{petId}").getPost().getParameters());
236-
assertTrue(swagger.getPaths().get("/pet/{petId}").getPost().getParameters().size() == 1);
237-
assertTrue(swagger.getPaths().get("/pet/{petId}").getPost().getRequestBody() != null);
238-
assertTrue(swagger.getPaths().get("/pet/{petId}").getPost().getRequestBody().get$ref() != null);
246+
assertEquals(swagger.getPaths().get("/pet/{petId}").getPost().getParameters().size(), 1);
247+
assertNotNull(swagger.getPaths().get("/pet/{petId}").getPost().getRequestBody());
248+
assertNotNull(swagger.getPaths().get("/pet/{petId}").getPost().getRequestBody().get$ref());
239249
assertEquals(swagger.getPaths().get("/pet/{petId}").getPost().getRequestBody().get$ref(),"#/components/requestBodies/requestBody");
240-
assertTrue(swagger.getPaths().get("/pet/{petId}").getPost().getRequestBody().get$ref().equals("#/components/requestBodies/requestBody"));
250+
assertEquals(swagger.getPaths().get("/pet/{petId}").getPost().getRequestBody().get$ref(), "#/components/requestBodies/requestBody");
241251

242252
assertNotNull(swagger.getPaths().get("/store/order"));
243253
assertNotNull(swagger.getPaths().get("/store/order").getPost());
244254
assertNotNull(swagger.getPaths().get("/store/order").getPost().getRequestBody());
245255
assertNotNull(swagger.getPaths().get("/store/order").getPost().getRequestBody().getContent().get("application/json").getSchema());
246-
assertTrue(swagger.getPaths().get("/store/order").getPost().getRequestBody().getContent().get("application/json").getSchema().get$ref() != null);
247-
assertTrue(swagger.getPaths().get("/store/order").getPost().getRequestBody().getContent().get("application/json").getSchema().get$ref().equals("#/components/schemas/Order"));
256+
assertNotNull(swagger.getPaths().get("/store/order").getPost().getRequestBody().getContent().get("application/json").getSchema().get$ref());
257+
assertEquals(swagger.getPaths().get("/store/order").getPost().getRequestBody().getContent().get("application/json").getSchema().get$ref(), "#/components/schemas/Order");
248258

249259
assertTrue(swagger.getComponents().getSchemas().get("Order") instanceof Schema);
250-
assertTrue(swagger.getComponents().getSchemas().get("Order").getProperties().size() == 6);
260+
assertEquals(swagger.getComponents().getSchemas().get("Order").getProperties().size(), 6);
251261
}
252262

253263
@Test

modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/NetworkReferenceTest.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.swagger.v3.parser.test;
22

33

4+
import io.swagger.v3.oas.models.Components;
45
import io.swagger.v3.oas.models.OpenAPI;
56
import io.swagger.v3.oas.models.PathItem;
67
import io.swagger.v3.oas.models.media.Schema;
@@ -11,6 +12,7 @@
1112
import io.swagger.v3.parser.core.models.AuthorizationValue;
1213
import io.swagger.v3.parser.core.models.ParseOptions;
1314
import io.swagger.v3.parser.core.models.SwaggerParseResult;
15+
import io.swagger.v3.parser.reference.ReferenceUtils;
1416
import io.swagger.v3.parser.urlresolver.PermittedUrlsChecker;
1517
import io.swagger.v3.parser.util.RemoteUrl;
1618
import mockit.Expectations;
@@ -288,8 +290,12 @@ public void testIssue411() throws Exception {
288290
assertNotNull(swagger.getComponents().getSchemas().get("Success"));
289291

290292
Parameter param = swagger.getPaths().get("/stuff").getGet().getParameters().get(0);
291-
assertEquals(param.getIn(), "query");
292-
assertEquals(param.getName(), "skip");
293+
String refName = ReferenceUtils.getRefName(param.get$ref());
294+
Components components = result.getOpenAPI().getComponents();
295+
Parameter refParam = components.getParameters().get(refName);
296+
297+
assertEquals(refParam.getIn(), "query");
298+
assertEquals(refParam.getName(), "skip");
293299

294300
ApiResponse response = swagger.getPaths().get("/stuff").getGet().getResponses().get("200");
295301
assertNotNull(response);

modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/OpenAPIResolverTest.java

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import io.swagger.v3.parser.reference.DereferencerContext;
4040
import io.swagger.v3.parser.reference.DereferencersFactory;
4141
import io.swagger.v3.parser.reference.OpenAPIDereferencer;
42+
import io.swagger.v3.parser.reference.ReferenceUtils;
4243
import io.swagger.v3.parser.util.OpenAPIDeserializer;
4344
import io.swagger.v3.parser.util.ResolverFully;
4445
import org.apache.commons.io.FileUtils;
@@ -563,7 +564,11 @@ public void pathsResolver() throws Exception {
563564
assertEquals(id.get$ref(),"#/components/schemas/Pet");
564565

565566
//internal parameter url
566-
assertEquals(openAPI.getPaths().get("/store/inventory").getGet().getParameters().get(0), openAPI.getComponents().getParameters().get("limitParam"));
567+
Parameter inventoryParam = openAPI.getPaths().get("/store/inventory").getGet().getParameters().get(0);
568+
String refName = ReferenceUtils.getRefName(inventoryParam.get$ref());
569+
assertEquals(refName, "limitParam");
570+
Components components = openAPI.getComponents();
571+
assertEquals(components.getParameters().get(refName).getName(), "limit");
567572
}
568573

569574
@Test
@@ -1232,7 +1237,9 @@ public void testOperationParameterRemoteRefs() {
12321237
final List<Parameter> params = swagger.getPaths().get("/fun").getGet().getParameters();
12331238
assertEquals(params.size(), 1);
12341239
final Parameter param = params.get(0);
1235-
assertEquals(param.getName(), "skip");
1240+
String refName = ReferenceUtils.getRefName(param.get$ref());
1241+
Components components = swagger.getComponents();
1242+
assertEquals(components.getParameters().get(refName).getName(), "skip");
12361243
}
12371244

12381245

@@ -1257,7 +1264,9 @@ public void testOperationBodyParameterRemoteRefs() {
12571264
final List<Parameter> params = swagger.getPaths().get("/fun").getGet().getParameters();
12581265
assertEquals(params.size(), 1);
12591266
final Parameter param = params.get(0);
1260-
assertEquals(param.getName(), "skip");
1267+
String refName = ReferenceUtils.getRefName(param.get$ref());
1268+
Components components = swagger.getComponents();
1269+
assertEquals(components.getParameters().get(refName).getName(), "skip");
12611270
}
12621271

12631272
private void testResponseRemoteRefs(String remoteRef) {
@@ -1392,8 +1401,10 @@ public void testIssue291() {
13921401

13931402

13941403
Parameter param = resolved.getPaths().get("/test").getGet().getParameters().get(0);
1395-
QueryParameter qp = (QueryParameter) param;
1396-
//assertEquals(qp.getCollectionFormat(), "csv");
1404+
String refName = ReferenceUtils.getRefName(param.get$ref());
1405+
Components components = resolved.getComponents();
1406+
QueryParameter refParameter = (QueryParameter) components.getParameters().get(refName);
1407+
assertEquals(refParameter.getName(), "test");
13971408
}
13981409

13991410
@Test

modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/OpenAPIV3ParserTest.java

Lines changed: 43 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import io.swagger.v3.parser.core.models.AuthorizationValue;
1919
import io.swagger.v3.parser.core.models.ParseOptions;
2020
import io.swagger.v3.parser.core.models.SwaggerParseResult;
21+
import io.swagger.v3.parser.reference.ReferenceUtils;
2122
import io.swagger.v3.parser.util.SchemaTypeUtil;
2223
import org.apache.commons.io.FileUtils;
2324
import org.hamcrest.CoreMatchers;
@@ -184,7 +185,13 @@ public void testParametersAndResponsesAsNumbers() {
184185

185186
Assert.assertNotNull(result);
186187
Assert.assertNotNull(result.getOpenAPI());
187-
Assert.assertEquals(result.getOpenAPI().getPaths().get("/api/deal/{dealId}").getGet().getParameters().get(0).getName(), "dealId");
188+
189+
Parameter param = result.getOpenAPI().getPaths().get("/api/deal/{dealId}").getGet().getParameters().get(0);
190+
String refName = ReferenceUtils.getRefName(param.get$ref());
191+
Components components = result.getOpenAPI().getComponents();
192+
Parameter refParameter = components.getParameters().get(refName);
193+
Assert.assertEquals(refParameter.getName(), "dealId");
194+
188195
Assert.assertEquals(result.getOpenAPI().getPaths().get("/api/deal/{dealId}").getGet().getResponses().get("200").getDescription(), "Success");
189196
}
190197

@@ -1334,14 +1341,22 @@ public void testRemotePathItemIssue1103() {
13341341
OpenAPI result = new OpenAPIV3Parser().read("issue-1103/remote-pathItem-swagger.yaml");
13351342
Assert.assertNotNull(result);
13361343
Assert.assertNotNull(result.getPaths().get("/Translation/{lang}"));
1337-
Assert.assertEquals(result.getPaths().get("/Translation/{lang}").getPut().getParameters().get(0).getName(), "lang");
1344+
Parameter param = result.getPaths().get("/Translation/{lang}").getPut().getParameters().get(0);
1345+
String refName = ReferenceUtils.getRefName(param.get$ref());
1346+
Components components = result.getComponents();
1347+
Parameter refParameter = components.getParameters().get(refName);
1348+
Assert.assertEquals(refParameter.getName(), "lang");
13381349
}
13391350

13401351
@Test
13411352
public void testRemoteParameterIssue1103() {
13421353
OpenAPI result = new OpenAPIV3Parser().read("issue-1103/remote-parameter-swagger.yaml");
13431354
Assert.assertNotNull(result);
1344-
Assert.assertEquals(result.getPaths().get("/Translation/{lang}").getPut().getParameters().get(0).getName(), "lang");
1355+
Parameter param = result.getPaths().get("/Translation/{lang}").getPut().getParameters().get(0);
1356+
String refName = ReferenceUtils.getRefName(param.get$ref());
1357+
Components components = result.getComponents();
1358+
Parameter refParameter = components.getParameters().get(refName);
1359+
Assert.assertEquals(refParameter.getName(), "lang");
13451360
}
13461361

13471362
@Test
@@ -1974,7 +1989,7 @@ private OpenAPI doRelativeFileTest(String location) {
19741989
options.setResolveResponses(true);
19751990
SwaggerParseResult readResult = parser.readLocation(location, null, options);
19761991

1977-
if (readResult.getMessages().size() > 0) {
1992+
if (!readResult.getMessages().isEmpty()) {
19781993
Json.prettyPrint(readResult.getMessages());
19791994
}
19801995
final OpenAPI openAPI = readResult.getOpenAPI();
@@ -1986,10 +2001,16 @@ private OpenAPI doRelativeFileTest(String location) {
19862001

19872002
final Operation operation = path.getGet();
19882003
final List<Parameter> operationParams = operation.getParameters();
1989-
assertParamDetails(operationParams, 0, QueryParameter.class, "param1", "query");
1990-
assertParamDetails(operationParams, 1, HeaderParameter.class, "param2", "header");
1991-
assertParamDetails(operationParams, 2, PathParameter.class, "param3", "path");
1992-
assertParamDetails(operationParams, 3, HeaderParameter.class, "param4", "header");
2004+
List<Parameter> componentParameters = operationParams.stream()
2005+
.map(param -> {
2006+
String refName = ReferenceUtils.getRefName(param.get$ref());
2007+
return openAPI.getComponents().getParameters().get(refName);
2008+
}).collect(Collectors.toList());
2009+
2010+
assertParamDetails(componentParameters, 0, QueryParameter.class, "param1", "query");
2011+
assertParamDetails(componentParameters, 1, HeaderParameter.class, "param2", "header");
2012+
assertParamDetails(componentParameters, 2, PathParameter.class, "param3", "path");
2013+
assertParamDetails(componentParameters, 3, HeaderParameter.class, "param4", "header");
19932014

19942015
final Map<String, ApiResponse> responsesMap = operation.getResponses();
19952016

@@ -2264,9 +2285,10 @@ public void testIssue358() {
22642285
final OpenAPI openAPI = parser.read("src/test/resources/issue_358.yaml");
22652286
assertNotNull(openAPI);
22662287
List<Parameter> parms = openAPI.getPaths().get("/testApi").getGet().getParameters();
2267-
assertEquals(1, parms.size());
2268-
assertEquals("pathParam", parms.get(0).getName());
2269-
assertEquals("string", parms.get(0).getSchema().getType());
2288+
// FIXME nid 19.11.2025 : I do not think the behaviour is right. See spec > https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#path-item-object
2289+
assertEquals(parms.size(), 1);
2290+
assertEquals(parms.get(0).getName(), "pathParam");
2291+
assertEquals(parms.get(0).getSchema().getType(), "string");
22702292
}
22712293

22722294
@Test
@@ -2523,6 +2545,7 @@ public void shouldParseParameters() {
25232545
parseOptions.setResolveFully(true);
25242546
OpenAPI openAPI = new OpenAPIV3Parser().read("src/test/resources/issue_877.yaml", null, parseOptions);
25252547
Parameter parameter = openAPI.getPaths().get("/adopt").getGet().getParameters().get(0);
2548+
// FIXME nid 19.11.2025 : ResolveFully should inline here.
25262549
assertNotNull(parameter);
25272550
assertEquals(parameter.getIn(), "path");
25282551
assertEquals(parameter.getName(), "playerId");
@@ -2770,11 +2793,17 @@ public void testIssue1063() {
27702793

27712794
// then
27722795
OpenAPI api = result.getOpenAPI();
2773-
assertEquals(api.getPaths().get("/anPath").getGet().getParameters().get(0).getName(), "customer-id");
2774-
assertEquals(api.getPaths().get("/anPath").getGet().getParameters().get(1).getName(), "unit-id");
2796+
Components components = api.getComponents();
27752797

2776-
assertThat(result.getMessages(), equalTo(emptyList()));
2798+
Parameter customerIdParameter = api.getPaths().get("/anPath").getGet().getParameters().get(0);
2799+
String customerIdRefName = ReferenceUtils.getRefName(customerIdParameter.get$ref());
2800+
Assert.assertEquals(components.getParameters().get(customerIdRefName).getName(), "customer-id");
27772801

2802+
Parameter unitIdParameter = api.getPaths().get("/anPath").getGet().getParameters().get(1);
2803+
String unitIdRefName = ReferenceUtils.getRefName(unitIdParameter.get$ref());
2804+
Assert.assertEquals(components.getParameters().get(unitIdRefName).getName(), "unit-id");
2805+
2806+
assertThat(result.getMessages(), equalTo(emptyList()));
27782807
}
27792808

27802809
@Test

modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/OpenAPIV3RefTest.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@
88
import java.util.stream.Collectors;
99

1010

11+
import io.swagger.v3.oas.models.Components;
12+
import io.swagger.v3.oas.models.parameters.Parameter;
1113
import io.swagger.v3.parser.core.models.SwaggerParseResult;
14+
import io.swagger.v3.parser.reference.ReferenceUtils;
1215
import org.junit.Before;
1316
import org.junit.Test;
1417
import org.testng.Assert;
@@ -45,7 +48,10 @@ public void testRefContainingDot() {
4548
Assert.assertNotNull(result.getOpenAPI());
4649
Assert.assertTrue(result.getMessages().isEmpty(), "No error messages should be present");
4750
Assert.assertNotNull(result.getOpenAPI().getPaths().get("/endpoint").getGet().getParameters());
48-
Assert.assertEquals(result.getOpenAPI().getPaths().get("/endpoint").getGet().getParameters().get(0).getName(), "FbtPrincipalIdentity");
51+
Parameter parameter = result.getOpenAPI().getPaths().get("/endpoint").getGet().getParameters().get(0);
52+
String refName = ReferenceUtils.getRefName(parameter.get$ref());
53+
Components components = result.getOpenAPI().getComponents();
54+
Assert.assertEquals(components.getParameters().get(refName).getName(), "FbtPrincipalIdentity");
4955
}
5056

5157
@Test
@@ -57,7 +63,10 @@ public void testExternalRefContainingDot() {
5763
Assert.assertNotNull(result.getOpenAPI());
5864
Assert.assertTrue(result.getMessages().isEmpty(), "No error messages should be present");
5965
Assert.assertNotNull(result.getOpenAPI().getPaths().get("/endpoint").getGet().getParameters());
60-
Assert.assertEquals(result.getOpenAPI().getPaths().get("/endpoint").getGet().getParameters().get(0).getName(), "FbtPrincipalIdentity");
66+
Parameter parameter = result.getOpenAPI().getPaths().get("/endpoint").getGet().getParameters().get(0);
67+
String refName = ReferenceUtils.getRefName(parameter.get$ref());
68+
Components components = result.getOpenAPI().getComponents();
69+
Assert.assertEquals(components.getParameters().get(refName).getName(), "FbtPrincipalIdentity");
6170
}
6271

6372
@Test

modules/swagger-parser-v3/src/test/java/io/swagger/v3/parser/test/ParserDeduplicationParameterTest.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package io.swagger.v3.parser.test;
22

3+
import io.swagger.v3.oas.models.Components;
34
import io.swagger.v3.oas.models.OpenAPI;
45
import io.swagger.v3.oas.models.parameters.Parameter;
56
import io.swagger.v3.parser.OpenAPIV3Parser;
67
import io.swagger.v3.parser.core.models.ParseOptions;
8+
import io.swagger.v3.parser.reference.ReferenceUtils;
79
import org.testng.annotations.Test;
810

911
import java.util.List;
@@ -45,8 +47,19 @@ public void testDuplicatedParameterNameFromRef() {
4547
options.setFlatten(true);
4648
OpenAPI openAPI = openApiParser.read("issue-2102/openapi30.json", null, options);
4749

48-
assertEquals(openAPI.getPaths().get("/myoperation").getGet().getParameters().size(), 2);
49-
assertEquals((int) openAPI.getPaths().get("/myoperation").getGet().getParameters().stream().filter(param -> param.getName().equals("myParam")).count(), 2);
50+
List<Parameter> parameters = openAPI.getPaths().get("/myoperation").getGet().getParameters();
51+
assertEquals(parameters.size(), 2);
52+
53+
long namedParameterCount = parameters.stream()
54+
.map(param -> {
55+
String refName = ReferenceUtils.getRefName(param.get$ref());
56+
Components components = openAPI.getComponents();
57+
return components.getParameters().get(refName);
58+
})
59+
.filter(param -> param.getName().equals("myParam"))
60+
.count();
61+
62+
assertEquals((int)namedParameterCount, 2);
5063
}
5164

5265
@Test(description = "Duplicated parameter name with different locations")

0 commit comments

Comments
 (0)