From fb7a0f43e1ffe15bbcfb7a8b5b5130c6a529ee01 Mon Sep 17 00:00:00 2001 From: Yury Shkoda Date: Mon, 26 Jul 2021 12:17:19 +0300 Subject: [PATCH] test(session): added test to cover 304 response --- src/test/SessionManager.spec.ts | 36 +++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/src/test/SessionManager.spec.ts b/src/test/SessionManager.spec.ts index c818d4f..d9b7cc0 100644 --- a/src/test/SessionManager.spec.ts +++ b/src/test/SessionManager.spec.ts @@ -3,6 +3,7 @@ import { RequestClient } from '../request/RequestClient' import { NoSessionStateError } from '../types/errors' import * as dotenv from 'dotenv' import axios from 'axios' +import { Logger, LogLevel } from '@sasjs/utils' jest.mock('axios') const mockedAxios = axios as jest.Mocked @@ -47,12 +48,26 @@ describe('SessionManager', () => { }) describe('waitForSession', () => { - it('should reject with NoSessionStateError if SAS server did not provide session state', async () => { - const responseStatus = 304 + beforeEach(() => { + ;(process as any).logger = new Logger(LogLevel.Off) + }) - mockedAxios.get.mockImplementation(() => - Promise.resolve({ data: '', status: responseStatus }) - ) + it('should reject with NoSessionStateError if SAS server did not provide session state', async () => { + let requestAttempt = 0 + + mockedAxios.get.mockImplementation(() => { + requestAttempt += 1 + + if (requestAttempt > 10) { + return Promise.resolve({ data: 'idle', status: 200 }) + } + + return Promise.resolve({ data: '', status: 304 }) + }) + + mockedAxios + + jest.spyOn((process as any).logger, 'info') await expect( sessionManager['waitForSession']( @@ -70,12 +85,11 @@ describe('SessionManager', () => { null, 'access_token' ) - ).rejects.toEqual( - new NoSessionStateError( - responseStatus, - process.env.SERVER_URL as string, - 'logUrl' - ) + ).resolves.toEqual('idle') + + expect((process as any).logger.info).toHaveBeenCalledTimes(1) + expect((process as any).logger.info).toHaveBeenLastCalledWith( + `Could not get session state. Server responded with 304 whilst checking state: ${process.env.SERVER_URL}` ) }) })