diff --git a/src/__test__/solid-auth-client.spec.js b/src/__test__/solid-auth-client.spec.js index b63f57d..61802bc 100644 --- a/src/__test__/solid-auth-client.spec.js +++ b/src/__test__/solid-auth-client.spec.js @@ -411,6 +411,24 @@ describe('trackSession', () => { }) }) +describe('stopTrackSession', () => { + it('does not call callback on session change', async () => { + expect.assertions(4) + + const callback = jest.fn() + await instance.trackSession(callback) + expect(callback).toHaveBeenCalledTimes(1) + expect(callback).toHaveBeenLastCalledWith(null) + + instance.stopTrackSession(callback) + + const session = {} + instance.emit('session', session) + expect(callback).toHaveBeenCalledTimes(1) + expect(callback).toHaveBeenLastCalledWith(null) + }) +}) + describe('logout', () => { describe('WebID-OIDC', () => { let expectedIdToken, expectedAccessToken diff --git a/src/solid-auth-client.js b/src/solid-auth-client.js index 0989038..d641e8f 100644 --- a/src/solid-auth-client.js +++ b/src/solid-auth-client.js @@ -86,6 +86,10 @@ export default class SolidAuthClient extends EventEmitter { this.on('session', callback) } + stopTrackSession(callback: Function): void { + this.removeListener('session', callback) + } + async logout(storage: AsyncStorage = defaultStorage()): Promise { const session = await getSession(storage) if (session) {