Skip to content

Commit a684219

Browse files
committed
Make sub/user_id required in typing.
1 parent f3aebe0 commit a684219

File tree

4 files changed

+15
-8
lines changed

4 files changed

+15
-8
lines changed

packages/database/src/api/Database.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,11 @@
1818

1919
import { FirebaseApp } from '@firebase/app-types';
2020
import { FirebaseService } from '@firebase/app-types/private';
21-
import { validateArgCount, Compat, FirebaseIdToken } from '@firebase/util';
21+
import {
22+
validateArgCount,
23+
Compat,
24+
EmulatorMockTokenOptions
25+
} from '@firebase/util';
2226

2327
import {
2428
FirebaseDatabase as ExpDatabase,
@@ -64,7 +68,7 @@ export class Database implements FirebaseService, Compat<ExpDatabase> {
6468
host: string,
6569
port: number,
6670
options: {
67-
mockUserToken?: Partial<FirebaseIdToken>;
71+
mockUserToken?: EmulatorMockTokenOptions;
6872
} = {}
6973
): void {
7074
useDatabaseEmulator(this._delegate, host, port, options);

packages/database/src/exp/Database.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import { Provider } from '@firebase/component';
2727
import {
2828
getModularInstance,
2929
createMockUserToken,
30-
FirebaseIdToken
30+
EmulatorMockTokenOptions
3131
} from '@firebase/util';
3232

3333
import {
@@ -298,7 +298,7 @@ export function useDatabaseEmulator(
298298
host: string,
299299
port: number,
300300
options: {
301-
mockUserToken?: Partial<FirebaseIdToken>;
301+
mockUserToken?: EmulatorMockTokenOptions;
302302
} = {}
303303
): void {
304304
db = getModularInstance(db);

packages/util/src/emulator.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export type FirebaseSignInProvider =
3333
| 'microsoft.com'
3434
| 'apple.com';
3535

36-
export interface FirebaseIdToken {
36+
interface FirebaseIdToken {
3737
// Always set to https://securetoken.google.com/PROJECT_ID
3838
iss: string;
3939

@@ -90,8 +90,11 @@ export interface FirebaseIdToken {
9090
uid?: never; // Try to catch a common mistake of "uid" (should be "sub" instead).
9191
}
9292

93+
export type EmulatorMockTokenOptions = ({ user_id: string } | { sub: string }) &
94+
Partial<FirebaseIdToken>;
95+
9396
export function createMockUserToken(
94-
token: Partial<FirebaseIdToken>,
97+
token: EmulatorMockTokenOptions,
9598
projectId?: string
9699
): string {
97100
if (token.uid) {

packages/util/test/emulator.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
*/
1717
import { expect } from 'chai';
1818
import { base64 } from '../src/crypt';
19-
import { createMockUserToken, FirebaseIdToken } from '../src/emulator';
19+
import { createMockUserToken, EmulatorMockTokenOptions } from '../src/emulator';
2020

2121
// Firebase Auth tokens contain snake_case claims following the JWT standard / convention.
2222
/* eslint-disable camelcase */
@@ -50,7 +50,7 @@ describe('createMockUserToken()', () => {
5050
const options = { uid: 'alice' };
5151

5252
expect(() =>
53-
createMockUserToken((options as unknown) as Partial<FirebaseIdToken>)
53+
createMockUserToken((options as unknown) as EmulatorMockTokenOptions)
5454
).to.throw(
5555
'Invalid Firebase token field "uid". Did you mean "sub" (for Firebase Auth User ID)?'
5656
);

0 commit comments

Comments
 (0)