15
15
* limitations under the License.
16
16
*/
17
17
18
- import { createMockUserToken } from '@firebase/util' ;
18
+ import firebase from 'firebase/compat/app' ;
19
+ import 'firebase/firestore/compat' ;
20
+ import 'firebase/database/compat' ;
21
+ import 'firebase/storage/compat' ;
19
22
20
- // TODO: Change these imports to firebase/* once exp packages are moved into their places.
21
- import {
22
- connectDatabaseEmulator ,
23
- Database ,
24
- set ,
25
- ref
26
- } from '@firebase/database/dist/exp' ;
27
- import {
28
- FirestoreSettings ,
29
- Firestore ,
30
- connectFirestoreEmulator
31
- } from '@firebase/firestore/dist/exp' ;
32
- import { connectStorageEmulator , FirebaseStorage } from '@firebase/storage/exp' ;
33
-
34
- import { FirebaseApp } from '@firebase/app-types' ;
35
23
import {
36
24
HostAndPort ,
37
25
RulesTestContext ,
38
26
RulesTestEnvironment ,
39
27
TokenOptions
40
28
} from '../public_types' ;
41
- import firebase from '@firebase/app-compat' ;
42
- import '@firebase/firestore/dist/compat/esm2017/firestore/index' ;
43
- import '@firebase/database/dist/compat/esm2017/index' ;
44
- import '@firebase/storage/dist/compat/esm2017/index' ;
45
29
46
30
import { DiscoveredEmulators } from './discovery' ;
47
31
@@ -64,15 +48,11 @@ export class RulesTestEnvironmentImpl implements RulesTestEnvironment {
64
48
tokenOptions ?: TokenOptions
65
49
) : RulesTestContext {
66
50
this . checkNotDestroyed ( ) ;
67
- const token = createMockUserToken (
68
- {
69
- ...tokenOptions ,
70
- sub : user_id ,
71
- user_id : user_id
72
- } ,
73
- this . projectId
74
- ) ;
75
- return this . createContext ( token ) ;
51
+ return this . createContext ( {
52
+ ...tokenOptions ,
53
+ sub : user_id ,
54
+ user_id : user_id
55
+ } ) ;
76
56
}
77
57
78
58
unauthenticatedContext ( ) : RulesTestContext {
@@ -101,7 +81,9 @@ export class RulesTestEnvironmentImpl implements RulesTestEnvironment {
101
81
}
102
82
}
103
83
104
- private createContext ( authToken : string | undefined ) : RulesTestContextImpl {
84
+ private createContext (
85
+ authToken : string | firebase . EmulatorMockTokenOptions | undefined
86
+ ) : RulesTestContextImpl {
105
87
const context = new RulesTestContextImpl (
106
88
this . projectId ,
107
89
this . emulators ,
@@ -114,7 +96,7 @@ export class RulesTestEnvironmentImpl implements RulesTestEnvironment {
114
96
clearDatabase ( ) : Promise < void > {
115
97
this . checkNotDestroyed ( ) ;
116
98
return this . withSecurityRulesDisabled ( context => {
117
- return set ( ref ( context . database ( ) , '/' ) , null ) ;
99
+ return context . database ( ) . ref ( '/' ) . set ( null ) ;
118
100
} ) ;
119
101
}
120
102
@@ -153,14 +135,14 @@ export class RulesTestEnvironmentImpl implements RulesTestEnvironment {
153
135
* @private
154
136
*/
155
137
class RulesTestContextImpl implements RulesTestContext {
156
- private app ?: FirebaseApp ;
138
+ private app ?: firebase . app . App ;
157
139
private destroyed = false ;
158
140
envDestroyed = false ;
159
141
160
142
constructor (
161
143
readonly projectId : string ,
162
144
readonly emulators : DiscoveredEmulators ,
163
- readonly authToken : string | undefined
145
+ readonly authToken : firebase . EmulatorMockTokenOptions | string | undefined
164
146
) { }
165
147
166
148
cleanup ( ) {
@@ -170,49 +152,43 @@ class RulesTestContextImpl implements RulesTestContext {
170
152
this . app = undefined ;
171
153
}
172
154
173
- firestore ( settings ?: FirestoreSettings ) : Firestore {
155
+ firestore (
156
+ settings ?: firebase . firestore . Settings
157
+ ) : firebase . firestore . Firestore {
174
158
assertEmulatorRunning ( this . emulators , 'firestore' ) ;
175
- const firestoreCompat = this . getApp ( ) . firestore ! ( ) ;
159
+ const firestore = this . getApp ( ) . firestore ( ) ;
176
160
if ( settings ) {
177
- firestoreCompat . settings ( settings ) ;
161
+ firestore . settings ( settings ) ;
178
162
}
179
- const firestore = firestoreCompat as unknown as Firestore ;
180
- connectFirestoreEmulator (
181
- firestore ,
163
+ firestore . useEmulator (
182
164
this . emulators . firestore . host ,
183
165
this . emulators . firestore . port ,
184
166
{ mockUserToken : this . authToken }
185
167
) ;
186
168
return firestore ;
187
169
}
188
- database ( databaseURL ?: string ) : Database {
170
+ database ( databaseURL ?: string ) : firebase . database . Database {
189
171
assertEmulatorRunning ( this . emulators , 'database' ) ;
190
- const database = this . getApp ( ) . database ! (
191
- databaseURL
192
- ) as unknown as Database ;
193
- connectDatabaseEmulator (
194
- database ,
172
+ const database = this . getApp ( ) . database ( databaseURL ) ;
173
+ database . useEmulator (
195
174
this . emulators . database . host ,
196
175
this . emulators . database . port ,
197
176
{ mockUserToken : this . authToken }
198
177
) ;
199
178
return database ;
200
179
}
201
- storage ( bucketUrl ?: string ) : FirebaseStorage {
180
+ storage ( bucketUrl ?: string ) : firebase . storage . Storage {
202
181
assertEmulatorRunning ( this . emulators , 'storage' ) ;
203
- const storage = this . getApp ( ) . storage ! (
204
- bucketUrl
205
- ) as unknown as FirebaseStorage ;
206
- connectStorageEmulator (
207
- storage ,
182
+ const storage = this . getApp ( ) . storage ( bucketUrl ) ;
183
+ storage . useEmulator (
208
184
this . emulators . storage . host ,
209
185
this . emulators . storage . port ,
210
186
{ mockUserToken : this . authToken }
211
187
) ;
212
188
return storage ;
213
189
}
214
190
215
- private getApp ( ) : FirebaseApp {
191
+ private getApp ( ) : firebase . app . App {
216
192
if ( this . envDestroyed ) {
217
193
throw new Error (
218
194
'This RulesTestContext is no longer valid because its RulesTestEnvironment has been ' +
0 commit comments