mirror of
https://github.com/SomboChea/ui
synced 2026-01-17 16:45:49 +07:00
committed by
Ayush Sharma
parent
1070e5c3aa
commit
9d7be476ad
98
test/unit/utils/login.spec.js
Normal file
98
test/unit/utils/login.spec.js
Normal file
@@ -0,0 +1,98 @@
|
||||
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', () => {
|
||||
test('isTokenExpire - token is not present', () => {
|
||||
expect(isTokenExpire()).toBeTruthy();
|
||||
});
|
||||
|
||||
test('isTokenExpire - token is not a valid payload', () => {
|
||||
expect(isTokenExpire('not_a_valid_token')).toBeTruthy();
|
||||
});
|
||||
|
||||
test('isTokenExpire - token should not expire in 24 hrs range', () => {
|
||||
const token = generateTokenWithTimeRange(24);
|
||||
expect(isTokenExpire(token)).toBeFalsy();
|
||||
});
|
||||
|
||||
test('isTokenExpire - token should expire for current time', () => {
|
||||
const token = generateTokenWithTimeRange();
|
||||
expect(isTokenExpire(token)).toBeTruthy();
|
||||
});
|
||||
|
||||
test('isTokenExpire - token expiration is not available', () => {
|
||||
const token = generateTokenWithOutExpiration();
|
||||
expect(isTokenExpire(token)).toBeTruthy();
|
||||
});
|
||||
|
||||
test('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).toHaveBeenCalledWith(...result);
|
||||
});
|
||||
});
|
||||
|
||||
describe('makeLogin', () => {
|
||||
test('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);
|
||||
});
|
||||
|
||||
test('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);
|
||||
});
|
||||
|
||||
test('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);
|
||||
});
|
||||
|
||||
test('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);
|
||||
});
|
||||
});
|
||||
89
test/unit/utils/package.spec.js
Normal file
89
test/unit/utils/package.spec.js
Normal file
@@ -0,0 +1,89 @@
|
||||
import {
|
||||
formatLicense,
|
||||
formatRepository,
|
||||
formatDate,
|
||||
formatDateDistance,
|
||||
getLastUpdatedPackageTime,
|
||||
getRecentReleases
|
||||
} from '../../../src/webui/utils/package';
|
||||
|
||||
import { packageMeta } from '../components/store/packageMeta';
|
||||
|
||||
describe('formatLicense', () => {
|
||||
test('should check license field different values', () => {
|
||||
expect(formatLicense('MIT')).toEqual('MIT');
|
||||
});
|
||||
test('should check license field for object value', () => {
|
||||
const license = { type: 'ISC', url: 'https://opensource.org/licenses/ISC' };
|
||||
expect(formatLicense(license)).toEqual('ISC');
|
||||
});
|
||||
test('should check license field for other value', () => {
|
||||
expect(formatLicense(null)).toBeNull();
|
||||
expect(formatLicense({})).toBeNull();
|
||||
expect(formatLicense([])).toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
describe('formatRepository', () => {
|
||||
test('should check repository field different values', () => {
|
||||
const repository = 'https://github.com/verdaccio/verdaccio';
|
||||
expect(formatRepository(repository)).toEqual(repository);
|
||||
});
|
||||
test('should check repository field for object value', () => {
|
||||
const license = {
|
||||
type: 'git',
|
||||
url: 'https://github.com/verdaccio/verdaccio'
|
||||
};
|
||||
expect(formatRepository(license)).toEqual(license.url);
|
||||
});
|
||||
test('should check repository field for other value', () => {
|
||||
expect(formatRepository(null)).toBeNull();
|
||||
expect(formatRepository({})).toBeNull();
|
||||
expect(formatRepository([])).toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
describe('formatDate', () => {
|
||||
test('should format the date', () => {
|
||||
const date = 1532211072138;
|
||||
expect(formatDate(date)).toEqual('21.07.2018, 22:11:12');
|
||||
});
|
||||
});
|
||||
|
||||
describe('formatDateDistance', () => {
|
||||
test('should calculate the distance', () => {
|
||||
const dateTwoMonthsAgo = () => {
|
||||
const date = new Date();
|
||||
date.setMonth(date.getMonth() - 2);
|
||||
return date;
|
||||
};
|
||||
const date = dateTwoMonthsAgo();
|
||||
expect(formatDateDistance(date)).toEqual('about 2 months');
|
||||
});
|
||||
});
|
||||
|
||||
describe('getLastUpdatedPackageTime', () => {
|
||||
test('should get the last update time', () => {
|
||||
const lastUpdated = packageMeta._uplinks;
|
||||
expect(getLastUpdatedPackageTime(lastUpdated)).toEqual(
|
||||
'22.07.2018, 22:11:12'
|
||||
);
|
||||
});
|
||||
test('should get the last update time for blank uplink', () => {
|
||||
const lastUpdated = {};
|
||||
expect(getLastUpdatedPackageTime(lastUpdated)).toEqual('');
|
||||
});
|
||||
});
|
||||
|
||||
describe('getRecentReleases', () => {
|
||||
test('should get the recent releases', () => {
|
||||
const { time } = packageMeta;
|
||||
const result = [
|
||||
{ time: '14.12.2017, 15:43:27', version: '2.7.1' },
|
||||
{ time: '05.12.2017, 23:25:06', version: '2.7.0' },
|
||||
{ time: '08.11.2017, 22:47:16', version: '2.6.6' }
|
||||
];
|
||||
expect(getRecentReleases(time)).toEqual(result);
|
||||
expect(getRecentReleases()).toEqual([]);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user