mirror of
https://github.com/crypto-pro-web/crypto-pro-js.git
synced 2025-04-21 13:03:07 +03:00
65 lines
2.7 KiB
TypeScript
65 lines
2.7 KiB
TypeScript
import 'cadesplugin';
|
||
import 'console-mock';
|
||
import { isValidSystemSetup } from './isValidSystemSetup';
|
||
import { getSystemInfo } from './getSystemInfo';
|
||
import { _isSupportedCadesVersion } from '../helpers/_isSupportedCadesVersion';
|
||
import { _isSupportedCSPVersion } from '../helpers/_isSupportedCSPVersion';
|
||
|
||
jest.mock('./getSystemInfo', () => ({ getSystemInfo: jest.fn() }));
|
||
jest.mock('../helpers/_isSupportedCadesVersion', () => ({ _isSupportedCadesVersion: jest.fn() }));
|
||
jest.mock('../helpers/_isSupportedCSPVersion', () => ({ _isSupportedCSPVersion: jest.fn() }));
|
||
|
||
beforeEach(() => {
|
||
(getSystemInfo as jest.Mock).mockClear();
|
||
(_isSupportedCadesVersion as jest.Mock).mockClear();
|
||
(_isSupportedCSPVersion as jest.Mock).mockClear();
|
||
});
|
||
|
||
describe('isValidSystemSetup', () => {
|
||
(getSystemInfo as jest.Mock).mockImplementation(() => ({
|
||
cadesVersion: '2.0.13771',
|
||
cspVersion: '4.0.9971',
|
||
}));
|
||
(_isSupportedCadesVersion as jest.Mock).mockImplementation(() => true);
|
||
(_isSupportedCSPVersion as jest.Mock).mockImplementation(() => true);
|
||
|
||
describe('positive scenario', () => {
|
||
test("calls getSystemInfo to verify that it's possible", async () => {
|
||
await isValidSystemSetup();
|
||
|
||
expect(getSystemInfo).toHaveBeenCalledTimes(1);
|
||
});
|
||
|
||
test('checks for validity using separate external helpers', async () => {
|
||
await isValidSystemSetup();
|
||
|
||
expect(_isSupportedCadesVersion).toHaveBeenCalledTimes(1);
|
||
expect(_isSupportedCSPVersion).toHaveBeenCalledTimes(1);
|
||
});
|
||
});
|
||
|
||
describe('negative scenario', () => {
|
||
test('throws error from getSystemInfo', async () => {
|
||
const errorMessage = 'Какая-то синтаксическая ошибка';
|
||
const vendorErrorMessage = 'Произошла ошибка из-за какой-то проблемы';
|
||
|
||
(getSystemInfo as jest.Mock).mockImplementationOnce(() => Promise.reject(new Error(errorMessage)));
|
||
(window.cadesplugin.getLastError as jest.Mock).mockImplementationOnce(() => new Error(vendorErrorMessage));
|
||
|
||
await expect(isValidSystemSetup()).rejects.toThrowError(vendorErrorMessage);
|
||
});
|
||
|
||
test('throws error if cades version is unsupported', async () => {
|
||
(_isSupportedCadesVersion as jest.Mock).mockImplementationOnce(() => false);
|
||
|
||
await expect(isValidSystemSetup()).rejects.toThrowError('Не поддерживаемая версия плагина');
|
||
});
|
||
|
||
test('throws error if CSP version is unsupported', async () => {
|
||
(_isSupportedCSPVersion as jest.Mock).mockImplementationOnce(() => false);
|
||
|
||
await expect(isValidSystemSetup()).rejects.toThrowError('Не поддерживаемая версия CSP');
|
||
});
|
||
});
|
||
});
|