mirror of
https://github.com/elyby/accounts-frontend.git
synced 2025-05-31 14:11:58 +05:30
#246: remove logout from user/actions. Use logoutAll from account/actions everywhere
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
import expect from 'unexpected';
|
||||
import sinon from 'sinon';
|
||||
|
||||
import { routeActions } from 'react-router-redux';
|
||||
|
||||
import accounts from 'services/api/accounts';
|
||||
import authentication from 'services/api/authentication';
|
||||
import {
|
||||
@@ -15,7 +17,7 @@ import {
|
||||
} from 'components/accounts/actions';
|
||||
import { SET_LOCALE } from 'components/i18n/actions';
|
||||
|
||||
import { updateUser } from 'components/user/actions';
|
||||
import { updateUser, setUser } from 'components/user/actions';
|
||||
|
||||
const account = {
|
||||
id: 1,
|
||||
@@ -257,6 +259,25 @@ describe('components/accounts/actions', () => {
|
||||
reset()
|
||||
]);
|
||||
});
|
||||
|
||||
it('should redirect to /login', () =>
|
||||
logoutAll()(dispatch, getState).then(() => {
|
||||
expect(dispatch, 'to have a call satisfying', [
|
||||
routeActions.push('/login')
|
||||
]);
|
||||
})
|
||||
);
|
||||
|
||||
it('should change user to guest', () =>
|
||||
logoutAll()(dispatch, getState).then(() => {
|
||||
expect(dispatch, 'to have a call satisfying', [
|
||||
setUser({
|
||||
lang: user.lang,
|
||||
isGuest: true
|
||||
})
|
||||
]);
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
describe('#logoutStrangers', () => {
|
||||
|
@@ -1,134 +1,2 @@
|
||||
import expect from 'unexpected';
|
||||
import sinon from 'sinon';
|
||||
|
||||
import { routeActions } from 'react-router-redux';
|
||||
|
||||
import request from 'services/request';
|
||||
import { reset, RESET } from 'components/accounts/actions';
|
||||
|
||||
import {
|
||||
logout,
|
||||
setUser
|
||||
} from 'components/user/actions';
|
||||
|
||||
|
||||
describe('components/user/actions', () => {
|
||||
const getState = sinon.stub().named('store.getState');
|
||||
const dispatch = sinon.spy((arg) =>
|
||||
typeof arg === 'function' ? arg(dispatch, getState) : arg
|
||||
).named('store.dispatch');
|
||||
|
||||
const callThunk = function(fn, ...args) {
|
||||
const thunk = fn(...args);
|
||||
|
||||
return thunk(dispatch, getState);
|
||||
};
|
||||
|
||||
beforeEach(() => {
|
||||
dispatch.reset();
|
||||
getState.reset();
|
||||
getState.returns({});
|
||||
sinon.stub(request, 'get').named('request.get');
|
||||
sinon.stub(request, 'post').named('request.post');
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
request.get.restore();
|
||||
request.post.restore();
|
||||
});
|
||||
|
||||
describe('#logout()', () => {
|
||||
beforeEach(() => {
|
||||
request.post.returns(Promise.resolve());
|
||||
});
|
||||
|
||||
describe('user with jwt', () => {
|
||||
const token = 'iLoveRockNRoll';
|
||||
|
||||
beforeEach(() => {
|
||||
getState.returns({
|
||||
user: {
|
||||
lang: 'foo'
|
||||
},
|
||||
accounts: {
|
||||
active: {token},
|
||||
available: [{token}]
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
it('should post to /api/authentication/logout with user jwt', () =>
|
||||
callThunk(logout).then(() => {
|
||||
expect(request.post, 'to have a call satisfying', [
|
||||
'/api/authentication/logout', {}, {
|
||||
token: expect.it('not to be empty')
|
||||
}
|
||||
]);
|
||||
})
|
||||
);
|
||||
|
||||
testChangedToGuest();
|
||||
testAccountsReset();
|
||||
testRedirectedToLogin();
|
||||
});
|
||||
|
||||
describe('user without jwt', () => {
|
||||
// (a guest with partially filled user's state)
|
||||
// DEPRECATED
|
||||
beforeEach(() => {
|
||||
getState.returns({
|
||||
user: {
|
||||
lang: 'foo'
|
||||
},
|
||||
accounts: {
|
||||
active: null,
|
||||
available: []
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
it('should not post to /api/authentication/logout', () =>
|
||||
callThunk(logout).then(() => {
|
||||
expect(request.post, 'was not called');
|
||||
})
|
||||
);
|
||||
|
||||
testChangedToGuest();
|
||||
testAccountsReset();
|
||||
testRedirectedToLogin();
|
||||
});
|
||||
|
||||
function testChangedToGuest() {
|
||||
it('should change user to guest', () =>
|
||||
callThunk(logout).then(() => {
|
||||
expect(dispatch, 'to have a call satisfying', [
|
||||
setUser({
|
||||
lang: 'foo',
|
||||
isGuest: true
|
||||
})
|
||||
]);
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
function testRedirectedToLogin() {
|
||||
it('should redirect to /login', () =>
|
||||
callThunk(logout).then(() => {
|
||||
expect(dispatch, 'to have a call satisfying', [
|
||||
routeActions.push('/login')
|
||||
]);
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
function testAccountsReset() {
|
||||
it(`should dispatch ${RESET}`, () =>
|
||||
callThunk(logout).then(() => {
|
||||
expect(dispatch, 'to have a call satisfying', [
|
||||
reset()
|
||||
]);
|
||||
})
|
||||
);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
Reference in New Issue
Block a user