diff --git a/src/lib/middleware/pat-middleware.test.ts b/src/lib/middleware/pat-middleware.test.ts index 8690c040272..4927c67bb06 100644 --- a/src/lib/middleware/pat-middleware.test.ts +++ b/src/lib/middleware/pat-middleware.test.ts @@ -1,6 +1,7 @@ import getLogger from '../../test/fixtures/no-logger'; import patMiddleware from './pat-middleware'; import User from '../types/user'; +import NotFoundError from '../error/notfound-error'; let config: any; @@ -108,3 +109,37 @@ test('should call next if accountService throws exception', async () => { expect(cb).toHaveBeenCalled(); getLogger.setMuteError(false); }); + +test('Should not log at error level if user not found', async () => { + let fakeLogger = { + debug: () => {}, + info: () => {}, + warn: jest.fn(), + error: jest.fn(), + fatal: console.error, + }; + const conf = { + getLogger: () => { + return fakeLogger; + }, + flagResolver: { + isEnabled: jest.fn().mockReturnValue(true), + }, + }; + const accountService = { + getAccountByPersonalAccessToken: jest.fn().mockImplementation(() => { + throw new NotFoundError('Could not find pat'); + }), + }; + let mw = patMiddleware(conf, { accountService }); + const cb = jest.fn(); + + const req = { + header: jest.fn().mockReturnValue('user:some-token'), + user: undefined, + }; + + await mw(req, undefined, cb); + expect(fakeLogger.error).not.toHaveBeenCalled(); + expect(fakeLogger.warn).toHaveBeenCalled(); +}); diff --git a/src/lib/middleware/pat-middleware.ts b/src/lib/middleware/pat-middleware.ts index 947b743435c..a3ffc520dad 100644 --- a/src/lib/middleware/pat-middleware.ts +++ b/src/lib/middleware/pat-middleware.ts @@ -1,5 +1,6 @@ import { IUnleashConfig } from '../types'; import { IAuthRequest } from '../routes/unleash-types'; +import NotFoundError from '../error/notfound-error'; /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ const patMiddleware = ( @@ -21,7 +22,14 @@ const patMiddleware = ( accountService.addPATSeen(apiToken); } } catch (error) { - logger.error(error); + if (error instanceof NotFoundError) { + logger.warn( + 'Tried to use a PAT token for user that no longer existed', + error, + ); + } else { + logger.error(error); + } } next(); };