UNPKG

mattermost-redux

Version:

Common code (API client, Redux stores, logic, utility functions) for building a Mattermost client

136 lines (109 loc) 4.81 kB
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. import assert from 'assert'; import nock from 'nock'; import * as Actions from 'actions/roles'; import {Client4} from 'client'; import {RequestStatus} from '../constants'; import TestHelper from 'test/test_helper'; import configureStore from 'test/test_store'; describe('Actions.Roles', () => { let store; beforeAll(async () => { await TestHelper.initBasic(Client4); }); beforeEach(async () => { store = await configureStore(); }); afterAll(async () => { await TestHelper.tearDown(); }); it('getRolesByNames', async () => { nock(Client4.getRolesRoute()). post('/names'). reply(200, [TestHelper.basicRoles.system_admin]); await Actions.getRolesByNames(['system_admin'])(store.dispatch, store.getState); const state = store.getState(); const request = state.requests.roles.getRolesByNames; const {roles} = state.entities.roles; if (request.status === RequestStatus.FAILURE) { throw new Error(JSON.stringify(request.error)); } assert.equal(roles.system_admin.name, 'system_admin'); assert.deepEqual(roles.system_admin.permissions, TestHelper.basicRoles.system_admin.permissions); }); it('getRoleByName', async () => { nock(Client4.getRolesRoute()). get('/name/system_admin'). reply(200, TestHelper.basicRoles.system_admin); await Actions.getRoleByName('system_admin')(store.dispatch, store.getState); const state = store.getState(); const request = state.requests.roles.getRolesByNames; const {roles} = state.entities.roles; if (request.status === RequestStatus.FAILURE) { throw new Error(JSON.stringify(request.error)); } assert.equal(roles.system_admin.name, 'system_admin'); assert.deepEqual(roles.system_admin.permissions, TestHelper.basicRoles.system_admin.permissions); }); it('getRole', async () => { nock(Client4.getRolesRoute()). get('/' + TestHelper.basicRoles.system_admin.id). reply(200, TestHelper.basicRoles.system_admin); await Actions.getRole(TestHelper.basicRoles.system_admin.id)(store.dispatch, store.getState); const state = store.getState(); const request = state.requests.roles.getRole; const {roles} = state.entities.roles; if (request.status === RequestStatus.FAILURE) { throw new Error(JSON.stringify(request.error)); } assert.equal(roles.system_admin.name, 'system_admin'); assert.deepEqual(roles.system_admin.permissions, TestHelper.basicRoles.system_admin.permissions); }); it('loadRolesIfNeeded', async () => { const mock1 = nock(Client4.getRolesRoute()). post('/names', JSON.stringify(['test'])). reply(200, []); const mock2 = nock(Client4.getRolesRoute()). post('/names', JSON.stringify(['test2'])). reply(200, []); const fakeState = { entities: { general: { serverVersion: '4.3', }, roles: { roles: { test: {}, }, }, }, }; await Actions.loadRolesIfNeeded(['test'])(store.dispatch, () => fakeState); assert(!mock1.isDone()); assert(!mock2.isDone()); fakeState.entities.roles.pending = new Set(); fakeState.entities.general.serverVersion = '4.3'; await Actions.loadRolesIfNeeded(['test', 'test2'])(store.dispatch, () => fakeState); assert(!mock1.isDone()); assert(!mock2.isDone()); fakeState.entities.roles.pending = new Set(); fakeState.entities.general.serverVersion = null; await Actions.loadRolesIfNeeded(['test', 'test2'])(store.dispatch, () => fakeState); assert(!mock1.isDone()); assert(!mock2.isDone()); fakeState.entities.roles.pending = new Set(); fakeState.entities.general.serverVersion = '4.9'; await Actions.loadRolesIfNeeded(['test', 'test2', ''])(store.dispatch, () => fakeState); assert(!mock1.isDone()); assert(mock2.isDone()); }); it('editRole', async () => { const roleId = TestHelper.basicRoles.system_admin.id; const mock = nock(Client4.getRolesRoute()). put('/' + roleId + '/patch', JSON.stringify({id: roleId, test: 'test'})). reply(200, {}); await Actions.editRole({id: roleId, test: 'test'})(store.dispatch, store.state); assert(mock.isDone()); }); });