0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2025-02-17 22:04:19 -05:00

test(test): validate swagger.json using openapi-schema-validator (#1445)

This commit is contained in:
IceHe.xyz 2022-07-07 20:52:34 +08:00 committed by GitHub
parent ff6f2235ea
commit 6dea366032
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 39 additions and 3 deletions

View file

@ -25,6 +25,8 @@
"got": "^11.8.2",
"jest": "^27.5.1",
"node-fetch": "^2.6.7",
"openapi-schema-validator": "^12.0.0",
"openapi-types": "^12.0.0",
"prettier": "^2.3.2",
"text-encoder": "^0.0.4",
"ts-node": "^10.0.0",

View file

@ -1,7 +1,19 @@
import OpenApiSchemaValidator from 'openapi-schema-validator';
import { OpenAPI } from 'openapi-types';
import api from '@/api';
describe('Swagger check', () => {
it('should succeed to provide swagger.json', async () => {
expect(await api.get('swagger.json')).toHaveProperty('statusCode', 200);
it('should provide a valid swagger.json', async () => {
const response = await api.get('swagger.json');
expect(response).toHaveProperty('statusCode', 200);
expect(response.headers['content-type']).toContain('application/json');
expect(() => {
const object: unknown = JSON.parse(response.body);
const validator = new OpenApiSchemaValidator({ version: 3 });
const result = validator.validate(object as OpenAPI.Document);
expect(result.errors).toEqual([]);
}).not.toThrow();
});
});

24
pnpm-lock.yaml generated
View file

@ -1034,6 +1034,8 @@ importers:
got: ^11.8.2
jest: ^27.5.1
node-fetch: ^2.6.7
openapi-schema-validator: ^12.0.0
openapi-types: ^12.0.0
prettier: ^2.3.2
text-encoder: ^0.0.4
ts-node: ^10.0.0
@ -1052,6 +1054,8 @@ importers:
got: 11.8.3
jest: 27.5.1_ts-node@10.7.0
node-fetch: 2.6.7
openapi-schema-validator: 12.0.0
openapi-types: 12.0.0
prettier: 2.5.1
text-encoder: 0.0.4
ts-node: 10.7.0_drbbnc2wk7uwp4gsdsdvgzqgya
@ -5810,6 +5814,15 @@ packages:
indent-string: 4.0.0
dev: true
/ajv-formats/2.1.1:
resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==}
peerDependenciesMeta:
ajv:
optional: true
dependencies:
ajv: 8.8.2
dev: true
/ajv/6.12.6:
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
dependencies:
@ -12071,6 +12084,15 @@ packages:
/only/0.0.2:
resolution: {integrity: sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q=}
/openapi-schema-validator/12.0.0:
resolution: {integrity: sha512-dtQ5iCiCluL/SXmd5LWqfPXvN/WbVJeCp+3+exF6BHBN3fry5tNAhFllZICYHQ2kTfQxrfwbQcy0fqaw9wOb+w==}
dependencies:
ajv: 8.8.2
ajv-formats: 2.1.1
lodash.merge: 4.6.2
openapi-types: 12.0.0
dev: true
/openapi-types/12.0.0:
resolution: {integrity: sha512-6Wd9k8nmGQHgCbehZCP6wwWcfXcvinhybUTBatuhjRsCxUIujuYFZc9QnGeae75CyHASewBtxs0HX/qwREReUw==}
dev: true
@ -14982,7 +15004,7 @@ packages:
'@types/jest': 27.4.1
bs-logger: 0.2.6
fast-json-stable-stringify: 2.1.0
jest: 27.5.1
jest: 27.5.1_ts-node@10.7.0
jest-util: 27.5.1
json5: 2.2.1
lodash.memoize: 4.1.2