1125 lines
33 KiB
JavaScript
1125 lines
33 KiB
JavaScript
/**
|
|
* @fileOverview Unit tests for the schemas for the Registration commands
|
|
* @see {@url http://10.0.10.242/w/tricore_architecture/server_interface/registration_commands/}
|
|
*/
|
|
'use strict';
|
|
var _ = require('lodash');
|
|
var testHelper = require('./testHelpers.js');
|
|
|
|
/**
|
|
* Test data
|
|
*/
|
|
const VALID_SESSION_TOKEN = '01234567890abcdefghijklmnopqrstuvwxyzABCDE';
|
|
const VALID_DEVICE_TOKEN = '01234567890abcdefghijklmnopqrstuvwxyzABCDE';
|
|
const VALID_SHA256 = '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef';
|
|
const VALID_UUID = '0123456789abcdef01234567';
|
|
const VALID_NUMBER = '+4407700000000';
|
|
|
|
/**
|
|
* Test suite that defines the test command body and expected outcomes for
|
|
* a range of different bodies across different commands.
|
|
*/
|
|
const TEST_SUITE = {
|
|
AddDevice: [
|
|
{
|
|
name: '',
|
|
valid: true,
|
|
data: {
|
|
ClientName: 'a@example.com',
|
|
Password: VALID_SHA256,
|
|
DeviceNumber: VALID_NUMBER,
|
|
DeviceUuid: _.repeat('a', 30),
|
|
DeviceHardware: 'Chai test',
|
|
DeviceSoftware: 'Chai test',
|
|
Latitude: 0,
|
|
Longitude: 0,
|
|
Mode: 'Test'
|
|
}
|
|
},
|
|
{
|
|
name: 'no optional, and pseudo-optional (null, "", etc.) values',
|
|
valid: true,
|
|
data: {
|
|
ClientName: 'a@example.com',
|
|
Password: VALID_SHA256,
|
|
DeviceNumber: VALID_NUMBER,
|
|
DeviceUuid: _.repeat('a', 150),
|
|
DeviceHardware: '',
|
|
DeviceSoftware: '',
|
|
Latitude: null,
|
|
Longitude: null
|
|
}
|
|
},
|
|
{
|
|
name: 'less than required params',
|
|
valid: false,
|
|
expect: {
|
|
missingRequiredCount: 8,
|
|
additionalPropsCount: 1
|
|
},
|
|
data: {invalidAdditionalProp: 'a'}
|
|
},
|
|
{
|
|
name: 'Untrimmed device ID',
|
|
valid: false,
|
|
expect: {
|
|
errors: [
|
|
{
|
|
dataPath: '.DeviceUuid',
|
|
keyword: 'ensureTrim'
|
|
}
|
|
]
|
|
},
|
|
data: {
|
|
ClientName: 'a@example.com',
|
|
Password: VALID_SHA256,
|
|
DeviceNumber: VALID_NUMBER,
|
|
DeviceUuid: ' not trimmed' + _.repeat('a', 30) + ' ',
|
|
DeviceHardware: 'Chai test',
|
|
DeviceSoftware: 'Chai test',
|
|
Latitude: 0,
|
|
Longitude: 0,
|
|
Mode: 'Test'
|
|
}
|
|
},
|
|
{
|
|
name: 'mistake in every param',
|
|
valid: false,
|
|
expect: {
|
|
errors: [
|
|
{
|
|
dataPath: '.ClientName',
|
|
keyword: 'pattern'
|
|
},
|
|
{
|
|
dataPath: '.Password',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.Password',
|
|
keyword: 'pattern'
|
|
},
|
|
{
|
|
dataPath: '.DeviceNumber',
|
|
keyword: 'pattern'
|
|
},
|
|
{
|
|
dataPath: '.DeviceUuid',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.DeviceHardware',
|
|
keyword: 'maxLength'
|
|
},
|
|
{
|
|
dataPath: '.DeviceSoftware',
|
|
keyword: 'maxLength'
|
|
},
|
|
{
|
|
dataPath: '.Latitude',
|
|
keyword: 'maximum'
|
|
},
|
|
{
|
|
dataPath: '.Longitude',
|
|
keyword: 'maximum'
|
|
},
|
|
{
|
|
dataPath: '.Mode',
|
|
keyword: 'const'
|
|
}
|
|
]
|
|
},
|
|
data: {
|
|
ClientName: 'John Smith',
|
|
Password: 'Not a SHA 256',
|
|
DeviceNumber: '07700000000',
|
|
DeviceUuid: _.repeat('a', 29),
|
|
DeviceHardware: _.repeat('a', 76),
|
|
DeviceSoftware: _.repeat('a', 76),
|
|
Latitude: 91,
|
|
Longitude: 181,
|
|
Mode: 'test'
|
|
}
|
|
}
|
|
],
|
|
DeleteDevice: [
|
|
{
|
|
name: '',
|
|
valid: true,
|
|
data: {
|
|
DeviceToken: VALID_DEVICE_TOKEN,
|
|
SessionToken: VALID_SESSION_TOKEN,
|
|
Password: VALID_SHA256,
|
|
DeviceIndex: VALID_UUID
|
|
}
|
|
},
|
|
{
|
|
name: 'less than required params',
|
|
valid: false,
|
|
expect: {
|
|
missingRequiredCount: 4,
|
|
additionalPropsCount: 1
|
|
},
|
|
data: {invalidAdditionalProp: 'a'}
|
|
},
|
|
{
|
|
name: 'mistake in every param',
|
|
valid: false,
|
|
expect: {
|
|
errors: [
|
|
{
|
|
dataPath: '.DeviceToken',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.DeviceToken',
|
|
keyword: 'pattern'
|
|
},
|
|
{
|
|
dataPath: '.SessionToken',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.SessionToken',
|
|
keyword: 'pattern'
|
|
},
|
|
{
|
|
dataPath: '.Password',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.Password',
|
|
keyword: 'pattern'
|
|
},
|
|
{
|
|
dataPath: '.DeviceIndex',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.DeviceIndex',
|
|
keyword: 'pattern'
|
|
}
|
|
]
|
|
},
|
|
data: {
|
|
DeviceToken: 'Not a device token',
|
|
SessionToken: 'Not a session token',
|
|
Password: 'Not a sha 256',
|
|
DeviceIndex: 'Not a UUID'
|
|
}
|
|
}
|
|
],
|
|
GetClientDetails: [
|
|
{
|
|
name: '',
|
|
valid: true,
|
|
data: {
|
|
DeviceToken: VALID_DEVICE_TOKEN,
|
|
SessionToken: VALID_SESSION_TOKEN
|
|
}
|
|
},
|
|
{
|
|
name: 'less than required params',
|
|
valid: false,
|
|
expect: {
|
|
missingRequiredCount: 2,
|
|
additionalPropsCount: 1
|
|
},
|
|
data: {invalidAdditionalProp: 'a'}
|
|
},
|
|
{
|
|
name: 'mistake in every param',
|
|
valid: false,
|
|
expect: {
|
|
errors: [
|
|
{
|
|
dataPath: '.DeviceToken',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.DeviceToken',
|
|
keyword: 'pattern'
|
|
},
|
|
{
|
|
dataPath: '.SessionToken',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.SessionToken',
|
|
keyword: 'pattern'
|
|
}
|
|
]
|
|
},
|
|
data: {
|
|
DeviceToken: 'Not a device token',
|
|
SessionToken: 'Not a session token'
|
|
}
|
|
}
|
|
],
|
|
ListDevices: [
|
|
{
|
|
name: '',
|
|
valid: true,
|
|
data: {
|
|
DeviceToken: VALID_DEVICE_TOKEN,
|
|
SessionToken: VALID_SESSION_TOKEN
|
|
}
|
|
},
|
|
{
|
|
name: 'less than required params',
|
|
valid: false,
|
|
expect: {
|
|
missingRequiredCount: 2,
|
|
additionalPropsCount: 1
|
|
},
|
|
data: {invalidAdditionalProp: 'a'}
|
|
},
|
|
{
|
|
name: 'mistake in every param',
|
|
valid: false,
|
|
expect: {
|
|
errors: [
|
|
{
|
|
dataPath: '.DeviceToken',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.DeviceToken',
|
|
keyword: 'pattern'
|
|
},
|
|
{
|
|
dataPath: '.SessionToken',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.SessionToken',
|
|
keyword: 'pattern'
|
|
}
|
|
]
|
|
},
|
|
data: {
|
|
DeviceToken: 'Not a device token',
|
|
SessionToken: 'Not a session token'
|
|
}
|
|
}
|
|
],
|
|
Register1: [
|
|
{
|
|
name: '',
|
|
valid: true,
|
|
data: {
|
|
Method: 'Bridge',
|
|
ClientName: 'a@example.com',
|
|
Password: VALID_SHA256,
|
|
DeviceNumber: VALID_NUMBER,
|
|
OperatorName: 'Comcarde',
|
|
DeviceUuid: _.repeat('a', 30),
|
|
DeviceHardware: 'Chai test',
|
|
DeviceSoftware: 'Chai test',
|
|
Mode: 'Test'
|
|
}
|
|
},
|
|
{
|
|
name: 'no optional, and pseudo-optional (null, "", etc.) values',
|
|
valid: true,
|
|
data: {
|
|
Method: 'Bridge',
|
|
ClientName: 'a@example.com',
|
|
Password: VALID_SHA256,
|
|
DeviceNumber: VALID_NUMBER,
|
|
OperatorName: 'Comcarde',
|
|
DeviceUuid: _.repeat('a', 150),
|
|
DeviceHardware: '',
|
|
DeviceSoftware: ''
|
|
}
|
|
},
|
|
{
|
|
name: 'less than required params',
|
|
valid: false,
|
|
expect: {
|
|
missingRequiredCount: 8,
|
|
additionalPropsCount: 1
|
|
},
|
|
data: {invalidAdditionalProp: 'a'}
|
|
},
|
|
{
|
|
name: 'mistake in every param',
|
|
valid: false,
|
|
expect: {
|
|
errors: [
|
|
{
|
|
dataPath: '.Method',
|
|
keyword: 'const'
|
|
},
|
|
{
|
|
dataPath: '.ClientName',
|
|
keyword: 'pattern'
|
|
},
|
|
{
|
|
dataPath: '.Password',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.Password',
|
|
keyword: 'pattern'
|
|
},
|
|
{
|
|
dataPath: '.DeviceNumber',
|
|
keyword: 'pattern'
|
|
},
|
|
{
|
|
dataPath: '.OperatorName',
|
|
keyword: 'const'
|
|
},
|
|
{
|
|
dataPath: '.DeviceUuid',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.DeviceHardware',
|
|
keyword: 'maxLength'
|
|
},
|
|
{
|
|
dataPath: '.DeviceSoftware',
|
|
keyword: 'maxLength'
|
|
},
|
|
{
|
|
dataPath: '.Mode',
|
|
keyword: 'const'
|
|
}
|
|
]
|
|
},
|
|
data: {
|
|
Method: 'Google',
|
|
ClientName: 'John Smith',
|
|
Password: 'Not a SHA 256',
|
|
DeviceNumber: '07700000000',
|
|
OperatorName: 'A bank',
|
|
DeviceUuid: _.repeat('a', 29),
|
|
DeviceHardware: _.repeat('a', 76),
|
|
DeviceSoftware: _.repeat('a', 76),
|
|
Mode: 'Normal'
|
|
}
|
|
}
|
|
],
|
|
Register2: [
|
|
{
|
|
name: '',
|
|
valid: true,
|
|
data: {
|
|
DeviceNumber: VALID_NUMBER,
|
|
DeviceToken: VALID_DEVICE_TOKEN,
|
|
RegistrationToken: '123456'
|
|
}
|
|
},
|
|
{
|
|
name: 'less than required params',
|
|
valid: false,
|
|
expect: {
|
|
missingRequiredCount: 3,
|
|
additionalPropsCount: 1
|
|
},
|
|
data: {invalidAdditionalProp: 'a'}
|
|
},
|
|
{
|
|
name: 'mistake in every param',
|
|
valid: false,
|
|
expect: {
|
|
errors: [
|
|
{
|
|
dataPath: '.DeviceNumber',
|
|
keyword: 'pattern'
|
|
},
|
|
{
|
|
dataPath: '.DeviceToken',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.DeviceToken',
|
|
keyword: 'pattern'
|
|
},
|
|
{
|
|
dataPath: '.RegistrationToken',
|
|
keyword: 'pattern'
|
|
}
|
|
]
|
|
},
|
|
data: {
|
|
DeviceNumber: 'Not a device number',
|
|
DeviceToken: 'Not a device token',
|
|
RegistrationToken: '123abc'
|
|
}
|
|
}
|
|
],
|
|
Register3: [
|
|
{
|
|
name: '',
|
|
valid: true,
|
|
data: {
|
|
ClientName: 'a@example.com',
|
|
DeviceToken: VALID_DEVICE_TOKEN,
|
|
Longitude: 0,
|
|
Latitude: 0,
|
|
DeviceAuthorisation: VALID_SHA256
|
|
}
|
|
},
|
|
{
|
|
name: 'less than required params',
|
|
valid: false,
|
|
expect: {
|
|
missingRequiredCount: 5,
|
|
additionalPropsCount: 1
|
|
},
|
|
data: {invalidAdditionalProp: 'a'}
|
|
},
|
|
{
|
|
name: 'mistake in every param',
|
|
valid: false,
|
|
expect: {
|
|
errors: [
|
|
{
|
|
dataPath: '.ClientName',
|
|
keyword: 'maxLength'
|
|
},
|
|
{
|
|
dataPath: '.DeviceToken',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.DeviceToken',
|
|
keyword: 'pattern'
|
|
},
|
|
{
|
|
dataPath: '.Latitude',
|
|
keyword: 'maximum'
|
|
},
|
|
{
|
|
dataPath: '.Longitude',
|
|
keyword: 'minimum'
|
|
},
|
|
{
|
|
dataPath: '.DeviceAuthorisation',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.DeviceAuthorisation',
|
|
keyword: 'pattern'
|
|
}
|
|
]
|
|
},
|
|
data: {
|
|
ClientName: _.repeat('a', 53) + '@example.com',
|
|
DeviceToken: 'Not a device token',
|
|
Longitude: -181,
|
|
Latitude: 181,
|
|
DeviceAuthorisation: 'Not a sha 256'
|
|
}
|
|
}
|
|
],
|
|
Register4: [
|
|
{
|
|
name: '',
|
|
valid: true,
|
|
data: {
|
|
DeviceNumber: VALID_NUMBER,
|
|
DeviceUuid: _.repeat('a', 150),
|
|
DeviceToken: VALID_DEVICE_TOKEN
|
|
}
|
|
},
|
|
{
|
|
name: 'less than required params',
|
|
valid: false,
|
|
expect: {
|
|
missingRequiredCount: 3,
|
|
additionalPropsCount: 1
|
|
},
|
|
data: {invalidAdditionalProp: 'a'}
|
|
},
|
|
{
|
|
name: 'mistake in every param',
|
|
valid: false,
|
|
expect: {
|
|
errors: [
|
|
{
|
|
dataPath: '.DeviceNumber',
|
|
keyword: 'type'
|
|
},
|
|
{
|
|
dataPath: '.DeviceUuid',
|
|
keyword: 'maxLength'
|
|
},
|
|
{
|
|
dataPath: '.DeviceToken',
|
|
keyword: 'minLength'
|
|
}
|
|
]
|
|
},
|
|
data: {
|
|
DeviceNumber: 447700000000,
|
|
DeviceUuid: _.repeat('a', 151),
|
|
DeviceToken: ''
|
|
}
|
|
}
|
|
],
|
|
Register6: [
|
|
{
|
|
name: '',
|
|
valid: true,
|
|
data: {
|
|
ClientName: 'a@example.com',
|
|
DeviceNumber: VALID_NUMBER,
|
|
DeviceUuid: _.repeat('a', 150)
|
|
}
|
|
},
|
|
{
|
|
name: 'less than required params',
|
|
valid: false,
|
|
expect: {
|
|
missingRequiredCount: 3,
|
|
additionalPropsCount: 1
|
|
},
|
|
data: {invalidAdditionalProp: 'a'}
|
|
},
|
|
{
|
|
name: 'mistake in every param',
|
|
valid: false,
|
|
expect: {
|
|
errors: [
|
|
{
|
|
dataPath: '.ClientName',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.ClientName',
|
|
keyword: 'pattern'
|
|
},
|
|
{
|
|
dataPath: '.DeviceNumber',
|
|
keyword: 'pattern'
|
|
},
|
|
{
|
|
dataPath: '.DeviceUuid',
|
|
keyword: 'minLength'
|
|
}
|
|
]
|
|
},
|
|
data: {
|
|
ClientName: '',
|
|
DeviceNumber: '447700000000',
|
|
DeviceUuid: _.repeat('a', 29)
|
|
}
|
|
}
|
|
],
|
|
'Register7': [
|
|
{
|
|
name: '',
|
|
valid: true,
|
|
data: {}
|
|
},
|
|
{
|
|
name: 'unexpected param',
|
|
valid: false,
|
|
expect: {
|
|
missingRequiredCount: 0,
|
|
additionalPropsCount: 1
|
|
},
|
|
data: {invalidAdditionalProp: 'a'}
|
|
}
|
|
],
|
|
'Register7.params': [
|
|
{
|
|
name: '',
|
|
valid: true,
|
|
data: {
|
|
Command: 'Register7',
|
|
ClientName: 'a@example.com',
|
|
DeviceNumber: VALID_NUMBER,
|
|
Mode: 'ForceDelete'
|
|
}
|
|
},
|
|
{
|
|
name: 'less than required params',
|
|
valid: false,
|
|
expect: {
|
|
missingRequiredCount: 3,
|
|
additionalPropsCount: 1
|
|
},
|
|
data: {invalidAdditionalProp: 'a'}
|
|
},
|
|
{
|
|
name: 'mistake in every param',
|
|
valid: false,
|
|
expect: {
|
|
errors: [
|
|
{
|
|
dataPath: '.Command',
|
|
keyword: 'const'
|
|
},
|
|
{
|
|
dataPath: '.ClientName',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.ClientName',
|
|
keyword: 'pattern'
|
|
},
|
|
{
|
|
dataPath: '.DeviceNumber',
|
|
keyword: 'pattern'
|
|
},
|
|
{
|
|
dataPath: '.Mode',
|
|
keyword: 'const'
|
|
}
|
|
]
|
|
},
|
|
data: {
|
|
Command: 'Not register 7!',
|
|
ClientName: '',
|
|
DeviceNumber: '447700000000',
|
|
Mode: 'Test'
|
|
}
|
|
}
|
|
],
|
|
Register8: [
|
|
{
|
|
name: '',
|
|
valid: true,
|
|
data: {
|
|
ClientName: 'a@example.com',
|
|
DeviceNumber: VALID_NUMBER,
|
|
Mode: 'ForceDelete'
|
|
}
|
|
},
|
|
{
|
|
name: 'less than required params',
|
|
valid: false,
|
|
expect: {
|
|
missingRequiredCount: 2,
|
|
additionalPropsCount: 1
|
|
},
|
|
data: {invalidAdditionalProp: 'a'}
|
|
},
|
|
{
|
|
name: 'mistake in every param',
|
|
valid: false,
|
|
expect: {
|
|
errors: [
|
|
{
|
|
dataPath: '.ClientName',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.ClientName',
|
|
keyword: 'pattern'
|
|
},
|
|
{
|
|
dataPath: '.DeviceNumber',
|
|
keyword: 'pattern'
|
|
},
|
|
{
|
|
dataPath: '.Mode',
|
|
keyword: 'const'
|
|
}
|
|
]
|
|
},
|
|
data: {
|
|
ClientName: '',
|
|
DeviceNumber: '447700000000',
|
|
Mode: 'Test'
|
|
}
|
|
}
|
|
],
|
|
ResumeDevice: [
|
|
{
|
|
name: '',
|
|
valid: true,
|
|
data: {
|
|
DeviceToken: VALID_DEVICE_TOKEN,
|
|
SessionToken: VALID_SESSION_TOKEN,
|
|
Password: VALID_SHA256,
|
|
DeviceIndex: VALID_UUID
|
|
}
|
|
},
|
|
{
|
|
name: 'less than required params',
|
|
valid: false,
|
|
expect: {
|
|
missingRequiredCount: 4,
|
|
additionalPropsCount: 1
|
|
},
|
|
data: {invalidAdditionalProp: 'a'}
|
|
},
|
|
{
|
|
name: 'mistake in every param',
|
|
valid: false,
|
|
expect: {
|
|
errors: [
|
|
{
|
|
dataPath: '.DeviceToken',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.DeviceToken',
|
|
keyword: 'pattern'
|
|
},
|
|
{
|
|
dataPath: '.SessionToken',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.SessionToken',
|
|
keyword: 'pattern'
|
|
},
|
|
{
|
|
dataPath: '.Password',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.Password',
|
|
keyword: 'pattern'
|
|
},
|
|
{
|
|
dataPath: '.DeviceIndex',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.DeviceIndex',
|
|
keyword: 'pattern'
|
|
}
|
|
]
|
|
},
|
|
data: {
|
|
DeviceToken: 'Not a device token',
|
|
SessionToken: 'Not a session token',
|
|
Password: 'Not a sha 256',
|
|
DeviceIndex: 'Not a UUID'
|
|
}
|
|
}
|
|
],
|
|
SetClientDetails: [
|
|
{
|
|
name: '',
|
|
valid: true,
|
|
data: {
|
|
DeviceToken: VALID_DEVICE_TOKEN,
|
|
SessionToken: VALID_SESSION_TOKEN,
|
|
Title: 'Mr',
|
|
FirstName: 'John',
|
|
MiddleNames: 'James Michael',
|
|
LastName: 'Smith',
|
|
DateOfBirth: '1970-01-01',
|
|
ResidentialAddressID: VALID_UUID,
|
|
Gender: 'M'
|
|
}
|
|
},
|
|
{
|
|
name: 'less than required params',
|
|
valid: false,
|
|
expect: {
|
|
missingRequiredCount: 8,
|
|
additionalPropsCount: 1
|
|
},
|
|
data: {invalidAdditionalProp: 'a'}
|
|
},
|
|
{
|
|
name: 'mistake in every param',
|
|
valid: false,
|
|
expect: {
|
|
errors: [
|
|
{
|
|
dataPath: '.DeviceToken',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.DeviceToken',
|
|
keyword: 'pattern'
|
|
},
|
|
{
|
|
dataPath: '.SessionToken',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.SessionToken',
|
|
keyword: 'pattern'
|
|
},
|
|
{
|
|
dataPath: '.Title',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.FirstName',
|
|
keyword: 'maxLength'
|
|
},
|
|
{
|
|
dataPath: '.MiddleNames',
|
|
keyword: 'maxLength'
|
|
},
|
|
{
|
|
dataPath: '.LastName',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.DateOfBirth',
|
|
keyword: 'format'
|
|
},
|
|
{
|
|
dataPath: '.ResidentialAddressID',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.ResidentialAddressID',
|
|
keyword: 'pattern'
|
|
},
|
|
{
|
|
dataPath: '.Gender',
|
|
keyword: 'enum'
|
|
}
|
|
]
|
|
},
|
|
data: {
|
|
DeviceToken: 'Not a device token',
|
|
SessionToken: 'Not a session token',
|
|
Title: 'M',
|
|
FirstName: _.repeat('a', 51),
|
|
MiddleNames: _.repeat('a', 51),
|
|
LastName: _.repeat('a', 1),
|
|
DateOfBirth: '1970-13-32',
|
|
ResidentialAddressID: 'NOT A UUID',
|
|
Gender: 'N'
|
|
}
|
|
},
|
|
{
|
|
name: 'different mistakes in every param',
|
|
valid: false,
|
|
expect: {
|
|
errors: [
|
|
{
|
|
dataPath: '.Title',
|
|
keyword: 'maxLength'
|
|
},
|
|
{
|
|
dataPath: '.FirstName',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.LastName',
|
|
keyword: 'maxLength'
|
|
},
|
|
{
|
|
dataPath: '.DateOfBirth',
|
|
keyword: 'pattern'
|
|
},
|
|
{
|
|
dataPath: '.DateOfBirth',
|
|
keyword: 'format'
|
|
},
|
|
{
|
|
dataPath: '.ResidentialAddressID',
|
|
keyword: 'maxLength'
|
|
},
|
|
{
|
|
dataPath: '.ResidentialAddressID',
|
|
keyword: 'pattern'
|
|
},
|
|
{
|
|
dataPath: '.Gender',
|
|
keyword: 'enum'
|
|
}
|
|
]
|
|
},
|
|
data: {
|
|
DeviceToken: VALID_DEVICE_TOKEN,
|
|
SessionToken: VALID_SESSION_TOKEN,
|
|
Title: _.repeat('M', 21),
|
|
FirstName: _.repeat('a', 1),
|
|
MiddleNames: '',
|
|
LastName: _.repeat('a', 51),
|
|
DateOfBirth: '1st Jan, 1970',
|
|
ResidentialAddressID: _.repeat('a', 25),
|
|
Gender: 'MM'
|
|
}
|
|
},
|
|
{
|
|
name: 'untrimmed name params',
|
|
valid: false,
|
|
expect: {
|
|
errors: [
|
|
{
|
|
dataPath: '.Title',
|
|
keyword: 'ensureTrim'
|
|
},
|
|
{
|
|
dataPath: '.FirstName',
|
|
keyword: 'ensureTrim'
|
|
},
|
|
{
|
|
dataPath: '.MiddleNames',
|
|
keyword: 'ensureTrim'
|
|
},
|
|
{
|
|
dataPath: '.LastName',
|
|
keyword: 'ensureTrim'
|
|
}
|
|
]
|
|
},
|
|
data: {
|
|
DeviceToken: VALID_DEVICE_TOKEN,
|
|
SessionToken: VALID_SESSION_TOKEN,
|
|
Title: ' Mr ',
|
|
FirstName: ' Un',
|
|
MiddleNames: 'Trimmed ',
|
|
LastName: ' Example ',
|
|
DateOfBirth: '1970-01-01',
|
|
ResidentialAddressID: VALID_UUID,
|
|
Gender: 'F'
|
|
}
|
|
}
|
|
],
|
|
SetDeviceName: [
|
|
{
|
|
name: '',
|
|
valid: true,
|
|
data: {
|
|
DeviceToken: VALID_DEVICE_TOKEN,
|
|
SessionToken: VALID_SESSION_TOKEN,
|
|
DeviceName: 'A phone',
|
|
DeviceIndex: VALID_UUID
|
|
}
|
|
},
|
|
{
|
|
name: 'less than required params',
|
|
valid: false,
|
|
expect: {
|
|
missingRequiredCount: 4,
|
|
additionalPropsCount: 1
|
|
},
|
|
data: {invalidAdditionalProp: 'a'}
|
|
},
|
|
{
|
|
name: 'mistake in every param',
|
|
valid: false,
|
|
expect: {
|
|
errors: [
|
|
{
|
|
dataPath: '.DeviceName',
|
|
keyword: 'ensureTrim'
|
|
},
|
|
{
|
|
dataPath: '.DeviceIndex',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.DeviceIndex',
|
|
keyword: 'pattern'
|
|
}
|
|
]
|
|
},
|
|
data: {
|
|
DeviceToken: VALID_DEVICE_TOKEN,
|
|
SessionToken: VALID_SESSION_TOKEN,
|
|
DeviceName: ' Oops ',
|
|
DeviceIndex: 'Not a UUID'
|
|
}
|
|
},
|
|
{
|
|
name: 'name too short',
|
|
valid: false,
|
|
expect: {
|
|
errors: [
|
|
{
|
|
dataPath: '.DeviceName',
|
|
keyword: 'minLength'
|
|
}
|
|
]
|
|
},
|
|
data: {
|
|
DeviceToken: VALID_DEVICE_TOKEN,
|
|
SessionToken: VALID_SESSION_TOKEN,
|
|
DeviceName: 'A',
|
|
DeviceIndex: VALID_UUID
|
|
}
|
|
},
|
|
{
|
|
name: 'name too long',
|
|
valid: false,
|
|
expect: {
|
|
errors: [
|
|
{
|
|
dataPath: '.DeviceName',
|
|
keyword: 'maxLength'
|
|
}
|
|
]
|
|
},
|
|
data: {
|
|
DeviceToken: VALID_DEVICE_TOKEN,
|
|
SessionToken: VALID_SESSION_TOKEN,
|
|
DeviceName: _.repeat('a', 76),
|
|
DeviceIndex: VALID_UUID
|
|
}
|
|
}
|
|
],
|
|
SuspendDevice: [
|
|
{
|
|
name: '',
|
|
valid: true,
|
|
data: {
|
|
DeviceToken: VALID_DEVICE_TOKEN,
|
|
SessionToken: VALID_SESSION_TOKEN,
|
|
DeviceIndex: VALID_UUID
|
|
}
|
|
},
|
|
{
|
|
name: 'less than required params',
|
|
valid: false,
|
|
expect: {
|
|
missingRequiredCount: 3,
|
|
additionalPropsCount: 1
|
|
},
|
|
data: {invalidAdditionalProp: 'a'}
|
|
},
|
|
{
|
|
name: 'mistake in every param',
|
|
valid: false,
|
|
expect: {
|
|
errors: [
|
|
{
|
|
dataPath: '.DeviceToken',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.DeviceToken',
|
|
keyword: 'pattern'
|
|
},
|
|
{
|
|
dataPath: '.SessionToken',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.SessionToken',
|
|
keyword: 'pattern'
|
|
},
|
|
{
|
|
dataPath: '.DeviceIndex',
|
|
keyword: 'minLength'
|
|
},
|
|
{
|
|
dataPath: '.DeviceIndex',
|
|
keyword: 'pattern'
|
|
}
|
|
]
|
|
},
|
|
data: {
|
|
DeviceToken: 'Not a device token',
|
|
SessionToken: 'Not a session token',
|
|
DeviceIndex: 'Not a UUID'
|
|
}
|
|
}
|
|
]
|
|
};
|
|
|
|
/**
|
|
* Run the test suite through the test runner
|
|
*/
|
|
testHelper.runTestSuite('Schemas: Registration Commands', TEST_SUITE);
|