From 2bfb939646253cd461dd9ed8c9437deb63fae192 Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Wed, 2 Nov 2016 15:59:16 -0400 Subject: [PATCH] added tests for #336 --- .../io/swagger/parser/FileReferenceTests.java | 8 + .../common/issue-336-currency_code.json | 6 + .../common/issue-336-error.json | 38 ++++ .../common/issue-336-error_details.json | 24 +++ .../common/issue-336-link_description.json | 32 +++ .../nested-file-references/issue-336.json | 190 ++++++++++++++++++ .../title/issue-336-copy.json | 20 ++ .../title/issue-336-datatypes.json | 67 ++++++ .../title/issue-336-reservation.json | 18 ++ .../title/issue-336-title.json | 60 ++++++ 10 files changed, 463 insertions(+) create mode 100644 modules/swagger-parser/src/test/resources/nested-file-references/common/issue-336-currency_code.json create mode 100644 modules/swagger-parser/src/test/resources/nested-file-references/common/issue-336-error.json create mode 100644 modules/swagger-parser/src/test/resources/nested-file-references/common/issue-336-error_details.json create mode 100644 modules/swagger-parser/src/test/resources/nested-file-references/common/issue-336-link_description.json create mode 100644 modules/swagger-parser/src/test/resources/nested-file-references/issue-336.json create mode 100644 modules/swagger-parser/src/test/resources/nested-file-references/title/issue-336-copy.json create mode 100644 modules/swagger-parser/src/test/resources/nested-file-references/title/issue-336-datatypes.json create mode 100644 modules/swagger-parser/src/test/resources/nested-file-references/title/issue-336-reservation.json create mode 100644 modules/swagger-parser/src/test/resources/nested-file-references/title/issue-336-title.json diff --git a/modules/swagger-parser/src/test/java/io/swagger/parser/FileReferenceTests.java b/modules/swagger-parser/src/test/java/io/swagger/parser/FileReferenceTests.java index a662955e0d..384f5d45c9 100644 --- a/modules/swagger-parser/src/test/java/io/swagger/parser/FileReferenceTests.java +++ b/modules/swagger-parser/src/test/java/io/swagger/parser/FileReferenceTests.java @@ -129,4 +129,12 @@ public void testIssue289() { Swagger swagger = result.getSwagger(); assertNotNull(swagger.getPath("/foo").getGet()); } + + @Test + public void testIssue336() { + SwaggerDeserializationResult result = new SwaggerParser().readWithInfo("./src/test/resources/nested-file-references/issue-336.json", null, true); + assertNotNull(result.getSwagger()); + + Swagger swagger = result.getSwagger(); + } } diff --git a/modules/swagger-parser/src/test/resources/nested-file-references/common/issue-336-currency_code.json b/modules/swagger-parser/src/test/resources/nested-file-references/common/issue-336-currency_code.json new file mode 100644 index 0000000000..8866c72fd3 --- /dev/null +++ b/modules/swagger-parser/src/test/resources/nested-file-references/common/issue-336-currency_code.json @@ -0,0 +1,6 @@ +{ + "description": "Currency code", + "type": "string", + "minLength": 3, + "maxLength": 3 +} diff --git a/modules/swagger-parser/src/test/resources/nested-file-references/common/issue-336-error.json b/modules/swagger-parser/src/test/resources/nested-file-references/common/issue-336-error.json new file mode 100644 index 0000000000..92731edced --- /dev/null +++ b/modules/swagger-parser/src/test/resources/nested-file-references/common/issue-336-error.json @@ -0,0 +1,38 @@ +{ + "type":"object", + "title":"error", + "description":"Details of an Error", + "properties":{ + "name":{ + "type":"string", + "description":"Human readable, unique name of the error." + }, + "debug_id":{ + "type":"string", + "description":"Used for correlation purposes." + }, + "message":{ + "type":"string", + "description":"Message describing the error." + }, + "information_link":{ + "type":"string", + "description":"URI for detailed information related to this error for the developer." + }, + "details":{ + "type":"array", + "description":"Additional details of the error", + "items":{ + "$ref":"../common/issue-336-error_details.json" + } + }, + "links":{ + "type":"array", + "description":"Error context specific HATEOAS links", + "items":{ + "$ref":"../common/issue-336-link_description.json" + } + } + }, + "required" : [ "name", "debug_id", "message"] +} \ No newline at end of file diff --git a/modules/swagger-parser/src/test/resources/nested-file-references/common/issue-336-error_details.json b/modules/swagger-parser/src/test/resources/nested-file-references/common/issue-336-error_details.json new file mode 100644 index 0000000000..6bfa44161b --- /dev/null +++ b/modules/swagger-parser/src/test/resources/nested-file-references/common/issue-336-error_details.json @@ -0,0 +1,24 @@ +{ + "type":"object", + "title":"Error Details", + "description":"Details about a specific error.", + "properties":{ + "field":{ + "type":"string", + "description":"Field that caused the error." + }, + "value":{ + "type":"string", + "description":"Value of the field that caused the error." + }, + "location":{ + "type":"string", + "description":"Location of the field that caused the error. Possible values are body (default), path and query" + }, + "issue":{ + "type":"string", + "description":"Reason for the error." + } + }, + "required" : ["issue"] +} \ No newline at end of file diff --git a/modules/swagger-parser/src/test/resources/nested-file-references/common/issue-336-link_description.json b/modules/swagger-parser/src/test/resources/nested-file-references/common/issue-336-link_description.json new file mode 100644 index 0000000000..5a1150112e --- /dev/null +++ b/modules/swagger-parser/src/test/resources/nested-file-references/common/issue-336-link_description.json @@ -0,0 +1,32 @@ +{ + "title": "Link Description Object", + "type": "object", + "required": [ "href", "rel" ], + "properties": { + "href": { + "description": "a URI template, as defined by RFC 6570, with the addition of the $, ( and ) characters for pre-processing", + "type": "string" + }, + "rel": { + "description": "relation to the target resource of the link", + "type": "string" + }, + "title": { + "description": "a title for the link", + "type": "string" + }, + "mediaType": { + "description": "media type (as defined by RFC 2046) describing the link target", + "type": "string" + }, + "method": { + "description": "method for requesting", + "type": "string" + }, + "encType": { + "description": "The media type in which to submit data along with the request", + "type": "string", + "default": "application/json" + } + } +} \ No newline at end of file diff --git a/modules/swagger-parser/src/test/resources/nested-file-references/issue-336.json b/modules/swagger-parser/src/test/resources/nested-file-references/issue-336.json new file mode 100644 index 0000000000..6c67806019 --- /dev/null +++ b/modules/swagger-parser/src/test/resources/nested-file-references/issue-336.json @@ -0,0 +1,190 @@ +{ + "swagger": "2.0", + "info": { + "version": "1.0.0", + "title": "Abhi service", + "description": "A sample application to test out integration of swagger", + "contact": { + "email": "abhi.predator@gmail.com" + } + }, + "schemes": [ + "http" + ], + "basePath": "/v1/library", + "tags": [ + { + "name": "Titles", + "description": "Description" + } + ], + "produces": [ + "application/json" + ], + "paths": { + "/titles": { + "get": { + "description": "Gets titles as part of Raptor 3 training", + "tags": [ + "Titles" + ], + "summary": "Get all titles", + "operationId": "findTitles", + "parameters": [ + { + "in": "query", + "name": "multiple_type", + "description": "multipletypes", + "required": false, + "type": "array", + "minItems": 0, + "maxItems": 3, + "items": { + "type": "string" + }, + "collectionFormat": "multi" + } + ], + "responses": { + "200": { + "description": "Successful response", + "schema": { + "type": "array", + "items": { + "$ref": "./title/issue-336-title.json" + } + } + }, + "default": { + "description": "Unexpected error", + "schema": { + "$ref": "./common/issue-336-error.json" + } + } + } + }, + "post": { + "description": "Creating a new title", + "tags": [ + "Titles" + ], + "summary": "Create a new title", + "operationId": "createTitle", + "parameters": [ + { + "in": "body", + "name": "Title", + "description": "Title for creation", + "required": true, + "schema": { + "$ref": "./title/issue-336-title.json" + } + } + ], + "responses": { + "201": { + "description": "Successfully created" + }, + "default": { + "description": "Unexpected error", + "schema": { + "$ref": "./common/issue-336-error.json" + } + } + } + } + }, + "/titles/{id}": { + "get": { + "summary": "Get a title", + "tags": [ + "Titles" + ], + "description": "", + "operationId": "getTitle", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Get title for given id", + "required": true, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "400": { + "description": "Invalid ID supplied" + }, + "404": { + "description": "Title not found" + } + } + }, + "put": { + "summary": "Update a title", + "tags": [ + "Titles" + ], + "description": "", + "operationId": "updateTitle", + "consumes": [ + "application/json" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Update a title", + "required": true, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "Title", + "description": "Title for update", + "required": true, + "schema": { + "$ref": "./title/issue-336-title.json" + } + } + ], + "responses": { + "400": { + "description": "Invalid ID supplied" + }, + "404": { + "description": "Title not found" + } + } + }, + "delete": { + "summary": "Deletes a title", + "tags": [ + "Titles" + ], + "description": "", + "operationId": "deleteTitle", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Title id to delete", + "required": true, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "400": { + "description": "Invalid ID supplied" + }, + "404": { + "description": "Title not found" + } + } + } + } + } +} \ No newline at end of file diff --git a/modules/swagger-parser/src/test/resources/nested-file-references/title/issue-336-copy.json b/modules/swagger-parser/src/test/resources/nested-file-references/title/issue-336-copy.json new file mode 100644 index 0000000000..318a87a592 --- /dev/null +++ b/modules/swagger-parser/src/test/resources/nested-file-references/title/issue-336-copy.json @@ -0,0 +1,20 @@ +{ + "type": "object", + "title":"copy", + "description":"Copy of a title", + "properties": { + "barcode": { + "type": "string", + "pattern": "^[0-9]{1,38}$", + "description": "Barcode for the title" + }, + "qr_code": { + "type": "string", + "description": "QR code for the title" + }, + "known_defect": { + "type": "string", + "description": "Known defects" + } + } +} \ No newline at end of file diff --git a/modules/swagger-parser/src/test/resources/nested-file-references/title/issue-336-datatypes.json b/modules/swagger-parser/src/test/resources/nested-file-references/title/issue-336-datatypes.json new file mode 100644 index 0000000000..a93413bf8d --- /dev/null +++ b/modules/swagger-parser/src/test/resources/nested-file-references/title/issue-336-datatypes.json @@ -0,0 +1,67 @@ +{ + "type": "object", + "title":"datatypes", + "description":"JSON to verify all datatypes behavior", + "properties": { + "integer_32_type" : { + "type": "integer", + "format": "int32", + "minimum": 0, + "maximum": 10, + "exclusiveMaximum": true, + "exclusiveMinimum": true, + "description": "Integer 32 bit" + }, + "integer_64_type": { + "type": "integer", + "format": "int64", + "minimum": 0, + "maximum": 11, + "description": "Integer 64 bit" + }, + "float_type": { + "type": "number", + "format": "float", + "minimum": 0, + "maximum": 12, + "description": "Float type" + }, + "double_type": { + "type": "number", + "format": "double", + "minimum": 0, + "maximum": 13, + "description": "Double type" + }, + "byte_type": { + "type": "string", + "format": "byte", + "description": "base64 encoded chars" + }, + "binary_type": { + "type": "string", + "format": "binary", + "description": "Binary type" + }, + "boolean_type": { + "type": "boolean", + "description": "Boolean type" + }, + "date_type": { + "type": "string", + "format": "date", + "description": "date type" + }, + "date_time_type": { + "type": "string", + "format": "date-time", + "description": "Date time type" + }, + "password_type": { + "type": "string", + "format": "password", + "description": "password type" + } + }, + "required" : [ "integer_32_type", "integer_64_type", "float_type", "double_type", "byte_type", "binary_type", "boolean_type", "date_type", "date_time_type", "password_type" ] +} \ No newline at end of file diff --git a/modules/swagger-parser/src/test/resources/nested-file-references/title/issue-336-reservation.json b/modules/swagger-parser/src/test/resources/nested-file-references/title/issue-336-reservation.json new file mode 100644 index 0000000000..cdcc66f071 --- /dev/null +++ b/modules/swagger-parser/src/test/resources/nested-file-references/title/issue-336-reservation.json @@ -0,0 +1,18 @@ +{ + "type": "object", + "title":"reservation", + "description":"Copy of a title", + "properties": { + "when_made": { + "type": "string", + "format": "date", + "description": "Date of this title" + }, + "when_expires": { + "type": "string", + "format": "date", + "description": "Date when title expires" + }, + "required": ["when_made", "when_expires"] + } +} \ No newline at end of file diff --git a/modules/swagger-parser/src/test/resources/nested-file-references/title/issue-336-title.json b/modules/swagger-parser/src/test/resources/nested-file-references/title/issue-336-title.json new file mode 100644 index 0000000000..f15bda5450 --- /dev/null +++ b/modules/swagger-parser/src/test/resources/nested-file-references/title/issue-336-title.json @@ -0,0 +1,60 @@ +{ + "type": "object", + "title":"title", + "description":"A book title resource", + "properties": { + "id" : { + "type": "integer", + "format": "int64", + "description": "Id for the title" + }, + "isbn": { + "type": "string", + "description": "ISBN for the title" + }, + "title": { + "type": "string", + "description": "Title for title." + }, + "review": { + "type": "string", + "description": "Review for the title." + }, + "authors": { + "type": "array", + "description": "List of authors for this title", + "items": { + "type": "string" + } + }, + "reservation" : { + "$ref": "./issue-336-reservation.json" + }, + "copies": { + "type": "array", + "description": "List of copies for this title", + "items": { + "$ref": "../title/issue-336-copy.json" + } + }, + "reservations": { + "type": "array", + "description": "List of copies for this title", + "minItems": 1, + "maxItems": 10, + "items": { + "$ref": "../title/issue-336-reservation.json" + } + }, + "datatypes": { + "type": "array", + "description": "List of copies for this title", + "minItems": 1, + "maxItems": 10, + "items": { + "$ref": "../title/issue-336-datatypes.json" + } + } + }, + "required" : [ "id" ] +} \ No newline at end of file