From 6a327b477a297152a902d55cf348b40f0ece93be Mon Sep 17 00:00:00 2001 From: Katalina Okano Date: Sun, 14 Mar 2021 18:54:42 -0400 Subject: [PATCH] add tests to new-session --- .../src/pages/machinery/new-session.spec.tsx | 34 +++++++++++++++++++ .../web/src/pages/machinery/new-session.tsx | 11 +++--- 2 files changed, 41 insertions(+), 4 deletions(-) create mode 100644 packages/web/src/pages/machinery/new-session.spec.tsx diff --git a/packages/web/src/pages/machinery/new-session.spec.tsx b/packages/web/src/pages/machinery/new-session.spec.tsx new file mode 100644 index 0000000..00d5c6c --- /dev/null +++ b/packages/web/src/pages/machinery/new-session.spec.tsx @@ -0,0 +1,34 @@ +import { render, screen } from '@testing-library/react'; +import { useSessionContext } from '../../contexts/session/SessionContext'; +import NewSession from './new-session'; + +const setupSessionMock = jest.fn(); +(useSessionContext as jest.Mock) = jest.fn(() => ({ + setupSession: setupSessionMock, + isAuthenticated: true, +})); + +const testSessionID = 'sessionid1234'; + +it('sets up the session', () => { + render(); + + expect(useSessionContext).toBeCalled(); + expect(setupSessionMock).toBeCalledWith('sessionid1234'); +}); + +it('redirects to the correct location when rp_postauth_redirect is set', async () => { + localStorage.setItem('rp_postauth_redirect', '/hello_world'); + render(); + + const bounceLink = screen.getByText("If you aren't redirected soon, click here."); + expect(bounceLink.getAttribute('href')).toBe('/hello_world'); +}); + +it('redirects to the correct location by default', async () => { + localStorage.setItem('rp_postauth_redirect', '/servers'); + render(); + + const bounceLink = screen.getByText("If you aren't redirected soon, click here."); + expect(bounceLink.getAttribute('href')).toBe('/servers'); +}); diff --git a/packages/web/src/pages/machinery/new-session.tsx b/packages/web/src/pages/machinery/new-session.tsx index aa80af6..4cc009e 100644 --- a/packages/web/src/pages/machinery/new-session.tsx +++ b/packages/web/src/pages/machinery/new-session.tsx @@ -8,10 +8,6 @@ const NewSession = (props: { sessionID: string }) => { const { setupSession, isAuthenticated } = useSessionContext(); const [postauthUrl, setPostauthUrl] = React.useState('/servers'); - React.useEffect(() => { - setupSession(props.sessionID); - }, [props.sessionID, setupSession]); - React.useEffect(() => { const storedPostauthUrl = localStorage.getItem('rp_postauth_redirect'); if (storedPostauthUrl) { @@ -20,6 +16,13 @@ const NewSession = (props: { sessionID: string }) => { } }, [setPostauthUrl]); + React.useCallback( + (sessionID) => { + setupSession(sessionID); + }, + [setupSession] + )(props.sessionID); + return ( <>