Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -420,9 +420,13 @@ public Operation operation(ObjectNode obj, String location, ParseResult result)
List<SecurityRequirement> security = securityRequirements(array, location, result);
if (security != null) {
List<Map<String, List<String>>> ss = new ArrayList<>();
for (SecurityRequirement s : security) {
if (s.getRequirements() != null && s.getRequirements().size() > 0) {
ss.add(s.getRequirements());
for(SecurityRequirement s : security) {
if(s.getRequirements() != null) {
if (s.getRequirements().size() > 0) {
ss.add(s.getRequirements());
} else {
ss.add(Collections.<String, List<String>>emptyMap());
}
}
}
output.setSecurity(ss);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,36 @@ public void testSecurity() {
Assert.assertTrue(requirements.contains("write:pets"));
}

@Test
public void testSecurityWithEmpty() {
String json = "{\n" +
" \"swagger\": \"2.0\",\n" +
" \"security\": [\n" +
" {},\n" +
" {\n" +
" \"petstore_auth\": [\n" +
" \"write:pets\",\n" +
" \"read:pets\"\n" +
" ]\n" +
" }\n" +
" ]\n" +
"}";
SwaggerParser parser = new SwaggerParser();

SwaggerDeserializationResult result = parser.readWithInfo(json);

Swagger swagger = result.getSwagger();

assertNotNull(swagger.getSecurity());
List<SecurityRequirement> security = swagger.getSecurity();
Assert.assertTrue(security.size() == 2);
Assert.assertTrue(security.get(0).getRequirements().size() == 0);
Assert.assertTrue(security.get(1).getRequirements().size() == 1);

List<String> requirement = security.get(1).getRequirements().get("petstore_auth");
Assert.assertTrue(requirement.size() == 2);
}

@Test
public void testSecurityDefinition() {
String json = "{\n" +
Expand Down Expand Up @@ -566,6 +596,51 @@ public void testPaths() {
assertTrue(scopes.contains("read:pets"));
assertTrue(scopes.contains("write:pets"));
}

@Test
public void testOperationSecurityWithEmpty() {
String json = "{\n" +
" \"swagger\": \"2.0\",\n" +
" \"paths\": {\n" +
" \"/pet\": {\n" +
" \"foo\": \"bar\",\n" +
" \"get\": {\n" +
" \"security\": [\n" +
" {},\n" +
" {\n" +
" \"petstore_auth\": [\n" +
" \"write:pets\",\n" +
" \"read:pets\"\n" +
" ]\n" +
" }\n" +
" ]\n" +
" }\n" +
" }\n" +
" }\n" +
"}";
SwaggerParser parser = new SwaggerParser();

SwaggerDeserializationResult result = parser.readWithInfo(json);
List<String> messageList = result.getMessages();
Set<String> messages = new HashSet<String>(messageList);
assertTrue(messages.contains("attribute paths.'/pet'.foo is unexpected"));
Swagger swagger = result.getSwagger();

Path path = swagger.getPath("/pet");
assertNotNull(path);
Operation operation = path.getGet();
assertNotNull(operation);
List<Map<String, List<String>>> security = operation.getSecurity();

assertTrue(security.size() == 2);

Map<String, List<String>> requirement1 = security.get(0);
assertTrue(requirement1.isEmpty());

Map<String, List<String>> requirement2 = security.get(1);
assertTrue(requirement2.containsKey("petstore_auth"));
assertFalse(requirement2.get("petstore_auth").isEmpty());
}

@Test
public void testPathsWithRefResponse() {
Expand Down