whodis-react-storage-browser
Version:
React hooks and components for secure, best practices authentication in seconds
70 lines • 3.64 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const test_fns_1 = require("test-fns");
const url_fns_1 = require("url-fns");
const getCurrentUrl_1 = require("../env/getCurrentUrl");
const isServerSideRendering_1 = require("../env/isServerSideRendering");
const setCurrentUrl_1 = require("../env/setCurrentUrl");
const setTokenToStorage_1 = require("../storage/setTokenToStorage");
const loadAntiCsrfTokenFromQueryParamsIfNeeded_1 = require("./loadAntiCsrfTokenFromQueryParamsIfNeeded");
jest.mock('../env/isServerSideRendering');
const isServerSideRenderingMock = isServerSideRendering_1.isServerSideRendering;
jest.mock('../env/getCurrentUrl');
const getCurrentUrlMock = getCurrentUrl_1.getCurrentUrl;
jest.mock('../storage/setTokenToStorage');
const setTokenToStorageMock = setTokenToStorage_1.setTokenToStorage;
jest.mock('../env/setCurrentUrl');
const setCurrentUrlMock = setCurrentUrl_1.setCurrentUrl;
describe('loadAntiCsrfTokenFromQueyParamsIfNeeded', () => {
beforeEach(() => jest.resetAllMocks());
(0, test_fns_1.given)('running on server', () => {
beforeEach(() => {
isServerSideRenderingMock.mockReturnValue(true);
});
(0, test_fns_1.when)('called', () => {
(0, test_fns_1.then)('throws an error', () => {
const error = (0, test_fns_1.getError)(() => (0, loadAntiCsrfTokenFromQueryParamsIfNeeded_1.loadAntiCsrfTokenFromQueryParamsIfNeeded)());
expect(error.message).toContain('should not have attempted to load anti-csrf-token from queryparams on serverside');
});
});
});
(0, test_fns_1.given)('running on device', () => {
beforeEach(() => {
isServerSideRenderingMock.mockReturnValue(false);
});
(0, test_fns_1.when)('no anti-csrf-token in queryparams', () => {
beforeEach(() => {
getCurrentUrlMock.mockReturnValue((0, url_fns_1.createUrl)({ path: 'some/path', queryParams: { no: 'nothin' } }));
});
it('should do nothing', () => {
(0, loadAntiCsrfTokenFromQueryParamsIfNeeded_1.loadAntiCsrfTokenFromQueryParamsIfNeeded)();
expect(setTokenToStorageMock).not.toHaveBeenCalled();
expect(setCurrentUrlMock).not.toHaveBeenCalled();
});
});
(0, test_fns_1.when)('has anti-csrf-token in queryparams', () => {
beforeEach(() => {
getCurrentUrlMock.mockReturnValue((0, url_fns_1.createUrl)({
path: 'some/path',
queryParams: { otherparam: 'value', acsrft: '__anti_csrf_token__' },
}));
});
it('should set the token to storage', () => {
(0, loadAntiCsrfTokenFromQueryParamsIfNeeded_1.loadAntiCsrfTokenFromQueryParamsIfNeeded)();
expect(setTokenToStorageMock).toHaveBeenCalled();
expect(setTokenToStorageMock).toHaveBeenCalledWith({
token: '__anti_csrf_token__',
});
});
it('should replace the token from url', () => {
(0, loadAntiCsrfTokenFromQueryParamsIfNeeded_1.loadAntiCsrfTokenFromQueryParamsIfNeeded)();
expect(setCurrentUrlMock).toHaveBeenCalled();
expect(setCurrentUrlMock).toHaveBeenCalledWith({
method: 'replace',
to: '/some/path?otherparam=value', // without the anticsrf token param
});
});
});
});
});
//# sourceMappingURL=loadAntiCsrfTokenFromQueryParamsIfNeeded.test.js.map