SAP-BTP-Spielwiese/app1/node_modules/@sap/e2e-trace/lib/passport/validation.js

59 lines
2.5 KiB
JavaScript
Raw Normal View History

'use strict';
var assert = require('assert');
var constants = require('./constants');
var util = require('util');
var bufferUtil = require('./buffer-utils');
module.exports = {
validateString: function (value, name) {
assert(typeof value === 'string' || (value instanceof String), util.format('%s should be a string', name));
assert(value.length !== 0, util.format('%s should not be empty', name));
},
validateHex: function (value, name) {
module.exports.validateString(value, name);
assert(/^[0-9A-F]+$/i.test(value), util.format('%s does not represent a valid hex', name));
assert(value.length % 2 === 0, 'Hex string must contain even number of characters');
},
validateASCII: function (value, name) {
var buffer = bufferUtil.create(value, 'utf8');
assert(value.length === buffer.length, util.format('%s should contain only ASCII characters', name));
},
validateObject: function (value, name) {
var isObject = value && typeof value === 'object' && !Array.isArray(value);
assert(isObject, util.format('%s should be an object', name));
},
validateBufferLength: function (buffer, fieldDisplayName, start, length) {
assert(buffer.length >= start + length,
util.format('Cannot read/write to field %s starting at byte %d with length %d byte(s). Passport length is %d byte(s).',
fieldDisplayName, start, length, buffer.length));
},
validatePreviousComponent: function (value) {
var descriptor = require('./field-descriptors').fields.PREVIOUS_COMPONENT;
var name = descriptor.name;
module.exports.validateString(value, name);
module.exports.validateASCII(value, name);
var maxLength = descriptor.length;
assert(value.length <= maxLength, util.format('%s should be not more than %d characters', name, maxLength));
},
validateConnectionID: function (value) {
var name = require('./field-descriptors').fields.CONNECTION_ID.name;
module.exports.validateHex(value, name);
assert(value.length === 32, util.format('%s should contain 32 hexadecimal characters (16 bytes)', name));
},
validateConnectionCounter: function (value) {
var name = require('./field-descriptors').fields.CONNECTION_COUNTER.name;
assert(typeof value === 'number' || (value instanceof Number), util.format('%s should be a number', name));
assert(value % 1 === 0, util.format('%s should be an integer', name));
assert(value <= constants.UINT_32_MAX, util.format('%s should not be greater than a 4-byte integer', name));
}
};