|
- import test from 'ava';
- import nock from 'nock';
-
- import auth from '../src/services/auth';
- import {storageMock} from './_helpers';
-
- auth.localStorage = storageMock();
-
- const user = {
- email: 'test@lesspass.com',
- password: 'password'
- };
- const token = 'eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9';
-
- test('should make a post request to create a session', t => {
- nock('http://localhost/').post('/api/tokens/auth/', user).reply(201, {token});
- return auth.login(user).then(r => {
- t.is(token, r.token);
- });
- });
-
- test('should throw error if bad request', t => {
- nock('http://localhost/').post('/api/tokens/auth/', user).reply(400, {});
- t.plan(1);
- return auth.login(user).catch(err => {
- t.is(400, err.status);
- });
- });
-
- test('should get user info', t => {
- nock('http://localhost/').get('/api/auth/me/').reply(200, {email: user.email});
- return auth.getUser().then(u => {
- t.is(u.email, user.email);
- });
- });
-
- test('should register a user', t => {
- nock('http://localhost/').post('/api/auth/register/', user).reply(201, {email: user.email, pk: 1});
- return auth.register(user).then(r => {
- t.is(r.email, user.email);
- });
- });
-
- test('should store token in localStorage', t => {
- nock('http://localhost/').post('/api/tokens/auth/', user).reply(201, {token});
- t.plan(1);
- return auth.login(user).then(() => {
- t.is(token, auth.localStorage.getItem('token'));
- });
- });
-
- /* eslint camelcase: 0 */
- const credentials = {
- current_password: 'current password',
- new_password: 'new password'
- };
-
- const headers = {headers: {Authorization: `JWT ${token}`}};
-
- test('should send requests with Authorization header', t => {
- nock('http://localhost/', headers).post('/api/auth/password/').query(true).reply(200, {});
- return auth.changePassword(credentials).then(r => {
- t.is(r.status, 200);
- });
- });
-
- test('should change password', t => {
- nock('http://localhost/', headers).post('/api/auth/password/', credentials).reply(200, {});
- t.plan(1);
- return auth.changePassword(credentials).then(r => {
- t.is(r.status, 200);
- });
- });
-
- test('should authenticate the user', t => {
- nock('http://localhost/').post('/api/tokens/auth/', user).reply(201, {token});
- t.plan(1);
- return auth.login(user).then(() => {
- t.true(auth.user.authenticated);
- });
- });
-
- test('get token', t => {
- auth.localStorage.setItem('hwm-token', token);
- return auth.getToken('hwm-token').then(expectedToken => {
- t.is(token, expectedToken);
- });
- });
-
- test('get missing token failed', () => {
- auth.localStorage.removeItem('token');
- return auth.getToken('token').catch(() => {
- });
- });
-
- test('check refresh token non-expired', t => {
- const fakeToken = 'wibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9eyJzdWIiOiIxMjM0NTY3ODkwIi';
- nock('http://localhost/').post('/api/tokens/refresh/', {token}).reply(200, {token: fakeToken});
- return auth.refreshToken(token).then(newToken => {
- t.is(fakeToken, newToken);
- });
- });
-
- test('check refresh token expired', t => {
- auth.localStorage.setItem('token', token);
- nock('http://localhost/').post('/api/tokens/refresh/', {token}).reply(400);
- return auth.refreshToken(token).catch(err => {
- t.is(err.status, 400);
- });
- });
-
- test('logout', t => {
- auth.localStorage.setItem('token', token);
- auth.user.authenticated = true;
- auth.logout();
- t.false(auth.user.authenticated);
- t.true(auth.localStorage.getItem('token') === null);
- });
-
- test('check token with a valid token', t => {
- auth.localStorage.setItem('token', token);
- nock('http://localhost/').post('/api/tokens/verify/', {token}).reply(200, {});
- return auth.checkAuth().then(() => {
- t.true(auth.user.authenticated);
- });
- });
-
- test('check token with an invalid token', t => {
- nock('http://localhost/').post('/api/tokens/verify/', {token}).reply(400);
- auth.localStorage.setItem('token', token);
- t.plan(1);
- return auth.checkAuth().catch(() => {
- t.false(auth.user.authenticated);
- });
- });
-
- test('check auth without any token', t => {
- auth.user.authenticated = true;
- auth.localStorage.removeItem('token');
- return auth.checkAuth().catch(() => {
- t.true(!auth.user.authenticated);
- });
- });
|