UNPKG

whodis-react-storage-browser

Version:

React hooks and components for secure, best practices authentication in seconds

70 lines 3.64 kB
"use strict"; 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