1
0
mirror of https://github.com/verdaccio/verdaccio.git synced 2024-11-13 03:35:52 +01:00
verdaccio/test/unit/webui/utils/login.spec.js
Ayush Sharma 9cd3ccb408 fix: login without reload (#678) (#679) (#914)
* fix: login without reload (#678) (#679)

* fix: implements code review suggestions (#914)

* refactor: adds scope to the app

* refactor: handles null value from localstorage for username

* refactor: removes text type from <Input />

* refactor: replaces isNull with isNil

* refactor: improves makeLogin method

* refactor: adds error from api constant

* fix: updates error using API_ERROR constant in tests

* refactor: updates regex for moduleMapper in jest config
2018-08-20 16:29:47 +02:00

99 lines
3.0 KiB
JavaScript

import { isTokenExpire, makeLogin } from '../../../../src/webui/utils/login';
import {
generateTokenWithTimeRange,
generateTokenWithExpirationAsString,
generateTokenWithOutExpiration
} from '../components/__mocks__/token';
console.error = jest.fn();
jest.mock('.../../../../src/webui/utils/api', () => ({
request: require('../components/__mocks__/api').default.request
}));
describe('isTokenExpire', () => {
it('isTokenExpire - token is not present', () => {
expect(isTokenExpire()).toBeTruthy();
});
it('isTokenExpire - token is not a valid payload', () => {
expect(isTokenExpire('not_a_valid_token')).toBeTruthy();
});
it('isTokenExpire - token should not expire in 24 hrs range', () => {
const token = generateTokenWithTimeRange(24);
expect(isTokenExpire(token)).toBeFalsy();
});
it('isTokenExpire - token should expire for current time', () => {
const token = generateTokenWithTimeRange();
expect(isTokenExpire(token)).toBeTruthy();
});
it('isTokenExpire - token expiration is not available', () => {
const token = generateTokenWithOutExpiration();
expect(isTokenExpire(token)).toBeTruthy();
});
it('isTokenExpire - token is not a valid json token', () => {
const token = generateTokenWithExpirationAsString();
const result = [
'Invalid token:',
SyntaxError('Unexpected token o in JSON at position 1'),
'xxxxxx.W29iamVjdCBPYmplY3Rd.xxxxxx'
];
expect(isTokenExpire(token)).toBeTruthy();
expect(console.error).toBeCalledWith(...result);
});
});
describe('makeLogin', () => {
it('makeLogin - should give error for blank username and password', async () => {
const result = {
error: {
description: "Username or password can't be empty!",
title: 'Unable to login',
type: 'error'
}
};
const login = await makeLogin();
expect(login).toEqual(result);
});
it('makeLogin - should login successfully', async () => {
const { username, password } = { username: 'sam', password: '1234' };
const result = { token: 'TEST_TOKEN', username: 'sam' };
const login = await makeLogin(username, password);
expect(login).toEqual(result);
});
it('makeLogin - login should failed with 401', async () => {
const result = {
error: {
description: 'bad username/password, access denied',
title: 'Unable to login',
type: 'error'
}
};
const { username, password } = { username: 'sam', password: '123456' };
const login = await makeLogin(username, password);
expect(login).toEqual(result);
});
it('makeLogin - login should failed with when no data is sent', async () => {
const result = {
error: {
title: 'Unable to login',
type: 'error',
description: "Username or password can't be empty!"
}
};
const { username, password } = { username: '', password: '' };
const login = await makeLogin(username, password);
expect(login).toEqual(result);
});
});