scripts/node_modules/@zeit/schemas/test/user.js

344 lines
8.8 KiB
JavaScript

/* eslint camelcase: 0 */
const AJV = require('ajv');
const assert = require('assert');
const { User } = require('../user');
const ajv = new AJV({ allErrors: true });
// Username
exports.test_username_null = () => {
const isValid = ajv.validate(User, {
username: null
});
assert.equal(isValid, false);
assert.equal(ajv.errors.length, 1);
assert.equal(ajv.errors[0].dataPath, '.username');
assert.equal(ajv.errors[0].message, 'should be string');
};
exports.test_username_invalid_pattern = () => {
const isValid = ajv.validate(User, {
username: '!!!'
});
assert.equal(isValid, false);
assert.equal(ajv.errors.length, 1);
assert.equal(ajv.errors[0].dataPath, '.username');
assert.equal(
ajv.errors[0].message,
'should match pattern "^[a-z0-9][a-z0-9-]*[a-z0-9]$"'
);
};
exports.test_username_too_short = () => {
const isValid = ajv.validate(User, {
username: ''
});
assert.equal(isValid, false);
assert.equal(ajv.errors.length, 2);
assert.equal(ajv.errors[0].dataPath, '.username');
assert.equal(
ajv.errors[0].message,
'should NOT be shorter than 1 characters'
);
assert.equal(ajv.errors[1].dataPath, '.username');
assert.equal(
ajv.errors[1].message,
'should match pattern "^[a-z0-9][a-z0-9-]*[a-z0-9]$"'
);
};
exports.test_username_too_long = () => {
const isValid = ajv.validate(User, {
username: 'a'.repeat(50)
});
assert.equal(isValid, false);
assert.equal(ajv.errors.length, 1);
assert.equal(ajv.errors[0].dataPath, '.username');
assert.equal(
ajv.errors[0].message,
'should NOT be longer than 48 characters'
);
};
exports.test_username_valid = () => {
assert(ajv.validate(User, { username: 'n8' }));
assert(ajv.validate(User, { username: 'rauchg' }));
};
// Name
exports.test_name_too_short = () => {
const isValid = ajv.validate(User, {
name: ''
});
assert.equal(isValid, false);
assert.equal(ajv.errors.length, 1);
assert.equal(ajv.errors[0].dataPath, '.name');
assert.equal(
ajv.errors[0].message,
'should NOT be shorter than 1 characters'
);
};
exports.test_name_too_long = () => {
const isValid = ajv.validate(User, {
name: 'a'.repeat(50)
});
assert.equal(isValid, false);
assert.equal(ajv.errors.length, 1);
assert.equal(ajv.errors[0].dataPath, '.name');
assert.equal(
ajv.errors[0].message,
'should NOT be longer than 32 characters'
);
};
exports.test_name_valid = () => {
assert(ajv.validate(User, { name: 'Nate' }));
};
// BillingChecked
exports.test_billing_checked_null = () => {
const isValid = ajv.validate(User, {
billingChecked: null
});
assert.equal(isValid, false);
assert.equal(ajv.errors.length, 1);
assert.equal(ajv.errors[0].dataPath, '.billingChecked');
assert.equal(ajv.errors[0].message, 'should be boolean');
};
exports.test_billing_checked_valid = () => {
assert(ajv.validate(User, { billingChecked: true }));
};
// Avatar
exports.test_avatar_too_short = () => {
const isValid = ajv.validate(User, {
avatar: 'abc'
});
assert.equal(isValid, false);
assert.equal(ajv.errors.length, 1);
assert.equal(ajv.errors[0].dataPath, '.avatar');
assert.equal(
ajv.errors[0].message,
'should NOT be shorter than 40 characters'
);
};
exports.test_avatar_too_long = () => {
const isValid = ajv.validate(User, {
avatar: 'a'.repeat(50)
});
assert.equal(isValid, false);
assert.equal(ajv.errors.length, 1);
assert.equal(ajv.errors[0].dataPath, '.avatar');
assert.equal(
ajv.errors[0].message,
'should NOT be longer than 40 characters'
);
};
exports.test_avatar_invalid = () => {
const isValid = ajv.validate(User, {
avatar: 'n'.repeat(40)
});
assert.equal(isValid, false);
assert.equal(ajv.errors.length, 1);
assert.equal(ajv.errors[0].dataPath, '.avatar');
assert.equal(ajv.errors[0].message, 'should match pattern "^[0-9a-f]+$"');
};
exports.test_avatar_valid = () => {
assert(ajv.validate(User, { avatar: 'a'.repeat(40) }));
};
exports.test_email_valid = () => {
assert(ajv.validate(User, { email: 'nate@zeit.co' }));
};
exports.test_email_invalid = () => {
const isValid = ajv.validate(User, {
email: `${'n'.repeat(256)}@zeit.co`
});
assert.equal(isValid, false);
};
exports.test_avatar_invalid_length = () => {
assert(ajv.validate(User, { avatar: 'a'.repeat(40) }));
};
exports.test_platformVersion_null_valid = () => {
assert(ajv.validate(User, { platformVersion: null }));
};
exports.test_platformVersion_zero_invalid = () => {
const isValid = ajv.validate(User, {
platformVersion: 0
});
assert.equal(isValid, false);
};
exports.test_platformVersion_one_valid = () => {
assert(ajv.validate(User, { platformVersion: 1 }));
};
exports.test_platformVersion_two_valid = () => {
assert(ajv.validate(User, { platformVersion: 2 }));
};
exports.test_platformVersion_three_invalid = () => {
const isValid = ajv.validate(User, {
platformVersion: 3
});
assert.equal(isValid, false);
};
exports.test_importFlowGitProvider_github_valid = () => {
assert(ajv.validate(User, { importFlowGitProvider: 'github' }));
};
exports.test_importFlowGitProvider_gitlab_valid = () => {
assert(ajv.validate(User, { importFlowGitProvider: 'gitlab' }));
};
exports.test_importFlowGitProvider_bitbucket_valid = () => {
assert(ajv.validate(User, { importFlowGitProvider: 'bitbucket' }));
};
exports.test_importFlowGitProvider_null_valid = () => {
assert(ajv.validate(User, { importFlowGitProvider: null }));
};
exports.test_importFlowGitProvider_invalid_value = () => {
const isValid = ajv.validate(User, {
importFlowGitProvider: 'test'
});
assert.equal(isValid, false);
};
exports.test_importFlowGitProvider_number_invalid = () => {
const isValid = ajv.validate(User, {
importFlowGitProvider: 10
});
assert.equal(isValid, false);
};
exports.test_importFlowGitNamespace_string_valid = () => {
assert(ajv.validate(User, { importFlowGitNamespace: 'test' }));
};
exports.test_importFlowGitNamespace_null_valid = () => {
assert(ajv.validate(User, { importFlowGitNamespace: null }));
};
exports.test_importFlowGitNamespace_number_invalid = () => {
const isValid = ajv.validate(User, {
importFlowGitNamespace: 10
});
assert.strictEqual(isValid, false);
};
exports.test_importFlowGitNamespace_boolean_invalid = () => {
const isValid = ajv.validate(User, {
importFlowGitNamespace: true
});
assert.strictEqual(isValid, false);
};
exports.test_importFlowGitNamespaceId_string_valid = () => {
assert(ajv.validate(User, { importFlowGitNamespaceId: 'test' }));
};
exports.test_importFlowGitNamespaceId_number_valid = () => {
assert(ajv.validate(User, { importFlowGitNamespaceId: 10 }));
};
exports.test_importFlowGitNamespaceId_null_valid = () => {
assert(ajv.validate(User, { importFlowGitNamespaceId: null }));
};
exports.test_importFlowGitNamespaceId_boolean_invalid = () => {
const isValid = ajv.validate(User, {
importFlowGitNamespaceId: true
});
assert.strictEqual(isValid, false);
};
exports.test_scopeId_valid = () => {
assert(ajv.validate(User, { scopeId: '123test' }));
};
exports.test_scopeId_invalid = () => {
const isValid = ajv.validate(User, {
scopeId: null
});
assert.strictEqual(isValid, false);
};
exports.test_gitNamespaceId_string_valid = () => {
assert(ajv.validate(User, { gitNamespaceId: 'test' }));
};
exports.test_gitNamespaceId_number_valid = () => {
assert(ajv.validate(User, { gitNamespaceId: 123 }));
};
exports.test_gitNamespaceId_null_valid = () => {
assert(ajv.validate(User, { gitNamespaceId: null }));
};
exports.test_gitNamespaceId_boolean_invalid = () => {
const isValid = ajv.validate(User, {
gitNamespaceId: true
});
assert.strictEqual(isValid, false);
};
exports.test_viewPreference_cards_valid = () => {
assert(ajv.validate(User, { viewPreference: 'cards' }));
};
exports.test_viewPreference_list_valid = () => {
assert(ajv.validate(User, { viewPreference: 'list' }));
};
exports.test_viewPreference_null_valid = () => {
assert(ajv.validate(User, { viewPreference: null }));
};
exports.test_viewPreference_invalid_value = () => {
const isValid = ajv.validate(User, {
viewPreference: 'test'
});
assert.equal(isValid, false);
};
exports.test_viewPreference_number_invalid = () => {
const isValid = ajv.validate(User, {
viewPreference: 10
});
assert.equal(isValid, false);
};
exports.test_remoteCaching_valid = () => {
assert(ajv.validate(User, { remoteCaching: { enabled: true } }));
};
exports.test_remoteCaching_valid = () => {
const isValid = ajv.validate(User, { remoteCaching: { enabled: 'yes' } });
assert.strictEqual(isValid, false);
};
exports.test_dismissedToasts_valid = () => {
assert(ajv.validate(User, { dismissedToasts: [] }));
};
exports.test_dismissedToasts_valid = () => {
assert(ajv.validate(User, { dismissedToasts: [{ name: ' exampleToast', dismissals: [{ scopeId: 'exampleScopeId', createdAt: 1656442351576 }] }] }));
};
exports.test_dismissedToasts_invalid = () => {
const isValid = ajv.validate(User, { dismissedToasts: [{ name: ' exampleToast', otherProp: 'abc' }] });
assert.strictEqual(isValid, false);
};