diff -r 1f340f3597a8 -r ea92f4fe783d client/src/reducers/__tests__/authReducer.test.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/client/src/reducers/__tests__/authReducer.test.js Mon Oct 08 18:35:47 2018 +0200 @@ -0,0 +1,422 @@ +import uuidV1 from 'uuid/v1'; + +import { + isAuthenticated, + currentUser, + currentGroup, + token, + clientId, + login, + register, + groups, + createGroup, +} from '../authReducer'; +import asyncRequest from '../../constants/asyncRequest'; + +import * as types from '../../constants/ActionTypes' +import UserRecord from '../../store/userRecord'; +import GroupRecord from '../../store/groupRecord'; + + +describe('auth reducer isAuthenticated', () => { + + it('should return the initial state', () => { + expect( + isAuthenticated(undefined, {}) + ).toEqual(false) + }); + + it("Handle AUTH_DEAUTHENTICATE true", () => { + expect( + isAuthenticated(true, { + type: types.AUTH_DEAUTHENTICATE + }) + ).toEqual(false) + }); + + it("Handle AUTH_DEAUTHENTICATE false", () => { + expect( + isAuthenticated(false, { + type: types.AUTH_DEAUTHENTICATE + }) + ).toEqual(false) + }); + + it("Handle AUTH_LOGOUT true", () => { + expect( + isAuthenticated(true, { + type: types.AUTH_LOGOUT + }) + ).toEqual(false) + }); + + it("Handle AUTH_LOGOUT false", () => { + expect( + isAuthenticated(false, { + type: types.AUTH_LOGOUT + }) + ).toEqual(false) + }); + + + it("Handle AUTH_LOGIN_SUCCESS false", () => { + expect( + isAuthenticated(false, { + type: types.AUTH_LOGIN_SUCCESS + }) + ).toEqual(true) + }); + + it("Handle AUTH_LOGIN_SUCCESS true", () => { + expect( + isAuthenticated(true, { + type: types.AUTH_LOGIN_SUCCESS + }) + ).toEqual(true) + }); + +}); + + +describe('auth reducer currentUser', () => { + + it('should return the initial state', () => { + expect( + currentUser(undefined, {}) + ).toEqual(null) + }); + + it('Handle AUTH_DEAUTHENTICATE', () => { + const initalState = new UserRecord({ first_name: 'John', last_name: 'Doe'}); + expect( + currentUser(initalState, { + type: types.AUTH_DEAUTHENTICATE + }) + ).toEqual(null) + }); + + + it('Handle AUTH_LOGOUT', () => { + const initalState = new UserRecord({ first_name: 'John', last_name: 'Doe'}); + expect( + currentUser(initalState, { + type: types.AUTH_LOGOUT + }) + ).toEqual(null) + }); + + + it('Handle AUTH_LOGIN_SUCCESS', () => { + const initalState = null; + expect( + currentUser(initalState, { + type: types.AUTH_LOGIN_SUCCESS, + user: { first_name: 'John', last_name: 'Doe'} + }) + ).toEqual(new UserRecord({ first_name: 'John', last_name: 'Doe'})) + }); + + it('Handle USER_UPDATE_SETTINGS', () => { + const initalState = new UserRecord({ first_name: 'John', last_name: 'Doe'}); + expect( + currentUser(initalState, { + type: types.USER_UPDATE_SETTINGS, + firstname: 'Jane', + lastname: 'Orwell' + }) + ).toEqual(new UserRecord({ first_name: 'Jane', last_name: 'Orwell'})) + }); + +}); + +describe('auth reducer currentGroup', () => { + + it('should return the initial state', () => { + expect( + currentGroup(undefined, {}) + ).toEqual(null) + }); + + it('Handle AUTH_DEAUTHENTICATE', () => { + expect( + currentGroup('group1', { + type: types.AUTH_DEAUTHENTICATE + }) + ).toEqual(null); + }); + + it('Handle AUTH_LOGOUT', () => { + expect( + currentGroup('group1', { + type: types.AUTH_LOGOUT + }) + ).toEqual(null); + }); + + it('Handle AUTH_LOGIN_SUCCESS', () => { + expect( + currentGroup(null, { + type: types.AUTH_LOGIN_SUCCESS, + user: { first_name: 'John', last_name: 'Doe', default_group: 'group1' } + }) + ).toEqual('group1'); + }); + + it('Handle GROUP_CREATE_SUCCESS', () => { + expect( + currentGroup('group1', { + type: types.GROUP_CREATE_SUCCESS, + group: { name: 'group2' } + }) + ).toEqual('group2'); + }); + + it('Handle GROUP_SET_GROUP', () => { + expect( + currentGroup('group1', { + type: types.GROUP_SET_GROUP, + group: 'group2' + }) + ).toEqual('group2'); + }); +}); + +describe('auth reducer token', () => { + + it('should return the initial state', () => { + expect( + token(undefined, {}) + ).toEqual(null) + }); + + it('Handle AUTH_DEAUTHENTICATE', () => { + expect( + token('token1', { + type: types.AUTH_DEAUTHENTICATE + }) + ).toEqual(null); + }); + + it('Handle AUTH_LOGOUT', () => { + expect( + token('token1', { + type: types.AUTH_LOGOUT + }) + ).toEqual(null); + + }); + + it('Handle AUTH_STORE_TOKEN', () => { + expect( + token(null, { + type: types.AUTH_STORE_TOKEN, + token: 'token1' + }) + ).toEqual('token1'); + }); +}); + +describe('auth reducer clientId', () => { + + it('should return the initial state', () => { + expect( + clientId(undefined, {}) + ).toEqual(null) + }); + + it('Handle AUTH_DEAUTHENTICATE', () => { + expect( + clientId(uuidV1(), { + type: types.AUTH_DEAUTHENTICATE + }) + ).toEqual(null); + }); + + it('Handle AUTH_LOGOUT', () => { + expect( + clientId(uuidV1(), { + type: types.AUTH_LOGOUT + }) + ).toEqual(null); + }); + + it('Handle AUTH_LOGIN_SUCCESS', () => { + expect( + clientId(uuidV1(), { + type: types.AUTH_LOGIN_SUCCESS + }) + ).toMatch(/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i); + }); +}); + +describe('auth reducer login', () => { + + it('should return the initial state', () => { + expect( + login(undefined, {}) + ).toEqual(asyncRequest) + }); + + it('Handle AUTH_LOGIN_REQUEST', () => { + expect( + login(asyncRequest, { + type: types.AUTH_LOGIN_REQUEST, + }) + ).toEqual({ + loading: true, + success: false, + error: false, + }); + }); + + it('Handle AUTH_LOGIN_SUCCESS', () => { + expect( + login(asyncRequest, { + type: types.AUTH_LOGIN_SUCCESS, + }) + ).toEqual({ + loading: false, + success: true, + error: false, + errorMessages: {}, + }); + }); + + it('Handle AUTH_LOGIN_ERROR', () => { + expect( + login(asyncRequest, { + type: types.AUTH_LOGIN_ERROR, + error: { + msg: "Bad credential" + } + }) + ).toEqual({ + loading: false, + success: false, + error: true, + errorMessages: { msg: "Bad credential" }, + }); + + }); + +}); + +describe('auth reducer register', () => { + + it('should return the initial state', () => { + expect( + register(undefined, {}) + ).toEqual(asyncRequest) + }); + + it('Handle AUTH_REGISTER_REQUEST', () => { + expect( + register(asyncRequest, { + type: types.AUTH_REGISTER_REQUEST, + }) + ).toEqual({ + loading: true, + success: false, + error: false, + }); + }); + + + it('Handle AUTH_LOGIN_SUCCESS', () => { + expect( + register(asyncRequest, { + type: types.AUTH_LOGIN_SUCCESS, + }) + ).toEqual({ + loading: false, + success: true, + error: false, + errorMessages: {} + }); + }); + + it('Handle AUTH_REGISTER_ERROR', () => { + expect( + register(asyncRequest, { + type: types.AUTH_REGISTER_ERROR, + error: { + msg: 'error when registering' + } + }) + ).toEqual({ + loading: false, + success: false, + error: true, + errorMessages: { msg: 'error when registering' } + }); + }); +}); + + +describe('auth reducer groups', () => { + + it('should return the initial state', () => { + expect( + groups(undefined, {}) + ).toEqual([]) + }); + + it('Handle GROUP_LOAD_SUCCESS', () => { + expect( + groups([], { + type: types.GROUP_LOAD_SUCCESS, + groups: [ + { name: 'group1', is_personal: false }, + { name: 'jdoe', is_personal: true } + ] + }) + ).toEqual([ + GroupRecord({ name: 'group1', isPersonal: false }), + GroupRecord({ name: 'jdoe', isPersonal: true }) + ]) + }); + + it('Handle GROUP_CREATE_SUCCESS', () => { + expect( + groups([ + GroupRecord({ name: 'group1', isPersonal: false }), + GroupRecord({ name: 'jdoe', isPersonal: true }) + ], { + type: types.GROUP_CREATE_SUCCESS, + group: { name: 'newGroup', is_personal: false }, + }) + ).toEqual([ + GroupRecord({ name: 'group1', isPersonal: false }), + GroupRecord({ name: 'jdoe', isPersonal: true }), + GroupRecord({ name: 'newGroup', isPersonal: false }), + ]) + + }); + + it('Handle AUTH_LOGOUT', () => { + expect( + groups([ + GroupRecord({ name: 'group1', isPersonal: false }), + GroupRecord({ name: 'jdoe', isPersonal: true }) + ], { + type: types.AUTH_LOGOUT, + }) + ).toEqual([]) + }); +}); + +describe('auth reducer createGroup', () => { + + it('should return the initial state', () => { + expect( + createGroup(undefined, {}) + ).toEqual(asyncRequest) + }); + + it('Handle GROUP_CREATE_ASYNC', () => { + }); + it('Handle GROUP_CREATE_SUCCESS', () => { + }); + it('Handle GROUP_CREATE_ERROR', () => { + }); +});