Skip to content

Commit 1b59569

Browse files
committed
Add handling of null auth events
1 parent 0579912 commit 1b59569

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

packages-exp/auth-exp/src/platform_browser/popup_redirect.test.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,22 @@ describe('src/platform_browser/popup_redirect', () => {
247247
});
248248
});
249249

250+
it('errors with invalid event if null event', async () => {
251+
const manager = (await resolver._initialize(auth)) as AuthEventManager;
252+
sinon.stub(manager, 'onEvent').returns(true);
253+
254+
expect(() => onIframeMessage({
255+
type: 'authEvent',
256+
authEvent: null as unknown as AuthEvent,
257+
})).to.throw(FirebaseError, 'auth/invalid-auth-event');
258+
});
259+
260+
it('errors with invalid event if everything is null', async () => {
261+
const manager = (await resolver._initialize(auth)) as AuthEventManager;
262+
sinon.stub(manager, 'onEvent').returns(true);
263+
expect(() => onIframeMessage(null as unknown as GapiAuthEvent)).to.throw(FirebaseError, 'auth/invalid-auth-event');
264+
});
265+
250266
it('returns error to the iframe if the event was not handled', async () => {
251267
const manager = (await resolver._initialize(auth)) as AuthEventManager;
252268
sinon.stub(manager, 'onEvent').returns(false);

packages-exp/auth-exp/src/platform_browser/popup_redirect.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,11 @@ class BrowserPopupRedirectResolver implements PopupRedirectResolver {
111111
const manager = new AuthEventManager(auth.name);
112112
iframe.register<GapiAuthEvent>(
113113
'authEvent',
114-
({ authEvent }: GapiAuthEvent) => {
114+
(iframeEvent: GapiAuthEvent|null) => {
115+
assert(iframeEvent?.authEvent, AuthErrorCode.INVALID_AUTH_EVENT, {appName: auth.name});
115116
// TODO: Consider splitting redirect and popup events earlier on
116-
const handled = manager.onEvent(authEvent);
117+
118+
const handled = manager.onEvent(iframeEvent.authEvent);
117119
return { status: handled ? GapiOutcome.ACK : GapiOutcome.ERROR };
118120
},
119121
gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER

0 commit comments

Comments
 (0)