From e71e1b97ec3b982562f7915f5b2ce8ce66357574 Mon Sep 17 00:00:00 2001 From: Carmine DiMascio Date: Sat, 19 Dec 2020 14:50:26 -0500 Subject: [PATCH] chore: add OpenAPIV3.Document return type --- test/petstore.spec.ts | 334 +++++++++++++++++++++--------------------- 1 file changed, 168 insertions(+), 166 deletions(-) diff --git a/test/petstore.spec.ts b/test/petstore.spec.ts index 6cc51fe3..80c89cce 100644 --- a/test/petstore.spec.ts +++ b/test/petstore.spec.ts @@ -1,5 +1,5 @@ -import * as path from 'path'; import * as request from 'supertest'; +import { OpenAPIV3 } from '../src/framework/types'; import { createApp } from './common/app'; describe('petstore', () => { @@ -9,198 +9,200 @@ describe('petstore', () => { // set up express app app = await createApp( { - apiSpec: { - openapi: '3.0.0', - info: { - version: '1.0.0', - title: 'Swagger Petstore', - license: { - name: 'MIT', + apiSpec: petstoreSpec(), + }, + 3001, + (app) => { + app.get('/v1/pets', (req, res) => { + res.json([ + { + id: 1, + name: 'sparky', + tag: 'test', }, - }, - servers: [ + ]); + }); + }, + false, + ); + return app; + }); + + after(() => { + app.server.close(); + }); + + it('should return 200', async () => + request(app) + .get(`${app.basePath}/pets`) + .expect(200) + .then((r) => console.log(r.body))); +}); + +function petstoreSpec(): OpenAPIV3.Document { + return { + 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: [ { - url: 'http://petstore.swagger.io/v1', + name: 'limit', + in: 'query', + description: 'How many items to return at one time (max 100)', + required: false, + schema: { + type: 'integer', + format: 'int32', + }, }, ], - 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: 'A 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', - }, - }, - }, + responses: { + '200': { + description: 'A paged array of pets', + headers: { + 'x-next': { + description: 'A link to the next page of responses', + schema: { + type: 'string', }, }, }, - post: { - summary: 'Create a pet', - operationId: 'createPets', - tags: ['pets'], - responses: { - '201': { - description: 'Null response', - }, - default: { - description: 'unexpected error', - content: { - 'application/json': { - schema: { - $ref: '#/components/schemas/Error', - }, - }, - }, + content: { + 'application/json': { + schema: { + $ref: '#/components/schemas/Pets', }, }, }, }, - '/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/Pet', - }, - }, - }, - }, - default: { - description: 'unexpected error', - content: { - 'application/json': { - schema: { - $ref: '#/components/schemas/Error', - }, - }, - }, + default: { + description: 'unexpected error', + content: { + 'application/json': { + schema: { + $ref: '#/components/schemas/Error', }, }, }, }, }, - components: { - schemas: { - Pet: { - type: 'object', - required: ['id', 'name'], - properties: { - id: { - type: 'integer', - format: 'int64', - }, - name: { - type: 'string', - }, - tag: { - type: 'string', + }, + post: { + summary: 'Create a pet', + operationId: 'createPets', + tags: ['pets'], + responses: { + '201': { + description: 'Null response', + }, + default: { + description: 'unexpected error', + content: { + 'application/json': { + schema: { + $ref: '#/components/schemas/Error', }, }, }, - Pets: { - type: 'array', - items: { - $ref: '#/components/schemas/Pet', - }, + }, + }, + }, + }, + '/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', }, - Error: { - type: 'object', - required: ['code', 'message'], - properties: { - code: { - type: 'integer', - format: 'int32', + }, + ], + responses: { + '200': { + description: 'Expected response to a valid request', + content: { + 'application/json': { + schema: { + $ref: '#/components/schemas/Pet', }, - message: { - type: 'string', + }, + }, + }, + default: { + description: 'unexpected error', + content: { + 'application/json': { + schema: { + $ref: '#/components/schemas/Error', }, }, }, }, }, }, - // validateResponses: true, }, - 3001, - (app) => { - app.get('/v1/pets', (req, res) => { - res.json([ - { - id: 1, - name: 'sparky', - tag: 'test', + }, + components: { + schemas: { + Pet: { + type: 'object', + required: ['id', 'name'], + properties: { + id: { + type: 'integer', + format: 'int64', }, - ]); - }); + name: { + type: 'string', + }, + tag: { + type: 'string', + }, + }, + }, + Pets: { + type: 'array', + items: { + $ref: '#/components/schemas/Pet', + }, + }, + Error: { + type: 'object', + required: ['code', 'message'], + properties: { + code: { + type: 'integer', + format: 'int32', + }, + message: { + type: 'string', + }, + }, + }, }, - false, - ); - return app; - }); - - after(() => { - app.server.close(); - }); - - it('should return 200', async () => - request(app) - .get(`${app.basePath}/pets`) - .expect(200) - .then((r) => console.log(r.body))); -}); + }, + }; +}