Skip to content

Commit 3c6a11c

Browse files
authored
Implement mockUserToken for Storage and fix bugs. (#5282)
* Add mockUserToken typing for storage. * Implement mockUserToken for Storage and fix bugs. * Revert RUT changes. * Create wise-toys-care.md * Set EOL to unix style. * Address review feedback.
1 parent 064e1ca commit 3c6a11c

File tree

24 files changed

+232
-51
lines changed

24 files changed

+232
-51
lines changed

.changeset/wise-toys-care.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
'@firebase/database-types': minor
3+
'@firebase/database': minor
4+
'firebase': minor
5+
'@firebase/firestore-types': minor
6+
'@firebase/firestore': minor
7+
'@firebase/storage-types': minor
8+
'@firebase/storage': minor
9+
'@firebase/util': minor
10+
---
11+
12+
Implement mockUserToken for Storage and fix JWT format bugs.

common/api-review/database.api.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export function child(parent: DatabaseReference, path: string): DatabaseReferenc
1212

1313
// @public
1414
export function connectDatabaseEmulator(db: Database, host: string, port: number, options?: {
15-
mockUserToken?: EmulatorMockTokenOptions;
15+
mockUserToken?: EmulatorMockTokenOptions | string;
1616
}): void;
1717

1818
// @public

common/api-review/firestore-lite.api.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ export class CollectionReference<T = DocumentData> extends Query<T> {
5151

5252
// @public
5353
export function connectFirestoreEmulator(firestore: Firestore, host: string, port: number, options?: {
54-
mockUserToken?: EmulatorMockTokenOptions;
54+
mockUserToken?: EmulatorMockTokenOptions | string;
5555
}): void;
5656

5757
// @public

common/api-review/firestore.api.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ export class CollectionReference<T = DocumentData> extends Query<T> {
5757

5858
// @public
5959
export function connectFirestoreEmulator(firestore: Firestore, host: string, port: number, options?: {
60-
mockUserToken?: EmulatorMockTokenOptions;
60+
mockUserToken?: EmulatorMockTokenOptions | string;
6161
}): void;
6262

6363
// @public

common/api-review/storage.api.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import { AppCheckInternalComponentName } from '@firebase/app-check-interop-types';
88
import { CompleteFn } from '@firebase/util';
9+
import { EmulatorMockTokenOptions } from '@firebase/util';
910
import { FirebaseApp } from '@firebase/app';
1011
import { FirebaseAuthInternalName } from '@firebase/auth-interop-types';
1112
import { FirebaseError } from '@firebase/util';
@@ -16,7 +17,9 @@ import { Subscribe } from '@firebase/util';
1617
import { Unsubscribe } from '@firebase/util';
1718

1819
// @public
19-
export function connectStorageEmulator(storage: FirebaseStorage, host: string, port: number): void;
20+
export function connectStorageEmulator(storage: FirebaseStorage, host: string, port: number, options?: {
21+
mockUserToken?: EmulatorMockTokenOptions | string;
22+
}): void;
2023

2124
// @public
2225
export function deleteObject(ref: StorageReference): Promise<void>;

packages/database-types/index.d.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
*/
1717

1818
import { FirebaseApp } from '@firebase/app-types';
19+
import { EmulatorMockTokenOptions } from '@firebase/util';
1920

2021
export interface DataSnapshot {
2122
child(path: string): DataSnapshot;
@@ -34,7 +35,13 @@ export interface DataSnapshot {
3435

3536
export interface Database {
3637
app: FirebaseApp;
37-
useEmulator(host: string, port: number): void;
38+
useEmulator(
39+
host: string,
40+
port: number,
41+
options?: {
42+
mockUserToken?: EmulatorMockTokenOptions | string;
43+
}
44+
): void;
3845
goOffline(): void;
3946
goOnline(): void;
4047
ref(path?: string | Reference): Reference;
@@ -44,7 +51,13 @@ export interface Database {
4451
export class FirebaseDatabase implements Database {
4552
private constructor();
4653
app: FirebaseApp;
47-
useEmulator(host: string, port: number): void;
54+
useEmulator(
55+
host: string,
56+
port: number,
57+
options?: {
58+
mockUserToken?: EmulatorMockTokenOptions | string;
59+
}
60+
): void;
4861
goOffline(): void;
4962
goOnline(): void;
5063
ref(path?: string | Reference): Reference;

packages/database-types/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
"index.d.ts"
1313
],
1414
"dependencies": {
15-
"@firebase/app-types": "0.6.3"
15+
"@firebase/app-types": "0.6.3",
16+
"@firebase/util": "1.2.0"
1617
},
1718
"repository": {
1819
"directory": "packages/database-types",

packages/database/src/exp/Database.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ export function connectDatabaseEmulator(
308308
host: string,
309309
port: number,
310310
options: {
311-
mockUserToken?: EmulatorMockTokenOptions;
311+
mockUserToken?: EmulatorMockTokenOptions | string;
312312
} = {}
313313
): void {
314314
db = getModularInstance(db);
@@ -329,10 +329,10 @@ export function connectDatabaseEmulator(
329329
}
330330
tokenProvider = new EmulatorTokenProvider(EmulatorTokenProvider.OWNER);
331331
} else if (options.mockUserToken) {
332-
const token = createMockUserToken(
333-
options.mockUserToken,
334-
db.app.options.projectId
335-
);
332+
const token =
333+
typeof options.mockUserToken === 'string'
334+
? options.mockUserToken
335+
: createMockUserToken(options.mockUserToken, db.app.options.projectId);
336336
tokenProvider = new EmulatorTokenProvider(token);
337337
}
338338

packages/firebase/index.d.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5907,7 +5907,7 @@ declare namespace firebase.database {
59075907
host: string,
59085908
port: number,
59095909
options?: {
5910-
mockUserToken?: EmulatorMockTokenOptions;
5910+
mockUserToken?: EmulatorMockTokenOptions | string;
59115911
}
59125912
): void;
59135913
/**
@@ -7850,8 +7850,11 @@ declare namespace firebase.storage {
78507850
*
78517851
* @param host - The emulator host (ex: localhost)
78527852
* @param port - The emulator port (ex: 5001)
7853+
* @param options.mockUserToken the mock auth token to use for unit testing Security Rules
78537854
*/
7854-
useEmulator(host: string, port: number): void;
7855+
useEmulator(host: string, port: number, options?: {
7856+
mockUserToken?: EmulatorMockTokenOptions | string;
7857+
}): void;
78557858
}
78567859

78577860
/**
@@ -8382,7 +8385,7 @@ declare namespace firebase.firestore {
83828385
host: string,
83838386
port: number,
83848387
options?: {
8385-
mockUserToken?: EmulatorMockTokenOptions;
8388+
mockUserToken?: EmulatorMockTokenOptions | string;
83868389
}
83878390
): void;
83888391

packages/firestore-types/index.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ export class FirebaseFirestore {
6565
host: string,
6666
port: number,
6767
options?: {
68-
mockUserToken?: EmulatorMockTokenOptions;
68+
mockUserToken?: EmulatorMockTokenOptions | string;
6969
}
7070
): void;
7171

0 commit comments

Comments
 (0)