Archived
2

number prefixes are now not allowed to contain numbers

This commit is contained in:
VLE2FE 2020-05-15 15:14:18 +02:00
parent 4100fb428e
commit ec03e0699c
3 changed files with 34 additions and 21 deletions

13
.idea/libraries/dist.xml Normal file
View File

@ -0,0 +1,13 @@
<component name="libraryTable">
<library name="dist" type="javaScript">
<properties>
<sourceFilesUrls>
<item url="file://$PROJECT_DIR$/dist" />
</sourceFilesUrls>
</properties>
<CLASSES>
<root url="file://$PROJECT_DIR$/dist" />
</CLASSES>
<SOURCES />
</library>
</component>

View File

@ -4,7 +4,6 @@ import TemplateTreatmentModel from '../models/treatment_template';
import TemplateMeasurementModel from '../models/measurement_template';
import TestHelper from "../test/helper";
// TODO: check number prefix to have no numbers
describe('/template', () => {
let server;
@ -371,14 +370,14 @@ describe('/template', () => {
res: {status: 'Invalid body format', details: '"parameters[0].name" is required'}
});
});
it('rejects a missing number prefix', done => {
it('rejects a number prefix containing numbers', done => {
TestHelper.request(server, done, {
method: 'post',
url: '/template/treatment/new',
auth: {basic: 'admin'},
httpStatus: 400,
req: {name: 'heat aging', parameters: [{name: 'time', range: {min: 1}}]},
res: {status: 'Invalid body format', details: '"number_prefix" is required'}
req: {name: 'heat aging', number_prefix: 'AB5', parameters: [{name: 'time', range: {min: 1}}]},
res: {status: 'Invalid body format', details: '"number_prefix" with value "AB5" fails to match the required pattern: /^[a-zA-Z]+$/'}
});
});
it('rejects a missing parameter range', done => {

View File

@ -1,35 +1,36 @@
import joi from '@hapi/joi';
import Joi from '@hapi/joi';
import IdValidate from './id';
export default class TemplateValidate {
private static template = {
name: joi.string()
name: Joi.string()
.max(128),
version: joi.number()
version: Joi.number()
.min(1),
number_prefix: joi.string()
number_prefix: Joi.string()
.pattern(/^[a-zA-Z]+$/)
.min(1)
.max(16),
parameters: joi.array()
parameters: Joi.array()
.min(1)
.items(
joi.object({
name: joi.string()
Joi.object({
name: Joi.string()
.max(128)
.required(),
range: joi.object({
values: joi.array()
range: Joi.object({
values: Joi.array()
.min(1),
min: joi.number(),
min: Joi.number(),
max: joi.number(),
max: Joi.number(),
type: joi.string()
type: Joi.string()
.valid('array')
})
.oxor('values', 'min')
@ -45,14 +46,14 @@ export default class TemplateValidate {
static input (data, param, template) { // validate data, param: new(everything required)/change(available attributes are validated)
if (param === 'new') {
if (template === 'treatment') {
return joi.object({
return Joi.object({
name: this.template.name.required(),
number_prefix: this.template.number_prefix.required(),
parameters: this.template.parameters.required()
}).validate(data);
}
else {
return joi.object({
return Joi.object({
name: this.template.name.required(),
parameters: this.template.parameters.required()
}).validate(data);
@ -60,14 +61,14 @@ export default class TemplateValidate {
}
else if (param === 'change') {
if (template === 'treatment') {
return joi.object({
return Joi.object({
name: this.template.name,
number_prefix: this.template.number_prefix,
parameters: this.template.parameters
}).validate(data);
}
else {
return joi.object({
return Joi.object({
name: this.template.name,
parameters: this.template.parameters
}).validate(data);
@ -98,7 +99,7 @@ export default class TemplateValidate {
parameters: this.template.parameters
};
}
const {value, error} = joi.object(joiObject).validate(data, {stripUnknown: true});
const {value, error} = Joi.object(joiObject).validate(data, {stripUnknown: true});
return error !== undefined? null : value;
}
}