Validate query and payload #20
117
src/get-config-for-method.test.js
Normal file
117
src/get-config-for-method.test.js
Normal file
@ -0,0 +1,117 @@
|
||||
import test from 'ava';
|
||||
import joi from 'joi';
|
||||
import
|
||||
getConfigForMethod, {
|
||||
whereMethods,
|
||||
includeMethods,
|
||||
payloadMethods,
|
||||
sequelizeOperators,
|
||||
} from './get-config-for-method.js';
|
||||
|
||||
test.beforeEach((t) => {
|
||||
t.context.attributeValidation = {
|
||||
myKey: joi.any(),
|
||||
};
|
||||
|
||||
t.context.associationValidation = {
|
||||
include: ['MyModel'],
|
||||
};
|
||||
|
||||
t.context.config = {
|
||||
cors: {},
|
||||
};
|
||||
});
|
||||
|
||||
test('get-config-for-method validate.query seqeulizeOperators', (t) => {
|
||||
whereMethods.forEach((method) => {
|
||||
const configForMethod = getConfigForMethod({ method });
|
||||
const { query } = configForMethod.validate;
|
||||
const configForMethodValidateQueryKeys = Object.keys(query);
|
||||
|
||||
t.truthy(
|
||||
query,
|
||||
`applies query validation for ${method}`
|
||||
);
|
||||
|
||||
Object.keys(sequelizeOperators).forEach((operator) => {
|
||||
t.truthy(
|
||||
configForMethodValidateQueryKeys.includes(operator),
|
||||
`applies sequelize operator "${operator}" in validate.where for ${method}`
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
test('get-config-for-method validate.query attributeValidation', (t) => {
|
||||
const { attributeValidation } = t.context;
|
||||
|
||||
whereMethods.forEach((method) => {
|
||||
const configForMethod = getConfigForMethod({ method, attributeValidation });
|
||||
const { query } = configForMethod.validate;
|
||||
|
||||
Object.keys(attributeValidation).forEach((key) => {
|
||||
t.truthy(
|
||||
query[key]
|
||||
, `applies attributeValidation (${key}) to validate.query`
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
test('get-config-for-method validate.query associationValidation', (t) => {
|
||||
const { attributeValidation, associationValidation } = t.context;
|
||||
|
||||
includeMethods.forEach((method) => {
|
||||
const configForMethod = getConfigForMethod({
|
||||
method,
|
||||
attributeValidation,
|
||||
associationValidation,
|
||||
});
|
||||
const { query } = configForMethod.validate;
|
||||
|
||||
Object.keys(attributeValidation).forEach((key) => {
|
||||
t.truthy(
|
||||
query[key]
|
||||
, `applies attributeValidation (${key}) to validate.query when include should be applied`
|
||||
);
|
||||
});
|
||||
|
||||
Object.keys(associationValidation).forEach((key) => {
|
||||
t.truthy(
|
||||
query[key]
|
||||
, `applies associationValidation (${key}) to validate.query when include should be applied`
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
test('get-config-for-method validate.payload associationValidation', (t) => {
|
||||
const { attributeValidation } = t.context;
|
||||
|
||||
payloadMethods.forEach((method) => {
|
||||
const configForMethod = getConfigForMethod({ method, attributeValidation });
|
||||
const { payload } = configForMethod.validate;
|
||||
|
||||
Object.keys(attributeValidation).forEach((key) => {
|
||||
t.truthy(
|
||||
payload[key]
|
||||
, `applies attributeValidation (${key}) to validate.payload`
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
test('get-config-for-method does not modify initial config on multiple passes', (t) => {
|
||||
const { config } = t.context;
|
||||
const originalConfig = { ...config };
|
||||
|
||||
whereMethods.forEach((method) => {
|
||||
getConfigForMethod({ method, config });
|
||||
});
|
||||
|
||||
t.deepEqual(
|
||||
config
|
||||
, originalConfig
|
||||
, 'does not modify the original config object'
|
||||
);
|
||||
});
|
Loading…
Reference in New Issue
Block a user