From 260976914d42519bd90f281c08065c2727660fbe Mon Sep 17 00:00:00 2001 From: fragosti Date: Thu, 26 Jul 2018 14:30:24 -0700 Subject: Add basic smoke test --- packages/sra/README.md | 2 - packages/sra/package.json | 4 +- packages/sra/src/api.ts | 163 +++++++++++++++++++++ packages/sra/src/index.ts | 1 + packages/sra/test/api_test.ts | 14 ++ packages/sra/test/sample_test.ts | 3 - .../types/openapi-schema-validation/index.d.ts | 1 + 7 files changed, 181 insertions(+), 7 deletions(-) create mode 100644 packages/sra/src/api.ts create mode 100644 packages/sra/test/api_test.ts delete mode 100644 packages/sra/test/sample_test.ts create mode 100644 packages/typescript-typings/types/openapi-schema-validation/index.d.ts (limited to 'packages') diff --git a/packages/sra/README.md b/packages/sra/README.md index 461c93b44..a70760121 100644 --- a/packages/sra/README.md +++ b/packages/sra/README.md @@ -4,8 +4,6 @@ Contains the Standard Relayer API swagger spec and publishes the client libs. ## Installation -_pending_ - ## Contributing We welcome improvements and fixes from the wider community! To report bugs within this package, please create an issue in this repository. diff --git a/packages/sra/package.json b/packages/sra/package.json index f7f5becf9..47faafd92 100644 --- a/packages/sra/package.json +++ b/packages/sra/package.json @@ -14,8 +14,7 @@ "test:coverage": "nyc npm run test --all && yarn coverage:report:lcov", "coverage:report:lcov": "nyc report --reporter=text-lcov > coverage/lcov.info", "test:circleci": "yarn test:coverage", - "run_mocha": - "mocha --require source-map-support/register --require make-promises-safe lib/test/**/*_test.js --exit", + "run_mocha": "mocha --require source-map-support/register --require make-promises-safe lib/test/**/*_test.js --exit", "clean": "shx rm -rf lib test_temp scripts", "build": "tsc && copyfiles -u 3 './lib/src/monorepo_scripts/**/*' ./scripts" }, @@ -39,6 +38,7 @@ "make-promises-safe": "^1.1.0", "mocha": "^4.0.1", "nyc": "^11.0.1", + "openapi-schema-validation": "^0.4.1", "shx": "^0.2.2", "tslint": "5.11.0", "typescript": "2.7.1" diff --git a/packages/sra/src/api.ts b/packages/sra/src/api.ts new file mode 100644 index 000000000..98b5ce96a --- /dev/null +++ b/packages/sra/src/api.ts @@ -0,0 +1,163 @@ +export const api = { + 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'], + 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: { + required: ['id', 'name'], + properties: { + id: { + type: 'integer', + format: 'int64', + }, + name: { + type: 'string', + }, + tag: { + type: 'string', + }, + }, + }, + Pets: { + type: 'array', + items: { + $ref: '#/components/schemas/Pet', + }, + }, + Error: { + required: ['code', 'message'], + properties: { + code: { + type: 'integer', + format: 'int32', + }, + message: { + type: 'string', + }, + }, + }, + }, + }, +}; diff --git a/packages/sra/src/index.ts b/packages/sra/src/index.ts index e69de29bb..4d73f3cd3 100644 --- a/packages/sra/src/index.ts +++ b/packages/sra/src/index.ts @@ -0,0 +1 @@ +export { api } from './api'; diff --git a/packages/sra/test/api_test.ts b/packages/sra/test/api_test.ts new file mode 100644 index 000000000..dcc10d8b8 --- /dev/null +++ b/packages/sra/test/api_test.ts @@ -0,0 +1,14 @@ +import * as chai from 'chai'; +import * as dirtyChai from 'dirty-chai'; +import { api } from '../src/api'; +import { validate } from 'openapi-schema-validation'; + +chai.config.includeStack = true; +chai.use(dirtyChai); + +describe('SRA OpenAPI Schema', () => { + it('should be a valid OpenAPI schema', () => { + const result = validate(api, 3); + chai.expect(result.errors).to.have.length(0); + }); +}); diff --git a/packages/sra/test/sample_test.ts b/packages/sra/test/sample_test.ts deleted file mode 100644 index e7edd6719..000000000 --- a/packages/sra/test/sample_test.ts +++ /dev/null @@ -1,3 +0,0 @@ -describe('test', () => { - it('should pass', () => undefined); -}); diff --git a/packages/typescript-typings/types/openapi-schema-validation/index.d.ts b/packages/typescript-typings/types/openapi-schema-validation/index.d.ts new file mode 100644 index 000000000..123a6bdb7 --- /dev/null +++ b/packages/typescript-typings/types/openapi-schema-validation/index.d.ts @@ -0,0 +1 @@ +declare module 'openapi-schema-validation'; -- cgit v1.2.3