--- /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', () => {
+ });
+});