UNPKG

auth0-lock

Version:
171 lines (169 loc) 6.8 kB
"use strict"; var _immutable = _interopRequireDefault(require("immutable")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } describe('field/username', function () { var username; var dbConnection; beforeEach(function () { jest.resetModules(); jest.mock('field/index', function () { return { setField: jest.fn() }; }); jest.mock('field/email', function () { return { validateEmail: function validateEmail(s) { return s; } }; }); jest.mock('connection/database', function () { return { databaseConnection: function databaseConnection(m) { return m; } }; }); username = require('field/username'); dbConnection = _immutable.default.fromJS({ validation: null }); }); describe('usernameLooksLikeEmail()', function () { it('checks for @ and .', function () { expect(username.usernameLooksLikeEmail('t@t.com')).toBe(true); expect(username.usernameLooksLikeEmail('test.email@t.com')).toBe(true); expect(username.usernameLooksLikeEmail('tt.com')).toBe(false); expect(username.usernameLooksLikeEmail('t@tcom')).toBe(false); }); }); describe('getUsernameValidation()', function () { it("returns database connection's username validation", function () { expect(username.getUsernameValidation(_immutable.default.fromJS({ validation: { username: { min: 1, max: 2 } } }))).toMatchSnapshot(); }); it("returns null there's no db connection username validation", function () { expect(username.getUsernameValidation(dbConnection)).toBe(null); }); }); describe('setUsername()', function () { it("calls setField", function () { username.setUsername(dbConnection, 'a-username', 'username', true); var mock = require('field/index').setField.mock; expect(mock.calls.length).toBe(1); expect(mock.calls[0]).toMatchSnapshot(); }); describe('field validation', function () { it('validates when usernameStyle is `email`', function () { var email = 'a@a.com'; username.setUsername(dbConnection, email, 'email', true); var mock = require('field/index').setField.mock; expect(mock.calls[0][3](email)).toBe(email); }); it('validates when usernameStyle is `username`', function () { var theUsername = 'the_user'; username.setUsername(dbConnection, theUsername, 'username', true); var mock = require('field/index').setField.mock; expect(mock.calls[0][3](theUsername)).toBe(true); }); it('validates when username looks like an email', function () { var email = 'a@a.com'; username.setUsername(dbConnection, email, null, true); var mock = require('field/index').setField.mock; expect(mock.calls[0][3](email)).toBe(email); }); it('validates when username does not look like an email', function () { var theUsername = 'the_user'; username.setUsername(dbConnection, theUsername, null, true); var mock = require('field/index').setField.mock; expect(mock.calls[0][3](theUsername)).toBe(true); }); it('defaults usernameStyle to `username`', function () { var theUsername = 'the_user'; username.setUsername(dbConnection, theUsername, undefined, true); var mock = require('field/index').setField.mock; expect(mock.calls[0][3](theUsername)).toBe(true); }); it('defaults validateUsernameFormat to `true`', function () { var theUsername = 'the_user'; username.setUsername(dbConnection, theUsername, 'username', undefined); var mock = require('field/index').setField.mock; expect(mock.calls[0][3](theUsername)).toBe(true); }); describe('when in username mode', function () { var expectToFailWith = function expectToFailWith(theUsername) { username.setUsername(dbConnection, theUsername, 'username', true); var mock = require('field/index').setField.mock; expect(mock.calls[0][3](theUsername)).toBe(false); }; var expectToSuccedWith = function expectToSuccedWith(theUsername) { username.setUsername(dbConnection, theUsername, 'username', true); var mock = require('field/index').setField.mock; expect(mock.calls[0][3](theUsername)).toBe(true); }; describe('validates if the username is not empty', function () { it('when `validateUsernameFormat` is true but there is no db connection validation', function () { var theUsername = ''; username.setUsername(dbConnection, theUsername, 'username', true); var mock = require('field/index').setField.mock; expect(mock.calls[0][3](theUsername)).toBe(false); }); it('when `validateUsernameFormat` is false and there is db connection validation', function () { var theUsername = ''; var customDbConnection = _immutable.default.fromJS({ validation: { username: { min: 1, max: 2 } } }); username.setUsername(customDbConnection, theUsername, 'username', false); var mock = require('field/index').setField.mock; expect(mock.calls[0][3](theUsername)).toBe(false); }); }); describe('with a db connection validation', function () { beforeEach(function () { dbConnection = _immutable.default.fromJS({ validation: { username: { min: 3, max: 5 } } }); }); it('validates min length', function () { expectToFailWith('aa'); }); it('validates max length', function () { expectToFailWith('aaaaaa'); }); it('email is used as user name', function () { expectToFailWith('a@a.com'); }); it('validates invalid chars', function () { var invalidChars = "{}[],;?/\\%\xA8&*()\xB9\xB2\xB3\xAA\xBA\xA7\xA3\xA2\xAC<>|\" ".split(''); invalidChars.forEach(function (i) { return expectToFailWith("aa".concat(i)); }); }); it('accepts letters, numbers, `_`, `-`, `+` and `.`', function () { var validChars = "_+-.!#$'^`~@".split(''); validChars.forEach(function (i) { return expectToSuccedWith("aa".concat(i)); }); }); }); }); }); }); });