From 632a46e59c780aa846b4f991dfe3e6bcaeb43281 Mon Sep 17 00:00:00 2001 From: Rodrigo Borges Date: Sun, 23 Jun 2024 20:36:15 -0300 Subject: [PATCH] Fix tests failing due to mocked strategies The "this" context would become innacessible with the previous mocking approach. --- tests/strategy.test.ts | 69 ++++++++++++++++++++++++++++-------------- 1 file changed, 47 insertions(+), 22 deletions(-) diff --git a/tests/strategy.test.ts b/tests/strategy.test.ts index b0e051d..8555d15 100644 --- a/tests/strategy.test.ts +++ b/tests/strategy.test.ts @@ -16,6 +16,49 @@ declare global { } } +class SuccessStrategy extends Strategy { + private handler(token: string): void { + const payload = { sub: 1 }; + this.done(null, payload); + } + + public verifyGoogleIdToken(idToken: string): void { + this.handler(idToken); + } + + public verifyGoogleAccessToken(accessToken: string): void { + this.handler(accessToken); + } +} + +class ErrorStrategy extends Strategy { + private handler(token: string): void { + this.done({ message: 'Error message' }); + } + + public verifyGoogleIdToken(idToken: string): void { + this.handler(idToken); + } + + public verifyGoogleAccessToken(accessToken: string): void { + this.handler(accessToken); + } +} + +class NoParsedTokenStrategy extends Strategy { + private handler(token: string): void { + this.done(null, false, { message: 'Error message' }); + } + + public verifyGoogleIdToken(idToken: string): void { + this.handler(idToken); + } + + public verifyGoogleAccessToken(accessToken: string): void { + this.handler(accessToken); + } +} + describe('Strategy', () => { const verify = (parsedToken: any, googleId: any, done: (...args: any[]) => void) => { return done(null, { id: '1234' }, { scope: 'read' }); @@ -23,52 +66,34 @@ describe('Strategy', () => { const mockToken = '123456790-POIHANPRI-KNJYHHKIIH'; - const strategy = new Strategy( + const strategy = new SuccessStrategy( { clientID: 'DUMMY_CLIENT_ID', }, verify, ); - strategy.verifyGoogleIdToken = (idToken: string) => { - const payload = { sub: 1 }; - strategy.done(null, payload); - }; - - const strategyWClientIDArray = new Strategy( + const strategyWClientIDArray = new SuccessStrategy( { clientID: ['DUMMY_CLIENT_ID_1', 'DUMMY_CLIENT_ID_2', 'DUMMY_CLIENT_ID', 'DUMMY_CLIENT_ID_3'], }, verify, ); - strategyWClientIDArray.verifyGoogleIdToken = (idToken: string) => { - const payload = { sub: 1 }; - strategy.done(null, payload); - }; - - const strategyNoParsedToken = new Strategy( + const strategyNoParsedToken = new NoParsedTokenStrategy( { clientID: 'DUMMY_CLIENT_ID', }, verify, ); - strategyNoParsedToken.verifyGoogleIdToken = (idToken: string) => { - strategy.done(null, false, { message: 'Error message' }); - };; - - const strategyTokenError = new Strategy( + const strategyTokenError = new ErrorStrategy( { clientID: 'DUMMY_CLIENT_ID', }, verify, ); - strategyTokenError.verifyGoogleIdToken = (idToken: string) => { - strategy.done({ message: 'Error message' }); - }; - it('should be named google-verify-token', () => { expect(strategy.name).to.equal('google-verify-token'); });