scripts/node_modules/@zeit/schemas/test/deployment-env.js

89 lines
1.8 KiB
JavaScript

/* eslint camelcase: 0 */
const AJV = require('ajv');
const assert = require('assert');
const {
EnvKeys,
EnvObject
} = require('../deployment/config-env');
const ajv = new AJV({allErrors: true});
// EnvKeys
exports.test_env_keys_valid = () => {
const isValid = ajv.validate(EnvKeys, [
'FOO',
'BAR'
]);
assert.equal(isValid, true);
};
exports.test_env_keys_too_short = () => {
const isValid = ajv.validate(EnvKeys, [
'FOO',
''
]);
assert.equal(isValid, false);
assert.equal(ajv.errors[0].keyword, 'minLength');
};
exports.test_env_keys_too_long = () => {
const isValid = ajv.validate(EnvKeys, [
'FOO',
'A'.repeat(257)
]);
assert.equal(isValid, false);
assert.equal(ajv.errors[0].keyword, 'maxLength');
};
exports.test_env_keys_invalid_chars = () => {
const isValid = ajv.validate(EnvKeys, [
'FOO',
'BA,D'
]);
assert.equal(isValid, false);
assert.equal(ajv.errors[0].keyword, 'pattern');
};
exports.test_env_keys_invalid_type = () => {
const isValid = ajv.validate(EnvKeys, [
'FOO',
true
]);
assert.equal(isValid, false);
assert.equal(ajv.errors[0].keyword, 'type');
};
exports.test_env_keys_non_unique = () => {
const isValid = ajv.validate(EnvKeys, [
'FOO',
'FOO'
]);
assert.equal(isValid, false);
assert.equal(ajv.errors[0].keyword, 'uniqueItems');
};
// EnvObject
exports.test_env_object_valid = () => {
const isValid = ajv.validate(EnvObject, {
FOO: 'BAR',
BAZ: '@secret'
});
assert.equal(isValid, true);
};
exports.test_env_object_bad_type = () => {
const isValid = ajv.validate(EnvObject, {
FOO: true
});
assert.equal(isValid, false);
assert.equal(ajv.errors[0].keyword, 'type');
};
exports.test_env_object_too_long = () => {
const isValid = ajv.validate(EnvObject, {
FOO: 'a'.repeat(70000)
});
assert.equal(isValid, false);
assert.equal(ajv.errors[0].keyword, 'maxLength');
};