diff --git a/src/__tests__/connection/database/index.test.js b/src/__tests__/connection/database/index.test.js new file mode 100644 index 000000000..cf5ed31fb --- /dev/null +++ b/src/__tests__/connection/database/index.test.js @@ -0,0 +1,55 @@ +import Immutable, { List, Map } from 'immutable'; +import { databaseUsernameValue } from '../../../connection/database'; + +describe('databaseUsernameValue', () => { + const getModel = (email, username, usernameRequired) => + Immutable.fromJS({ + field: { + email: { + value: email + }, + username: { + value: username + } + }, + core: { + transient: { + connections: { + database: [ + { + requireUsername: usernameRequired + } + ] + } + } + } + }); + + beforeEach(() => { + jest.resetAllMocks(); + }); + + describe('for database connection without username required', () => { + const model = getModel('user@contoso.com', null, false); + + it('should get the email', () => { + expect(databaseUsernameValue(model)).toEqual('user@contoso.com'); + }); + }); + + describe('for database connection with username required', () => { + const model = getModel('user@contoso.com', 'user', true); + + it('should get the username', () => { + expect(databaseUsernameValue(model)).toEqual('user'); + }); + + describe('and only email address is filled in', () => { + const model = getModel('user@contoso.com', null, true); + + it('should get the email address', () => { + expect(databaseUsernameValue(model)).toEqual('user@contoso.com'); + }); + }); + }); +}); diff --git a/src/connection/database/index.js b/src/connection/database/index.js index 872354645..c9d3ea5c6 100644 --- a/src/connection/database/index.js +++ b/src/connection/database/index.js @@ -354,7 +354,12 @@ export function databaseLogInWithEmail(m) { } export function databaseUsernameValue(m) { - return getFieldValue(m, databaseLogInWithEmail(m) ? 'email' : 'username'); + const isEmailOnly = databaseLogInWithEmail(m); + if (isEmailOnly) { + return getFieldValue(m, 'email'); + } + + return getFieldValue(m, 'username') || getFieldValue(m, 'email'); } export function authWithUsername(m) {