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 + yarn.lock | 91 +++--------- 8 files changed, 201 insertions(+), 78 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 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'; diff --git a/yarn.lock b/yarn.lock index 804ba85a8..853d5c8d7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -565,37 +565,6 @@ lodash "4.17.10" uuid "3.2.1" -"@0xproject/contract-wrappers@^1.0.1-rc.2": - version "1.0.1-rc.1" - dependencies: - "@0xproject/assert" "^1.0.3" - "@0xproject/base-contract" "^1.0.3" - "@0xproject/fill-scenarios" "^1.0.1-rc.1" - "@0xproject/json-schemas" "^1.0.1-rc.2" - "@0xproject/order-utils" "^1.0.1-rc.1" - "@0xproject/types" "^1.0.1-rc.2" - "@0xproject/typescript-typings" "^1.0.3" - "@0xproject/utils" "^1.0.3" - "@0xproject/web3-wrapper" "^1.1.1" - ethereum-types "^1.0.3" - ethereumjs-blockstream "5.0.0" - ethereumjs-util "^5.1.1" - ethers "3.0.22" - js-sha3 "^0.7.0" - lodash "^4.17.4" - uuid "^3.1.0" - -"@0xproject/dev-utils@^1.0.3": - version "1.0.2" - dependencies: - "@0xproject/subproviders" "^1.0.3" - "@0xproject/types" "^1.0.1-rc.2" - "@0xproject/typescript-typings" "^1.0.3" - "@0xproject/utils" "^1.0.3" - "@0xproject/web3-wrapper" "^1.1.1" - ethereum-types "^1.0.3" - lodash "^4.17.4" - "@0xproject/fill-scenarios@^0.0.4": version "0.0.4" resolved "https://registry.yarnpkg.com/@0xproject/fill-scenarios/-/fill-scenarios-0.0.4.tgz#4d23c75abda7e9f117b698c0b8b142af07e0c69e" @@ -653,23 +622,6 @@ jsonschema "1.2.2" lodash.values "4.3.0" -"@0xproject/migrations@^1.0.3": - version "1.0.2" - dependencies: - "@0xproject/base-contract" "^1.0.3" - "@0xproject/order-utils" "^1.0.1-rc.1" - "@0xproject/sol-compiler" "^1.0.3" - "@0xproject/subproviders" "^1.0.3" - "@0xproject/typescript-typings" "^1.0.3" - "@0xproject/utils" "^1.0.3" - "@0xproject/web3-wrapper" "^1.1.1" - "@ledgerhq/hw-app-eth" "^4.3.0" - ethereum-types "^1.0.3" - ethers "3.0.22" - lodash "^4.17.4" - optionalDependencies: - "@ledgerhq/hw-transport-node-hid" "^4.3.0" - "@0xproject/order-utils@^0.0.7": version "0.0.7" resolved "https://registry.yarnpkg.com/@0xproject/order-utils/-/order-utils-0.0.7.tgz#eaa465782ea5745bdad54e1a851533172d993b7c" @@ -718,25 +670,6 @@ ethereumjs-util "5.1.5" lodash "4.17.10" -"@0xproject/order-utils@^1.0.1-rc.2": - version "1.0.1-rc.1" - dependencies: - "@0xproject/assert" "^1.0.3" - "@0xproject/base-contract" "^1.0.3" - "@0xproject/json-schemas" "^1.0.1-rc.2" - "@0xproject/sol-compiler" "^1.0.3" - "@0xproject/types" "^1.0.1-rc.2" - "@0xproject/typescript-typings" "^1.0.3" - "@0xproject/utils" "^1.0.3" - "@0xproject/web3-wrapper" "^1.1.1" - "@types/node" "^8.0.53" - bn.js "^4.11.8" - ethereum-types "^1.0.3" - ethereumjs-abi "0.6.5" - ethereumjs-util "^5.1.1" - ethers "3.0.22" - lodash "^4.17.4" - "@0xproject/order-watcher@^0.0.7": version "0.0.7" resolved "https://registry.yarnpkg.com/@0xproject/order-watcher/-/order-watcher-0.0.7.tgz#fbe019aa33447781096b5d562e7a3a4ec91a1da2" @@ -5203,9 +5136,9 @@ ethereumjs-wallet@~0.6.0: utf8 "^2.1.1" uuid "^2.0.1" -ethers@0xproject/ethers.js#eip-838-reasons, ethers@3.0.22: - version "3.0.18" - resolved "https://codeload.github.com/0xproject/ethers.js/tar.gz/b91342bd200d142af0165d6befddf783c8ae8447" +ethers@3.0.22: + version "3.0.22" + resolved "https://registry.npmjs.org/ethers/-/ethers-3.0.22.tgz#7fab1ea16521705837aa43c15831877b2716b436" dependencies: aes-js "3.0.0" bn.js "^4.4.0" @@ -7702,7 +7635,11 @@ jsonparse@^1.2.0: version "1.3.1" resolved "http://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" -jsonschema@*, jsonschema@^1.2.0: +jsonschema-draft4@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/jsonschema-draft4/-/jsonschema-draft4-1.0.0.tgz#f0af2005054f0f0ade7ea2118614b69dc512d865" + +jsonschema@*, jsonschema@1.2.4, jsonschema@^1.2.0: version "1.2.4" resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.2.4.tgz#a46bac5d3506a254465bc548876e267c6d0d6464" @@ -9373,6 +9310,14 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" +openapi-schema-validation@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/openapi-schema-validation/-/openapi-schema-validation-0.4.1.tgz#927e1277082ef61688239730470bfbbdd0f1268d" + dependencies: + jsonschema "1.2.4" + jsonschema-draft4 "^1.0.0" + swagger-schema-official "2.0.0-bab6bed" + opn-cli@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/opn-cli/-/opn-cli-3.1.0.tgz#f819ae6cae0b411bd0149b8560fe6c88adad20f8" @@ -12511,6 +12456,10 @@ svgo@^0.7.0: sax "~1.2.1" whet.extend "~0.9.9" +swagger-schema-official@2.0.0-bab6bed: + version "2.0.0-bab6bed" + resolved "https://registry.npmjs.org/swagger-schema-official/-/swagger-schema-official-2.0.0-bab6bed.tgz#70070468d6d2977ca5237b2e519ca7d06a2ea3fd" + swarm-js@0.1.37: version "0.1.37" resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.37.tgz#27d485317a340bbeec40292af783cc10acfa4663" -- cgit v1.2.3