use of io.swagger.v3.oas.models.security.SecurityScheme.In in project swagger-parser by swagger-api.
the class OpenAPIDeserializerTest method testSecurityDefinition.
@Test
public void testSecurityDefinition() {
String yaml = "openapi: 3.0.0\n" + "servers: []\n" + "paths:\n" + " /pet:\n" + " get:\n" + " security:\n" + " - basic_auth: []\n" + " api_key: []\n" + " responses:\n" + " default:\n" + " description: Default response\n" + "info:\n" + " version: ''\n" + " title: ''\n" + "components:\n" + " securitySchemes:\n" + " basic_auth:\n" + " type: http\n" + " x-foo: basicBar\n" + " scheme: basic\n" + " api_key:\n" + " type: apiKey\n" + " name: api_key\n" + " in: header\n" + " description: api key description\n" + " x-foo: apiKeyBar";
OpenAPIV3Parser parser = new OpenAPIV3Parser();
SwaggerParseResult result = parser.readContents(yaml, null, null);
OpenAPI openAPI = result.getOpenAPI();
assertNotNull(openAPI.getComponents().getSecuritySchemes());
assertTrue(openAPI.getComponents().getSecuritySchemes().keySet().size() == 2);
// Basic Authentication
SecurityScheme definitionBasic = openAPI.getComponents().getSecuritySchemes().get("basic_auth");
assertNotNull(definitionBasic);
assertEquals(definitionBasic.getType(), SecurityScheme.Type.HTTP);
assertEquals(definitionBasic.getExtensions().get("x-foo"), "basicBar");
// API Key Authentication
SecurityScheme definition = openAPI.getComponents().getSecuritySchemes().get("api_key");
assertNotNull(definition);
assertEquals(definition.getType(), SecurityScheme.Type.APIKEY);
SecurityScheme apiKey = definition;
assertEquals(apiKey.getName(), "api_key");
assertEquals(apiKey.getIn(), SecurityScheme.In.HEADER);
assertEquals(apiKey.getDescription(), "api key description");
assertEquals(apiKey.getExtensions().get("x-foo"), "apiKeyBar");
}
use of io.swagger.v3.oas.models.security.SecurityScheme.In in project swagger-parser by swagger-api.
the class OpenAPIDeserializerTest method readSecuritySchemesObject.
@Test(dataProvider = "data")
public void readSecuritySchemesObject(JsonNode rootNode) throws Exception {
final OpenAPIDeserializer deserializer = new OpenAPIDeserializer();
final SwaggerParseResult result = deserializer.deserialize(rootNode);
Assert.assertNotNull(result);
List<String> messages = result.getMessages();
assertTrue(!messages.contains("attribute components.securitySchemes'.petstore_auth'.name is missing"));
assertTrue(!messages.contains("attribute components.securitySchemes'.petstore_auth'.in is missing"));
assertTrue(!messages.contains("attribute components.securitySchemes'.petstore_auth'.scheme is missing"));
assertTrue(!messages.contains("attribute components.securitySchemes'.petstore_auth'.openIdConnectUrl is missing"));
assertTrue(!messages.contains("attribute components.securitySchemes'.petstore_auth'.tokenUrl is missing"));
assertTrue(!messages.contains("attribute components.securitySchemes'.petstore_auth_password'.authorizationUrl is missing"));
assertTrue(!messages.contains("attribute components.securitySchemes'.petstore_auth_clientCredentials'.authorizationUrl is missing"));
assertTrue(!messages.contains("attribute components.securitySchemes'.api_key'.scheme is missing"));
assertTrue(!messages.contains("attribute components.securitySchemes'.api_key'.flows is missing"));
assertTrue(!messages.contains("attribute components.securitySchemes'.api_key'.openIdConnectUrl is missing"));
assertTrue(!messages.contains("attribute components.securitySchemes'.http'.name is missing"));
assertTrue(!messages.contains("attribute components.securitySchemes'.http'.in is missing"));
assertTrue(!messages.contains("attribute components.securitySchemes'.http'.flows is missing"));
assertTrue(!messages.contains("attribute components.securitySchemes'.http'.openIdConnectUrl is missing"));
assertTrue(!messages.contains("attribute components.securitySchemes'.openID'.name is missing"));
assertTrue(!messages.contains("attribute components.securitySchemes'.openID'.in is missing"));
assertTrue(!messages.contains("attribute components.securitySchemes'.openID'.scheme is missing"));
assertTrue(!messages.contains("attribute components.securitySchemes'.openID'.flows is missing"));
final OpenAPI openAPI = result.getOpenAPI();
Assert.assertNotNull(openAPI);
final Map<String, SecurityScheme> securitySchemes = openAPI.getComponents().getSecuritySchemes();
Assert.assertNotNull(securitySchemes);
Assert.assertEquals(securitySchemes.size(), 10);
SecurityScheme securityScheme = securitySchemes.get("reference");
assertTrue(securityScheme.get$ref().equals("#/components/securitySchemes/api_key"));
securityScheme = securitySchemes.get("remote_reference");
assertTrue(securityScheme.get$ref().equals("http://localhost:${dynamicPort}/remote/security#/petstore_remote"));
securityScheme = securitySchemes.get("petstore_auth");
assertTrue(securityScheme.getType() == SecurityScheme.Type.OAUTH2);
securityScheme = securitySchemes.get("petstore_auth_password");
assertTrue(securityScheme.getType() == SecurityScheme.Type.OAUTH2);
securityScheme = securitySchemes.get("petstore_auth_clientCredentials");
assertTrue(securityScheme.getType() == SecurityScheme.Type.OAUTH2);
securityScheme = securitySchemes.get("petstore_auth_authorizationCode");
assertTrue(securityScheme.getType() == SecurityScheme.Type.OAUTH2);
securityScheme = securitySchemes.get("api_key");
assertTrue(securityScheme.getType() == SecurityScheme.Type.APIKEY);
assertTrue(securityScheme.getIn() == SecurityScheme.In.HEADER);
securityScheme = securitySchemes.get("api_key_cookie");
assertTrue(securityScheme.getType() == SecurityScheme.Type.APIKEY);
assertTrue(securityScheme.getIn() == SecurityScheme.In.COOKIE);
securityScheme = securitySchemes.get("http");
assertTrue(securityScheme.getType() == SecurityScheme.Type.HTTP);
securityScheme = securitySchemes.get("openID");
assertTrue(securityScheme.getType() == SecurityScheme.Type.OPENIDCONNECT);
}
use of io.swagger.v3.oas.models.security.SecurityScheme.In in project swagger-parser by swagger-api.
the class OpenAPIDeserializerTest method testIssue161.
@Test
public void testIssue161() {
String yaml = "openapi: 3.0.0\n" + "servers: []\n" + "paths:\n" + " /users:\n" + " get:\n" + " parameters:\n" + " - in: query\n" + " name: name\n" + " required: false\n" + " schema:\n" + " type: string\n" + " minLength: 10\n" + " maxLength: 100\n" + " responses:\n" + " default:\n" + " description: ok\n";
OpenAPIV3Parser parser = new OpenAPIV3Parser();
SwaggerParseResult result = parser.readContents(yaml, null, null);
Set<String> messages = new HashSet<>(result.getMessages());
assertFalse(messages.contains("attribute paths.'/users'(get).[name].maxLength is unexpected"));
}
use of io.swagger.v3.oas.models.security.SecurityScheme.In in project swagger-parser by swagger-api.
the class OpenAPIDeserializerTest method testStyleInvalid.
@Test
public void testStyleInvalid() {
String json = "{" + " \"openapi\": \"3.0.0\"," + " \"info\": {" + " \"title\": \"realize\"," + " \"version\": \"0.0.0\"" + " }," + " \"paths\": {" + " \"/realize/{param}\": {" + " \"post\": {" + " \"parameters\": [" + " {" + " \"name\": \"param\"," + " \"in\": \"path\"," + "" + " \"style\": \"DERP\"," + " \"required\": true," + "" + " \"schema\": {" + " \"type\": \"string\"," + " \"nullable\": false," + " \"minLength\": 1" + " }" + " }" + " ]," + " \"responses\": {" + " \"200\": {" + " \"description\": \"Success\"," + " \"content\": {" + " \"application/json\": {" + " \"schema\": {" + " \"type\": \"object\"" + " }" + " }" + " }" + " }" + " }" + " }" + " }" + " }" + "}";
OpenAPIV3Parser parser = new OpenAPIV3Parser();
SwaggerParseResult result = parser.readContents(json, null, null);
assertTrue(result.getMessages().size() == 1);
assertEquals(result.getMessages().get(0), "attribute paths.'/realize/{param}'(post).parameters.[param].style is not of type `StyleEnum`");
}
use of io.swagger.v3.oas.models.security.SecurityScheme.In in project swagger-parser by swagger-api.
the class OpenAPIParserTest method testIssue813.
@Test
public void testIssue813() throws Exception {
String inputSpec = "{\n" + " \"swagger\": \"2.0\",\n" + " \"info\": {\n" + " \"description\": \"This is a sample server Petstore server. You can find out more about Swagger at <a href=\\\"http://swagger.io\\\">http://swagger.io</a> or on irc.freenode.net, #swagger. For this sample, you can use the api key \\\"special-key\\\" to test the authorization filters\",\n" + " \"version\": \"1.0.0\",\n" + " \"title\": \"Swagger Petstore\",\n" + " \"termsOfService\": \"http://helloreverb.com/terms/\",\n" + " \"contact\": {\n" + " \"email\": \"apiteam@wordnik.com\"\n" + " },\n" + " \"license\": {\n" + " \"name\": \"Apache-2.0\",\n" + " \"url\": \"http://www.apache.org/licenses/LICENSE-2.0.html\"\n" + " }\n" + " },\n" + " \"host\": \"petstore.swagger.io\",\n" + " \"basePath\": \"/v2\",\n" + " \"schemes\": [\n" + " \"http\"\n" + " ],\n" + " \"paths\": {\n" + " \"/pet\": {\n" + " \"post\": {\n" + " \"tags\": [\n" + " \"pet\"\n" + " ],\n" + " \"summary\": \"Add a new pet to the store\",\n" + " \"description\": \"\",\n" + " \"operationId\": \"addPet\",\n" + " \"consumes\": [\n" + " \"application/json\",\n" + " \"application/xml\"\n" + " ],\n" + " \"produces\": [\n" + " \"application/json\",\n" + " \"application/xml\"\n" + " ],\n" + " \"parameters\": [{\n" + " \"in\": \"body\",\n" + " \"name\": \"body\",\n" + " \"description\": \"Pet object that needs to be added to the store\",\n" + " \"required\": false,\n" + " \"schema\": {\n" + " \"$ref\": \"#/definitions/Pet\"\n" + " }\n" + " }],\n" + " \"responses\": {\n" + " \"405\": {\n" + " \"description\": \"Invalid input\"\n" + " }\n" + " },\n" + " \"security\": [{\n" + " \"petstore_auth\": [\n" + " \"write:pets\",\n" + " \"read:pets\"\n" + " ]\n" + " }]\n" + " },\n" + " \"put\": {\n" + " \"tags\": [\n" + " \"pet\"\n" + " ],\n" + " \"summary\": \"Update an existing pet\",\n" + " \"description\": \"\",\n" + " \"operationId\": \"updatePet\",\n" + " \"consumes\": [\n" + " \"application/json\",\n" + " \"application/xml\"\n" + " ],\n" + " \"produces\": [\n" + " \"application/json\",\n" + " \"application/xml\"\n" + " ],\n" + " \"parameters\": [{\n" + " \"in\": \"body\",\n" + " \"name\": \"body\",\n" + " \"description\": \"Pet object that needs to be added to the store\",\n" + " \"required\": false,\n" + " \"schema\": {\n" + " \"$ref\": \"#/definitions/Pet\"\n" + " }\n" + " }],\n" + " \"responses\": {\n" + " \"405\": {\n" + " \"description\": \"Validation exception\"\n" + " },\n" + " \"404\": {\n" + " \"description\": \"Pet not found\"\n" + " },\n" + " \"400\": {\n" + " \"description\": \"Invalid ID supplied\"\n" + " }\n" + " },\n" + " \"security\": [{\n" + " \"petstore_auth\": [\n" + " \"write:pets\",\n" + " \"read:pets\"\n" + " ]\n" + " }]\n" + " }\n" + " },\n" + " \"securityDefinitions\": {\n" + " \"api_key\": {\n" + " \"type\": \"apiKey\",\n" + " \"name\": \"api_key\",\n" + " \"in\": \"header\"\n" + " },\n" + " \"petstore_auth\": {\n" + " \"type\": \"oauth2\",\n" + " \"authorizationUrl\": \"http://petstore.swagger.io/api/oauth/dialog\",\n" + " \"flow\": \"implicit\",\n" + " \"scopes\": {\n" + " \"write:pets\": \"modify pets in your account\",\n" + " \"read:pets\": \"read your pets\"\n" + " }\n" + " }\n" + " },\n" + " \"definitions\": {\n" + " \"Pet\": {\n" + " \"required\": [\n" + " \"name\",\n" + " \"photoUrls\"\n" + " ],\n" + " \"properties\": {\n" + " \"id\": {\n" + " \"type\": \"integer\",\n" + " \"format\": \"int64\"\n" + " },\n" + " \"category\": {\n" + " \"$ref\": \"#/definitions/Category\"\n" + " },\n" + " \"name\": {\n" + " \"type\": \"string\",\n" + " \"example\": \"doggie\"\n" + " },\n" + " \"photoUrls\": {\n" + " \"type\": \"array\",\n" + " \"xml\": {\n" + " \"name\": \"photoUrl\",\n" + " \"wrapped\": true\n" + " },\n" + " \"items\": {\n" + " \"type\": \"string\"\n" + " }\n" + " },\n" + " \"tags\": {\n" + " \"type\": \"array\",\n" + " \"xml\": {\n" + " \"name\": \"tag\",\n" + " \"wrapped\": true\n" + " },\n" + " \"items\": {\n" + " \"$ref\": \"#/definitions/Tag\"\n" + " }\n" + " },\n" + " \"status\": {\n" + " \"type\": \"string\",\n" + " \"description\": \"pet status in the store\",\n" + " \"enum\": [\n" + " \"available\",\n" + " \"pending\",\n" + " \"sold\"\n" + " ]\n" + " }\n" + " },\n" + " \"xml\": {\n" + " \"name\": \"Pet\"\n" + " }\n" + " }\n" + " }\n" + " }\n" + "}";
ParseOptions options = new ParseOptions();
options.setResolve(true);
options.setFlatten(true);
SwaggerParseResult result = new OpenAPIParser().readContents(inputSpec, null, options);
assertTrue(result.getOpenAPI() != null);
}
Aggregations