From 286b016b0486dbc39e323e6296200b78bcdbc366 Mon Sep 17 00:00:00 2001 From: olav Date: Fri, 24 Jun 2022 13:44:16 +0200 Subject: [PATCH] refactor: remove response data from schema validation logging (#1748) * refactor: remove response data from schema validation logging * refactor: update validation error snapshots * refactor: add missing segments field to featureStrategySchema --- .../api-token-schema.test.ts.snap | 1 - .../change-password-schema.test.ts.snap | 1 - .../constraint-schema.test.ts.snap | 10 ------ .../context-field-schema.test.ts.snap | 1 - .../__snapshots__/email-schema.test.ts.snap | 1 - .../feature-environment-schema.test.ts.snap | 1 - .../__snapshots__/feature-schema.test.ts.snap | 34 ------------------- .../feature-type-schema.test.ts.snap | 1 - .../spec/__snapshots__/me-schema.test.ts.snap | 13 ------- .../__snapshots__/role-schema.test.ts.snap | 1 - .../sort-order-schema.test.ts.snap | 3 -- .../strategy-schema.test.ts.snap | 1 - .../token-user-schema.test.ts.snap | 1 - .../validate-password-schema.test.ts.snap | 1 - src/lib/openapi/spec/feature-schema.test.ts | 1 + .../openapi/spec/feature-strategy-schema.ts | 6 ++++ src/lib/openapi/validate.ts | 10 +++--- .../__snapshots__/openapi.e2e.test.ts.snap | 6 ++++ 18 files changed, 17 insertions(+), 76 deletions(-) diff --git a/src/lib/openapi/spec/__snapshots__/api-token-schema.test.ts.snap b/src/lib/openapi/spec/__snapshots__/api-token-schema.test.ts.snap index 47081ca357..7a3c062650 100644 --- a/src/lib/openapi/spec/__snapshots__/api-token-schema.test.ts.snap +++ b/src/lib/openapi/spec/__snapshots__/api-token-schema.test.ts.snap @@ -2,7 +2,6 @@ exports[`apiTokenSchema empty 1`] = ` Object { - "data": Object {}, "errors": Array [ Object { "instancePath": "", diff --git a/src/lib/openapi/spec/__snapshots__/change-password-schema.test.ts.snap b/src/lib/openapi/spec/__snapshots__/change-password-schema.test.ts.snap index 65151ce25e..44f9019263 100644 --- a/src/lib/openapi/spec/__snapshots__/change-password-schema.test.ts.snap +++ b/src/lib/openapi/spec/__snapshots__/change-password-schema.test.ts.snap @@ -2,7 +2,6 @@ exports[`changePasswordSchema empty 1`] = ` Object { - "data": Object {}, "errors": Array [ Object { "instancePath": "", diff --git a/src/lib/openapi/spec/__snapshots__/constraint-schema.test.ts.snap b/src/lib/openapi/spec/__snapshots__/constraint-schema.test.ts.snap index f6e5ab0b48..b3a81622fd 100644 --- a/src/lib/openapi/spec/__snapshots__/constraint-schema.test.ts.snap +++ b/src/lib/openapi/spec/__snapshots__/constraint-schema.test.ts.snap @@ -2,11 +2,6 @@ exports[`constraintSchema invalid operator name 1`] = ` Object { - "data": Object { - "contextName": "a", - "operator": "b", - "value": "1", - }, "errors": Array [ Object { "instancePath": "/operator", @@ -40,11 +35,6 @@ Object { exports[`constraintSchema invalid value type 1`] = ` Object { - "data": Object { - "contextName": "a", - "operator": "NUM_LTE", - "value": 1, - }, "errors": Array [ Object { "instancePath": "/value", diff --git a/src/lib/openapi/spec/__snapshots__/context-field-schema.test.ts.snap b/src/lib/openapi/spec/__snapshots__/context-field-schema.test.ts.snap index 97ceeef2cf..ca664c51b1 100644 --- a/src/lib/openapi/spec/__snapshots__/context-field-schema.test.ts.snap +++ b/src/lib/openapi/spec/__snapshots__/context-field-schema.test.ts.snap @@ -2,7 +2,6 @@ exports[`contextFieldSchema empty 1`] = ` Object { - "data": Object {}, "errors": Array [ Object { "instancePath": "", diff --git a/src/lib/openapi/spec/__snapshots__/email-schema.test.ts.snap b/src/lib/openapi/spec/__snapshots__/email-schema.test.ts.snap index ff9ce36771..423c136518 100644 --- a/src/lib/openapi/spec/__snapshots__/email-schema.test.ts.snap +++ b/src/lib/openapi/spec/__snapshots__/email-schema.test.ts.snap @@ -2,7 +2,6 @@ exports[`emailSchema 1`] = ` Object { - "data": Object {}, "errors": Array [ Object { "instancePath": "", diff --git a/src/lib/openapi/spec/__snapshots__/feature-environment-schema.test.ts.snap b/src/lib/openapi/spec/__snapshots__/feature-environment-schema.test.ts.snap index 28e0fd54af..21618b8c6c 100644 --- a/src/lib/openapi/spec/__snapshots__/feature-environment-schema.test.ts.snap +++ b/src/lib/openapi/spec/__snapshots__/feature-environment-schema.test.ts.snap @@ -2,7 +2,6 @@ exports[`featureEnvironmentSchema empty 1`] = ` Object { - "data": Object {}, "errors": Array [ Object { "instancePath": "", diff --git a/src/lib/openapi/spec/__snapshots__/feature-schema.test.ts.snap b/src/lib/openapi/spec/__snapshots__/feature-schema.test.ts.snap index 02deeb4671..97912e538a 100644 --- a/src/lib/openapi/spec/__snapshots__/feature-schema.test.ts.snap +++ b/src/lib/openapi/spec/__snapshots__/feature-schema.test.ts.snap @@ -2,19 +2,6 @@ exports[`featureSchema constraints 1`] = ` Object { - "data": Object { - "name": "a", - "strategies": Array [ - Object { - "constraints": Array [ - Object { - "contextName": "a", - }, - ], - "name": "a", - }, - ], - }, "errors": Array [ Object { "instancePath": "/strategies/0", @@ -32,27 +19,6 @@ Object { exports[`featureSchema overrides 1`] = ` Object { - "data": Object { - "name": "a", - "variants": Array [ - Object { - "name": "a", - "overrides": Array [ - Object { - "contextName": "a", - "values": "b", - }, - ], - "payload": Object { - "type": "a", - "value": "b", - }, - "stickiness": "a", - "weight": 1, - "weightType": "a", - }, - ], - }, "errors": Array [ Object { "instancePath": "/variants/0/overrides/0/values", diff --git a/src/lib/openapi/spec/__snapshots__/feature-type-schema.test.ts.snap b/src/lib/openapi/spec/__snapshots__/feature-type-schema.test.ts.snap index 1fd9d01904..a0d9e2f3db 100644 --- a/src/lib/openapi/spec/__snapshots__/feature-type-schema.test.ts.snap +++ b/src/lib/openapi/spec/__snapshots__/feature-type-schema.test.ts.snap @@ -2,7 +2,6 @@ exports[`featureTypeSchema empty 1`] = ` Object { - "data": Object {}, "errors": Array [ Object { "instancePath": "", diff --git a/src/lib/openapi/spec/__snapshots__/me-schema.test.ts.snap b/src/lib/openapi/spec/__snapshots__/me-schema.test.ts.snap index 59cd54e38d..0a801d871c 100644 --- a/src/lib/openapi/spec/__snapshots__/me-schema.test.ts.snap +++ b/src/lib/openapi/spec/__snapshots__/me-schema.test.ts.snap @@ -2,7 +2,6 @@ exports[`meSchema empty 1`] = ` Object { - "data": Object {}, "errors": Array [ Object { "instancePath": "", @@ -20,11 +19,6 @@ Object { exports[`meSchema missing permissions 1`] = ` Object { - "data": Object { - "user": Object { - "id": 1, - }, - }, "errors": Array [ Object { "instancePath": "", @@ -42,13 +36,6 @@ Object { exports[`meSchema missing splash 1`] = ` Object { - "data": Object { - "feedback": Array [], - "permissions": Array [], - "user": Object { - "id": 1, - }, - }, "errors": Array [ Object { "instancePath": "", diff --git a/src/lib/openapi/spec/__snapshots__/role-schema.test.ts.snap b/src/lib/openapi/spec/__snapshots__/role-schema.test.ts.snap index 01b1ffea7d..c90a56fffd 100644 --- a/src/lib/openapi/spec/__snapshots__/role-schema.test.ts.snap +++ b/src/lib/openapi/spec/__snapshots__/role-schema.test.ts.snap @@ -2,7 +2,6 @@ exports[`roleSchema 1`] = ` Object { - "data": Object {}, "errors": Array [ Object { "instancePath": "", diff --git a/src/lib/openapi/spec/__snapshots__/sort-order-schema.test.ts.snap b/src/lib/openapi/spec/__snapshots__/sort-order-schema.test.ts.snap index 3f6fbd77eb..84d3d12c79 100644 --- a/src/lib/openapi/spec/__snapshots__/sort-order-schema.test.ts.snap +++ b/src/lib/openapi/spec/__snapshots__/sort-order-schema.test.ts.snap @@ -2,9 +2,6 @@ exports[`sortOrderSchema invalid value type 1`] = ` Object { - "data": Object { - "a": "1", - }, "errors": Array [ Object { "instancePath": "/a", diff --git a/src/lib/openapi/spec/__snapshots__/strategy-schema.test.ts.snap b/src/lib/openapi/spec/__snapshots__/strategy-schema.test.ts.snap index cecaf55941..4d7204eb85 100644 --- a/src/lib/openapi/spec/__snapshots__/strategy-schema.test.ts.snap +++ b/src/lib/openapi/spec/__snapshots__/strategy-schema.test.ts.snap @@ -2,7 +2,6 @@ exports[`strategySchema 1`] = ` Object { - "data": Object {}, "errors": Array [ Object { "instancePath": "", diff --git a/src/lib/openapi/spec/__snapshots__/token-user-schema.test.ts.snap b/src/lib/openapi/spec/__snapshots__/token-user-schema.test.ts.snap index c2147b9a73..f44409f3d7 100644 --- a/src/lib/openapi/spec/__snapshots__/token-user-schema.test.ts.snap +++ b/src/lib/openapi/spec/__snapshots__/token-user-schema.test.ts.snap @@ -2,7 +2,6 @@ exports[`tokenUserSchema 1`] = ` Object { - "data": Object {}, "errors": Array [ Object { "instancePath": "", diff --git a/src/lib/openapi/spec/__snapshots__/validate-password-schema.test.ts.snap b/src/lib/openapi/spec/__snapshots__/validate-password-schema.test.ts.snap index a2572cc94b..1eb45536d0 100644 --- a/src/lib/openapi/spec/__snapshots__/validate-password-schema.test.ts.snap +++ b/src/lib/openapi/spec/__snapshots__/validate-password-schema.test.ts.snap @@ -2,7 +2,6 @@ exports[`validatePasswordSchema empty 1`] = ` Object { - "data": Object {}, "errors": Array [ Object { "instancePath": "", diff --git a/src/lib/openapi/spec/feature-schema.test.ts b/src/lib/openapi/spec/feature-schema.test.ts index a1f9c7409a..61f2bc2a8e 100644 --- a/src/lib/openapi/spec/feature-schema.test.ts +++ b/src/lib/openapi/spec/feature-schema.test.ts @@ -14,6 +14,7 @@ test('featureSchema', () => { operator: 'IN', }, ], + segments: [1], }, ], variants: [ diff --git a/src/lib/openapi/spec/feature-strategy-schema.ts b/src/lib/openapi/spec/feature-strategy-schema.ts index 652110661e..94af957d83 100644 --- a/src/lib/openapi/spec/feature-strategy-schema.ts +++ b/src/lib/openapi/spec/feature-strategy-schema.ts @@ -17,6 +17,12 @@ export const featureStrategySchema = { sortOrder: { type: 'number', }, + segments: { + type: 'array', + items: { + type: 'number', + }, + }, constraints: { type: 'array', items: { diff --git a/src/lib/openapi/validate.ts b/src/lib/openapi/validate.ts index fbbb6066be..36b9a678fd 100644 --- a/src/lib/openapi/validate.ts +++ b/src/lib/openapi/validate.ts @@ -3,9 +3,8 @@ import addFormats from 'ajv-formats'; import { SchemaId, schemas } from './index'; import { omitKeys } from '../util/omit-keys'; -interface ISchemaValidationErrors { +interface ISchemaValidationErrors { schema: SchemaId; - data: T; errors: ErrorObject[]; } @@ -17,14 +16,13 @@ const ajv = new Ajv({ addFormats(ajv, ['date-time']); -export const validateSchema = ( +export const validateSchema = ( schema: SchemaId, - data: T, -): ISchemaValidationErrors | undefined => { + data: unknown, +): ISchemaValidationErrors | undefined => { if (!ajv.validate(schema, data)) { return { schema, - data: data, errors: ajv.errors ?? [], }; } diff --git a/src/test/e2e/api/openapi/__snapshots__/openapi.e2e.test.ts.snap b/src/test/e2e/api/openapi/__snapshots__/openapi.e2e.test.ts.snap index 0d5d2bce03..e1f5bf6709 100644 --- a/src/test/e2e/api/openapi/__snapshots__/openapi.e2e.test.ts.snap +++ b/src/test/e2e/api/openapi/__snapshots__/openapi.e2e.test.ts.snap @@ -748,6 +748,12 @@ Object { "parameters": Object { "$ref": "#/components/schemas/parametersSchema", }, + "segments": Object { + "items": Object { + "type": "number", + }, + "type": "array", + }, "sortOrder": Object { "type": "number", },