mirror of
https://github.com/matt-fidd/stratos.git
synced 2026-01-01 22:59:28 +00:00
348 lines
6.3 KiB
JavaScript
348 lines
6.3 KiB
JavaScript
'use strict';
|
|
|
|
const validator = require('../validator');
|
|
|
|
describe('validEmail', () => {
|
|
test('Valid email address', () => {
|
|
const email = 'bob@bob.com';
|
|
|
|
expect(validator.validEmail(email)).toBeTrue();
|
|
});
|
|
|
|
test('Invalid email address', () => {
|
|
const email = 'bobbobcom';
|
|
|
|
expect(validator.validEmail(email)).toBeFalse();
|
|
});
|
|
|
|
test('Invalid email address with @', () => {
|
|
const email = 'bob@bobcom';
|
|
|
|
expect(validator.validEmail(email)).toBeFalse();
|
|
});
|
|
|
|
test('Obscure valid email address', () => {
|
|
const email = 'jimmy.bob+joe@google.edu.gov.uk';
|
|
|
|
expect(validator.validEmail(email)).toBeTrue();
|
|
});
|
|
|
|
test('Even more obscure valid email address', () => {
|
|
// TODO more obscure email address
|
|
const email = 'bob@bob.com';
|
|
|
|
expect(validator.validEmail(email)).toBeTrue();
|
|
});
|
|
});
|
|
|
|
describe('passwordsMatch', () => {
|
|
test('Passwords match', () => {
|
|
const p1 = 'password123';
|
|
|
|
expect(validator.passwordsMatch(p1, p1)).toBeTrue();
|
|
});
|
|
|
|
test('Passwords do not match', () => {
|
|
const p1 = 'bobby';
|
|
const p2 = 'jimmy';
|
|
|
|
expect(validator.passwordsMatch(p1, p2)).toBeFalse();
|
|
});
|
|
|
|
test('Passwords match and contain special characters', () => {
|
|
const p1 = 'p2 ssw_0 rd&--1 t3';
|
|
|
|
expect(validator.passwordsMatch(p1, p1)).toBeTrue();
|
|
});
|
|
|
|
test('Passwords do not match and contain special characters', () => {
|
|
const p1 = 'p2ssw_0rd&--1t3';
|
|
const p2 = 'this-is.././really 99(not) +the+[same';
|
|
|
|
expect(validator.passwordsMatch(p1, p2)).toBeFalse();
|
|
});
|
|
|
|
test('Passwords match but are not strings', () => {
|
|
const p1 = { password: 'password123' };
|
|
|
|
expect(validator.passwordsMatch(p1, p1)).toBeFalse();
|
|
});
|
|
|
|
test('Passwords do not match and are not strings', () => {
|
|
const p1 = { password: 'password123' };
|
|
const p2 = { password: 'this is not the same' };
|
|
|
|
expect(validator.passwordsMatch(p1, p2)).toBeFalse();
|
|
});
|
|
|
|
test('Passwords do not match but differ by whitespace', () => {
|
|
const p1 = 'password123';
|
|
const p2 = 'password 123';
|
|
|
|
expect(validator.passwordsMatch(p1, p2)).toBeFalse();
|
|
});
|
|
});
|
|
|
|
describe('validate', () => {
|
|
test('All required fields filled in', () => {
|
|
const body = {
|
|
name: 'Bob',
|
|
message: 'Hi Jim!'
|
|
};
|
|
|
|
const fields = [
|
|
'name',
|
|
'message'
|
|
];
|
|
|
|
const result = validator.validate(body, fields);
|
|
|
|
expect(result).toBeObject();
|
|
expect(result).toContainKey('fields');
|
|
expect(result.fields.get('name')).toBe('Bob');
|
|
expect(result.fields.get('message')).toBe('Hi Jim!');
|
|
});
|
|
|
|
test('Required fields missing', () => {
|
|
const body = {
|
|
dob: '01/01/01'
|
|
};
|
|
|
|
const fields = [
|
|
'name',
|
|
'message'
|
|
];
|
|
|
|
expect(() => {
|
|
validator.validate(body, fields);
|
|
}).toThrow('missing');
|
|
});
|
|
|
|
test('Unrequired fields added to map', () => {
|
|
const body = {
|
|
name: 'Bob',
|
|
message: 'Hi Jim! '
|
|
};
|
|
|
|
const fields = [
|
|
'name'
|
|
];
|
|
|
|
const result = validator.validate(body, fields);
|
|
|
|
expect(result).toBeObject();
|
|
expect(result).toContainKey('fields');
|
|
expect(result.fields.get('name')).toBe('Bob');
|
|
expect(result.fields.get('message')).toBe('Hi Jim!');
|
|
});
|
|
|
|
test('Valid email validation', () => {
|
|
const body = {
|
|
name: 'Bob',
|
|
message: 'Hi Jim!',
|
|
email: 'bob@bob.com'
|
|
};
|
|
|
|
const fields = [
|
|
'name',
|
|
'message',
|
|
'email'
|
|
];
|
|
|
|
const validation = {
|
|
email: 'email'
|
|
};
|
|
|
|
const result = validator.validate(body, fields, validation);
|
|
|
|
expect(result).toBeObject();
|
|
expect(result).toContainKey('fields');
|
|
expect(result.fields.get('email')).toBe('bob@bob.com');
|
|
});
|
|
|
|
test('Invalid email validation', () => {
|
|
const body = {
|
|
name: 'Bob',
|
|
message: 'Hi Jim!',
|
|
email: 'bobbobcom'
|
|
};
|
|
|
|
const fields = [
|
|
'name',
|
|
'message',
|
|
'email'
|
|
];
|
|
|
|
const validation = {
|
|
email: 'email'
|
|
};
|
|
|
|
expect(() => {
|
|
validator.validate(body, fields, validation);
|
|
}).toThrow('Invalid');
|
|
});
|
|
|
|
test('Valid password validation', () => {
|
|
const body = {
|
|
name: 'Bob',
|
|
message: 'Hi Jim!',
|
|
p1: 'bob',
|
|
p2: 'bob'
|
|
};
|
|
|
|
const fields = [
|
|
'name',
|
|
'message',
|
|
'p1',
|
|
'p2'
|
|
];
|
|
|
|
const validation = {
|
|
password: [ 'p1', 'p2' ]
|
|
};
|
|
|
|
const result = validator.validate(body, fields, validation);
|
|
|
|
expect(result).toBeObject();
|
|
expect(result).toContainKey('fields');
|
|
expect(result.fields.get('p1')).toBe('bob');
|
|
expect(result.fields.get('p2')).toBe('bob');
|
|
});
|
|
|
|
test('Invalid password validation', () => {
|
|
const body = {
|
|
name: 'Bob',
|
|
message: 'Hi Jim!',
|
|
p1: 'bob',
|
|
p2: 'jim'
|
|
};
|
|
|
|
const fields = [
|
|
'name',
|
|
'message',
|
|
'p1',
|
|
'p2'
|
|
];
|
|
|
|
const validation = {
|
|
password: [ 'p1', 'p2' ]
|
|
};
|
|
|
|
expect(() => {
|
|
validator.validate(body, fields, validation);
|
|
}).toThrow('Invalid');
|
|
});
|
|
|
|
test('Valid date validation', () => {
|
|
const body = {
|
|
name: 'Bob',
|
|
message: 'Hi Jim!',
|
|
date: '01/02/2004'
|
|
};
|
|
|
|
const fields = [
|
|
'name',
|
|
'message',
|
|
'date'
|
|
];
|
|
|
|
const validation = {
|
|
date: 'date'
|
|
};
|
|
|
|
const result = validator.validate(body, fields, validation);
|
|
|
|
expect(result).toBeObject();
|
|
expect(result).toContainKey('fields');
|
|
expect(result.fields.get('date')).toEqual({
|
|
raw: body.date,
|
|
date: new Date(body.date)
|
|
});
|
|
});
|
|
|
|
test('Invalid date validation', () => {
|
|
const body = {
|
|
name: 'Bob',
|
|
message: 'Hi Jim!',
|
|
date: 'Jeffery'
|
|
};
|
|
|
|
const fields = [
|
|
'name',
|
|
'message',
|
|
'date'
|
|
];
|
|
|
|
const validation = {
|
|
date: 'date'
|
|
};
|
|
|
|
expect(() => {
|
|
validator.validate(body, fields, validation);
|
|
}).toThrow('Invalid');
|
|
});
|
|
|
|
test('Valid values validation', () => {
|
|
const body = {
|
|
times: '1'
|
|
};
|
|
|
|
const fields = [
|
|
'times'
|
|
];
|
|
|
|
const validation = {
|
|
values: {
|
|
times: [ '5', '6', '7', '1' ]
|
|
}
|
|
};
|
|
|
|
const result = validator.validate(body, fields, validation);
|
|
|
|
expect(result).toBeObject();
|
|
expect(result).toContainKey('fields');
|
|
expect(result.fields.get('times')).toEqual('1');
|
|
});
|
|
|
|
test('Invalid values validation', () => {
|
|
const body = {
|
|
times: '1'
|
|
};
|
|
|
|
const fields = [
|
|
'times'
|
|
];
|
|
|
|
const validation = {
|
|
values: {
|
|
times: [ '5', '6', '7' ]
|
|
}
|
|
};
|
|
|
|
expect(() => {
|
|
validator.validate(body, fields, validation);
|
|
}).toThrow('Invalid');
|
|
});
|
|
|
|
test('Invalid validation type', () => {
|
|
const body = {
|
|
name: 'Bob',
|
|
message: 'Hi Jim!'
|
|
};
|
|
|
|
const fields = [
|
|
'name',
|
|
'message'
|
|
];
|
|
|
|
const validation = {
|
|
joeseph: []
|
|
};
|
|
|
|
expect(() => {
|
|
validator.validate(body, fields, validation);
|
|
}).toThrow('Invalid validation type');
|
|
});
|
|
});
|
|
|