diff --git a/source/OpenAPI-Core-Tests.package/OAParsingTests.class/instance/petStoreApiJsonStringWithEnum.st b/source/OpenAPI-Core-Tests.package/OAParsingTests.class/instance/petStoreApiJsonStringWithEnum.st new file mode 100644 index 0000000..b3c0a35 --- /dev/null +++ b/source/OpenAPI-Core-Tests.package/OAParsingTests.class/instance/petStoreApiJsonStringWithEnum.st @@ -0,0 +1,179 @@ +as yet unclassified +petStoreApiJsonStringWithEnum + ^ '{ + "openapi": "3.0.0", + "info": { + "version": "1.0.0", + "title": "Swagger Petstore", + "license": { + "name": "MIT" + } + }, + "servers": [ + { + "url": "http://petstore.swagger.io/v1" + } + ], + "paths": { + "/pets": { + "get": { + "summary": "List all pets", + "operationId": "listPets", + "tags": [ + "pets" + ], + "parameters": [ + { + "name": "limit", + "in": "query", + "description": "How many items to return at one time (max 100)", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "An paged array of pets", + "headers": { + "x-next": { + "description": "A link to the next page of responses", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Pets" + } + } + } + }, + "default": { + "description": "unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + }, + "post": { + "summary": "Create a pet", + "operationId": "createPets", + "tags": [ + "pets" + ], + "requestBody" : { + + "content": { + "application/json": { + "schema": { + "type": "array", + "items": {"$ref": "#/components/schemas/Pet"}, + "minItems": 1 + } + } + } + }, + "responses": { + "201": { + "description": "Null response" + }, + "default": { + "description": "unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, + "/pets/{petId}": { + "get": { + "summary": "Info for a specific pet", + "operationId": "showPetById", + "tags": [ + "pets" + ], + "parameters": [ + { + "name": "petId", + "in": "path", + "required": true, + "description": "The id of the pet to retrieve", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Expected response to a valid request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Pets" + } + } + } + }, + "default": { + "description": "unexpected error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "Pet": { + "type": "string", + "enum": [ + "PET_A", + "PET_B" + ] + }, + "Pets": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Pet" + } + }, + "Error": { + "type" : "object", + "required": [ + "code", + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + } + } + } + } + } +}' \ No newline at end of file diff --git a/source/OpenAPI-Core-Tests.package/OAParsingTests.class/instance/responseObjectJSONWithLinks.st b/source/OpenAPI-Core-Tests.package/OAParsingTests.class/instance/responseObjectJSONWithLinks.st new file mode 100644 index 0000000..708f700 --- /dev/null +++ b/source/OpenAPI-Core-Tests.package/OAParsingTests.class/instance/responseObjectJSONWithLinks.st @@ -0,0 +1,31 @@ +as yet unclassified +responseObjectJSONWithLinks + ^ ' +{ +"description": "Response with links", +"content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "_embedded" + ], + "properties": { + "_embedded": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Booking" + } + } + } + } + } + }, +"links": { + "getActionsForBooking": { + "$ref": "#/components/links/getActionsForBooking" + } + } +} + +'. \ No newline at end of file diff --git a/source/OpenAPI-Core-Tests.package/OAParsingTests.class/instance/schemaArrayMinItems.st b/source/OpenAPI-Core-Tests.package/OAParsingTests.class/instance/schemaArrayMinItems.st new file mode 100644 index 0000000..9c7d03d --- /dev/null +++ b/source/OpenAPI-Core-Tests.package/OAParsingTests.class/instance/schemaArrayMinItems.st @@ -0,0 +1,10 @@ +as yet unclassified +schemaArrayMinItems + + ^ '{ + + "type": "array", + "items": {"$ref": "#/components/schemas/Pet"}, + "minItems": 1 + +}' \ No newline at end of file diff --git a/source/OpenAPI-Core-Tests.package/OAParsingTests.class/instance/testParsingOpenAPIWithEnum.st b/source/OpenAPI-Core-Tests.package/OAParsingTests.class/instance/testParsingOpenAPIWithEnum.st new file mode 100644 index 0000000..e9a0a13 --- /dev/null +++ b/source/OpenAPI-Core-Tests.package/OAParsingTests.class/instance/testParsingOpenAPIWithEnum.st @@ -0,0 +1,10 @@ +tests +testParsingOpenAPIWithEnum + | api path | + api := OpenAPI fromString: self petStoreApiJsonStringWithEnum. + self assert: api info title equals: 'Swagger Petstore'. + self assert: api openapi equals: '3.0.0'. + self assert: api paths size = 2. + + path := api paths values first. + path should beInstanceOf: OAPathItem. \ No newline at end of file diff --git a/source/OpenAPI-Core-Tests.package/OAParsingTests.class/instance/testParsingResponseWithLinks.st b/source/OpenAPI-Core-Tests.package/OAParsingTests.class/instance/testParsingResponseWithLinks.st new file mode 100644 index 0000000..4174508 --- /dev/null +++ b/source/OpenAPI-Core-Tests.package/OAParsingTests.class/instance/testParsingResponseWithLinks.st @@ -0,0 +1,13 @@ +tests +testParsingResponseWithLinks + | response | + response := NeoJSONReader fromString: self responseObjectJSONWithLinks as: OAResponse. + + response should beInstanceOf: OAResponse. + response description should equal: 'Response with links'. + + response content should + beInstanceOf: Dictionary; + haveSize: 1; + includeKey: 'application/json'. + response content values do: [ :each | each should beInstanceOf: OAMediaTypeObject. ]. \ No newline at end of file diff --git a/source/OpenAPI-Core-Tests.package/OAParsingTests.class/instance/testParsingSchemaMinItems.st b/source/OpenAPI-Core-Tests.package/OAParsingTests.class/instance/testParsingSchemaMinItems.st new file mode 100644 index 0000000..4a9a25c --- /dev/null +++ b/source/OpenAPI-Core-Tests.package/OAParsingTests.class/instance/testParsingSchemaMinItems.st @@ -0,0 +1,5 @@ +tests +testParsingSchemaMinItems + | schemaDefinition | + schemaDefinition := NeoJSONReader fromString: self schemaArrayMinItems as: OASchemaDefinition. + self assert: schemaDefinition schemaClass equals: JSONSchemaArray \ No newline at end of file