mirror of
https://github.com/Unleash/unleash.git
synced 2025-06-23 01:16:27 +02:00
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
This commit is contained in:
parent
de4ba0970f
commit
286b016b04
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
exports[`apiTokenSchema empty 1`] = `
|
exports[`apiTokenSchema empty 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"data": Object {},
|
|
||||||
"errors": Array [
|
"errors": Array [
|
||||||
Object {
|
Object {
|
||||||
"instancePath": "",
|
"instancePath": "",
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
exports[`changePasswordSchema empty 1`] = `
|
exports[`changePasswordSchema empty 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"data": Object {},
|
|
||||||
"errors": Array [
|
"errors": Array [
|
||||||
Object {
|
Object {
|
||||||
"instancePath": "",
|
"instancePath": "",
|
||||||
|
@ -2,11 +2,6 @@
|
|||||||
|
|
||||||
exports[`constraintSchema invalid operator name 1`] = `
|
exports[`constraintSchema invalid operator name 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"data": Object {
|
|
||||||
"contextName": "a",
|
|
||||||
"operator": "b",
|
|
||||||
"value": "1",
|
|
||||||
},
|
|
||||||
"errors": Array [
|
"errors": Array [
|
||||||
Object {
|
Object {
|
||||||
"instancePath": "/operator",
|
"instancePath": "/operator",
|
||||||
@ -40,11 +35,6 @@ Object {
|
|||||||
|
|
||||||
exports[`constraintSchema invalid value type 1`] = `
|
exports[`constraintSchema invalid value type 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"data": Object {
|
|
||||||
"contextName": "a",
|
|
||||||
"operator": "NUM_LTE",
|
|
||||||
"value": 1,
|
|
||||||
},
|
|
||||||
"errors": Array [
|
"errors": Array [
|
||||||
Object {
|
Object {
|
||||||
"instancePath": "/value",
|
"instancePath": "/value",
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
exports[`contextFieldSchema empty 1`] = `
|
exports[`contextFieldSchema empty 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"data": Object {},
|
|
||||||
"errors": Array [
|
"errors": Array [
|
||||||
Object {
|
Object {
|
||||||
"instancePath": "",
|
"instancePath": "",
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
exports[`emailSchema 1`] = `
|
exports[`emailSchema 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"data": Object {},
|
|
||||||
"errors": Array [
|
"errors": Array [
|
||||||
Object {
|
Object {
|
||||||
"instancePath": "",
|
"instancePath": "",
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
exports[`featureEnvironmentSchema empty 1`] = `
|
exports[`featureEnvironmentSchema empty 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"data": Object {},
|
|
||||||
"errors": Array [
|
"errors": Array [
|
||||||
Object {
|
Object {
|
||||||
"instancePath": "",
|
"instancePath": "",
|
||||||
|
@ -2,19 +2,6 @@
|
|||||||
|
|
||||||
exports[`featureSchema constraints 1`] = `
|
exports[`featureSchema constraints 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"data": Object {
|
|
||||||
"name": "a",
|
|
||||||
"strategies": Array [
|
|
||||||
Object {
|
|
||||||
"constraints": Array [
|
|
||||||
Object {
|
|
||||||
"contextName": "a",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
"name": "a",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
"errors": Array [
|
"errors": Array [
|
||||||
Object {
|
Object {
|
||||||
"instancePath": "/strategies/0",
|
"instancePath": "/strategies/0",
|
||||||
@ -32,27 +19,6 @@ Object {
|
|||||||
|
|
||||||
exports[`featureSchema overrides 1`] = `
|
exports[`featureSchema overrides 1`] = `
|
||||||
Object {
|
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 [
|
"errors": Array [
|
||||||
Object {
|
Object {
|
||||||
"instancePath": "/variants/0/overrides/0/values",
|
"instancePath": "/variants/0/overrides/0/values",
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
exports[`featureTypeSchema empty 1`] = `
|
exports[`featureTypeSchema empty 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"data": Object {},
|
|
||||||
"errors": Array [
|
"errors": Array [
|
||||||
Object {
|
Object {
|
||||||
"instancePath": "",
|
"instancePath": "",
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
exports[`meSchema empty 1`] = `
|
exports[`meSchema empty 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"data": Object {},
|
|
||||||
"errors": Array [
|
"errors": Array [
|
||||||
Object {
|
Object {
|
||||||
"instancePath": "",
|
"instancePath": "",
|
||||||
@ -20,11 +19,6 @@ Object {
|
|||||||
|
|
||||||
exports[`meSchema missing permissions 1`] = `
|
exports[`meSchema missing permissions 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"data": Object {
|
|
||||||
"user": Object {
|
|
||||||
"id": 1,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"errors": Array [
|
"errors": Array [
|
||||||
Object {
|
Object {
|
||||||
"instancePath": "",
|
"instancePath": "",
|
||||||
@ -42,13 +36,6 @@ Object {
|
|||||||
|
|
||||||
exports[`meSchema missing splash 1`] = `
|
exports[`meSchema missing splash 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"data": Object {
|
|
||||||
"feedback": Array [],
|
|
||||||
"permissions": Array [],
|
|
||||||
"user": Object {
|
|
||||||
"id": 1,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"errors": Array [
|
"errors": Array [
|
||||||
Object {
|
Object {
|
||||||
"instancePath": "",
|
"instancePath": "",
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
exports[`roleSchema 1`] = `
|
exports[`roleSchema 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"data": Object {},
|
|
||||||
"errors": Array [
|
"errors": Array [
|
||||||
Object {
|
Object {
|
||||||
"instancePath": "",
|
"instancePath": "",
|
||||||
|
@ -2,9 +2,6 @@
|
|||||||
|
|
||||||
exports[`sortOrderSchema invalid value type 1`] = `
|
exports[`sortOrderSchema invalid value type 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"data": Object {
|
|
||||||
"a": "1",
|
|
||||||
},
|
|
||||||
"errors": Array [
|
"errors": Array [
|
||||||
Object {
|
Object {
|
||||||
"instancePath": "/a",
|
"instancePath": "/a",
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
exports[`strategySchema 1`] = `
|
exports[`strategySchema 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"data": Object {},
|
|
||||||
"errors": Array [
|
"errors": Array [
|
||||||
Object {
|
Object {
|
||||||
"instancePath": "",
|
"instancePath": "",
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
exports[`tokenUserSchema 1`] = `
|
exports[`tokenUserSchema 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"data": Object {},
|
|
||||||
"errors": Array [
|
"errors": Array [
|
||||||
Object {
|
Object {
|
||||||
"instancePath": "",
|
"instancePath": "",
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
exports[`validatePasswordSchema empty 1`] = `
|
exports[`validatePasswordSchema empty 1`] = `
|
||||||
Object {
|
Object {
|
||||||
"data": Object {},
|
|
||||||
"errors": Array [
|
"errors": Array [
|
||||||
Object {
|
Object {
|
||||||
"instancePath": "",
|
"instancePath": "",
|
||||||
|
@ -14,6 +14,7 @@ test('featureSchema', () => {
|
|||||||
operator: 'IN',
|
operator: 'IN',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
segments: [1],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
variants: [
|
variants: [
|
||||||
|
@ -17,6 +17,12 @@ export const featureStrategySchema = {
|
|||||||
sortOrder: {
|
sortOrder: {
|
||||||
type: 'number',
|
type: 'number',
|
||||||
},
|
},
|
||||||
|
segments: {
|
||||||
|
type: 'array',
|
||||||
|
items: {
|
||||||
|
type: 'number',
|
||||||
|
},
|
||||||
|
},
|
||||||
constraints: {
|
constraints: {
|
||||||
type: 'array',
|
type: 'array',
|
||||||
items: {
|
items: {
|
||||||
|
@ -3,9 +3,8 @@ import addFormats from 'ajv-formats';
|
|||||||
import { SchemaId, schemas } from './index';
|
import { SchemaId, schemas } from './index';
|
||||||
import { omitKeys } from '../util/omit-keys';
|
import { omitKeys } from '../util/omit-keys';
|
||||||
|
|
||||||
interface ISchemaValidationErrors<T> {
|
interface ISchemaValidationErrors {
|
||||||
schema: SchemaId;
|
schema: SchemaId;
|
||||||
data: T;
|
|
||||||
errors: ErrorObject[];
|
errors: ErrorObject[];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -17,14 +16,13 @@ const ajv = new Ajv({
|
|||||||
|
|
||||||
addFormats(ajv, ['date-time']);
|
addFormats(ajv, ['date-time']);
|
||||||
|
|
||||||
export const validateSchema = <T>(
|
export const validateSchema = (
|
||||||
schema: SchemaId,
|
schema: SchemaId,
|
||||||
data: T,
|
data: unknown,
|
||||||
): ISchemaValidationErrors<T> | undefined => {
|
): ISchemaValidationErrors | undefined => {
|
||||||
if (!ajv.validate(schema, data)) {
|
if (!ajv.validate(schema, data)) {
|
||||||
return {
|
return {
|
||||||
schema,
|
schema,
|
||||||
data: data,
|
|
||||||
errors: ajv.errors ?? [],
|
errors: ajv.errors ?? [],
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -748,6 +748,12 @@ Object {
|
|||||||
"parameters": Object {
|
"parameters": Object {
|
||||||
"$ref": "#/components/schemas/parametersSchema",
|
"$ref": "#/components/schemas/parametersSchema",
|
||||||
},
|
},
|
||||||
|
"segments": Object {
|
||||||
|
"items": Object {
|
||||||
|
"type": "number",
|
||||||
|
},
|
||||||
|
"type": "array",
|
||||||
|
},
|
||||||
"sortOrder": Object {
|
"sortOrder": Object {
|
||||||
"type": "number",
|
"type": "number",
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user