@@ -27,37 +27,38 @@ import {
27
27
getAuth ,
28
28
onAuthStateChanged ,
29
29
signInAnonymously ,
30
- updateProfile ,
30
+ updateProfile
31
31
} from '@firebase/auth' ;
32
- import { FirebaseError } from '@firebase/util' ;
32
+ import { isBrowser } from '@firebase/util' ;
33
33
import { initializeServerApp } from '@firebase/app' ;
34
34
35
35
import {
36
36
cleanUpTestInstance ,
37
37
getTestInstance ,
38
38
randomEmail
39
39
} from '../../helpers/integration/helpers' ;
40
- import { generateMiddlewareTests } from './middleware_test_generator' ;
41
40
42
41
use ( chaiAsPromised ) ;
43
42
44
- const sleep = ( delay : number ) => new Promise ( ( resolve ) => setTimeout ( resolve , delay ) )
45
43
const signInWaitDuration = 200 ;
46
44
47
- describe ( 'Integration test: automatic user login via idToken in server apps ' , ( ) => {
45
+ describe ( 'Integration test: Auth FirebaseServerApp tests ' , ( ) => {
48
46
let auth : Auth ;
49
47
let serverAppAuth : Auth ;
50
48
51
49
beforeEach ( ( ) => {
52
50
auth = getTestInstance ( ) ;
53
51
} ) ;
54
-
55
- afterEach ( ( ) => {
56
- cleanUpTestInstance ( auth ) ;
57
- cleanUpTestInstance ( serverAppAuth ) ;
52
+
53
+ afterEach ( async ( ) => {
54
+ await cleanUpTestInstance ( auth ) ;
55
+ await serverAppAuth . signOut ( ) ;
58
56
} ) ;
59
57
60
58
it ( 'signs in with anonymous user' , async ( ) => {
59
+ if ( isBrowser ( ) ) {
60
+ return ;
61
+ }
61
62
const userCred = await signInAnonymously ( auth ) ;
62
63
expect ( auth . currentUser ) . to . eq ( userCred . user ) ;
63
64
expect ( userCred . operationType ) . to . eq ( OperationType . SIGN_IN ) ;
@@ -71,26 +72,35 @@ describe('Integration test: automatic user login via idToken in server apps', ()
71
72
const authIdToken = await user . getIdToken ( ) ;
72
73
const firebaseServerAppSettings = { authIdToken } ;
73
74
74
- const serverApp = initializeServerApp ( auth . app , firebaseServerAppSettings ) ;
75
+ const serverApp = initializeServerApp ( auth . app , firebaseServerAppSettings ) ;
75
76
serverAppAuth = getAuth ( serverApp ) ;
76
77
let numberServerLogins = 0 ;
77
- onAuthStateChanged ( serverAppAuth , function ( serverAuthUser ) {
78
+ onAuthStateChanged ( serverAppAuth , serverAuthUser => {
78
79
if ( serverAuthUser ) {
79
80
numberServerLogins ++ ;
80
-
81
+
81
82
// Note, the serverAuthUser does not fully equal the standard Auth user
82
83
// since the serverAuthUser does not have a refresh token.
83
84
expect ( user . uid ) . to . be . equal ( serverAuthUser . uid ) ;
84
85
expect ( user . isAnonymous ) . to . be . equal ( serverAuthUser . isAnonymous ) ;
85
86
expect ( user . emailVerified ) . to . be . equal ( serverAuthUser . emailVerified ) ;
86
- expect ( user . providerData . length ) . to . eq ( serverAuthUser . providerData . length ) ;
87
- }
87
+ expect ( user . providerData . length ) . to . eq (
88
+ serverAuthUser . providerData . length
89
+ ) ;
90
+ }
88
91
} ) ;
89
- await sleep ( signInWaitDuration ) ;
92
+
93
+ await new Promise ( resolve => {
94
+ setTimeout ( resolve , signInWaitDuration ) ;
95
+ } ) ;
96
+
90
97
expect ( numberServerLogins ) . to . equal ( 1 ) ;
91
98
} ) ;
92
99
93
100
it ( 'getToken operations fullfilled or rejected' , async ( ) => {
101
+ if ( isBrowser ( ) ) {
102
+ return ;
103
+ }
94
104
const userCred = await signInAnonymously ( auth ) ;
95
105
expect ( auth . currentUser ) . to . eq ( userCred . user ) ;
96
106
expect ( userCred . operationType ) . to . eq ( OperationType . SIGN_IN ) ;
@@ -102,28 +112,38 @@ describe('Integration test: automatic user login via idToken in server apps', ()
102
112
const authIdToken = await user . getIdToken ( ) ;
103
113
const firebaseServerAppSettings = { authIdToken } ;
104
114
105
- const serverApp = initializeServerApp ( auth . app , firebaseServerAppSettings ) ;
115
+ const serverApp = initializeServerApp ( auth . app , firebaseServerAppSettings ) ;
106
116
serverAppAuth = getAuth ( serverApp ) ;
107
117
let numberServerLogins = 0 ;
108
- onAuthStateChanged ( serverAppAuth , function ( serverAuthUser ) {
118
+ onAuthStateChanged ( serverAppAuth , serverAuthUser => {
109
119
if ( serverAuthUser ) {
110
120
numberServerLogins ++ ;
111
121
expect ( user . uid ) . to . be . equal ( serverAuthUser . uid ) ;
112
122
expect ( serverAppAuth . currentUser ) . to . equal ( serverAuthUser ) ;
113
- expect ( serverAuthUser . getIdToken )
114
- }
123
+ expect ( serverAuthUser . getIdToken ) ;
124
+ }
115
125
} ) ;
116
- await sleep ( signInWaitDuration ) ;
126
+
127
+ await new Promise ( resolve => {
128
+ setTimeout ( resolve , signInWaitDuration ) ;
129
+ } ) ;
130
+
117
131
expect ( numberServerLogins ) . to . equal ( 1 ) ;
118
132
expect ( serverAppAuth . currentUser ) . to . not . be . null ;
119
- if ( serverAppAuth . currentUser ) {
120
- const idToken = await serverAppAuth . currentUser . getIdToken ( /*forceRefresh=*/ false ) ;
133
+ if ( serverAppAuth . currentUser ) {
134
+ const idToken = await serverAppAuth . currentUser . getIdToken (
135
+ /*forceRefresh=*/ false
136
+ ) ;
121
137
expect ( idToken ) . to . not . be . null ;
122
- expect ( serverAppAuth . currentUser . getIdToken ( /*forceRefresh=*/ true ) ) . to . be . rejected ;
138
+ await expect ( serverAppAuth . currentUser . getIdToken ( /*forceRefresh=*/ true ) )
139
+ . to . be . rejected ;
123
140
}
124
141
} ) ;
125
142
126
143
it ( 'signs in with email crednetial user' , async ( ) => {
144
+ if ( isBrowser ( ) ) {
145
+ return ;
146
+ }
127
147
const email = randomEmail ( ) ;
128
148
const password = 'password' ;
129
149
const userCred = await createUserWithEmailAndPassword (
@@ -134,7 +154,7 @@ describe('Integration test: automatic user login via idToken in server apps', ()
134
154
const user = userCred . user ;
135
155
expect ( auth . currentUser ) . to . eq ( userCred . user ) ;
136
156
expect ( userCred . operationType ) . to . eq ( OperationType . SIGN_IN ) ;
137
-
157
+
138
158
const additionalUserInfo = getAdditionalUserInfo ( userCred ) ! ;
139
159
expect ( additionalUserInfo . isNewUser ) . to . be . true ;
140
160
expect ( additionalUserInfo . providerId ) . to . eq ( 'password' ) ;
@@ -144,55 +164,71 @@ describe('Integration test: automatic user login via idToken in server apps', ()
144
164
const authIdToken = await user . getIdToken ( ) ;
145
165
const firebaseServerAppSettings = { authIdToken } ;
146
166
147
- const serverApp = initializeServerApp ( auth . app , firebaseServerAppSettings ) ;
167
+ const serverApp = initializeServerApp ( auth . app , firebaseServerAppSettings ) ;
148
168
serverAppAuth = getAuth ( serverApp ) ;
149
169
let numberServerLogins = 0 ;
150
- onAuthStateChanged ( serverAppAuth , function ( serverAuthUser ) {
170
+ onAuthStateChanged ( serverAppAuth , serverAuthUser => {
151
171
if ( serverAuthUser ) {
152
172
numberServerLogins ++ ;
153
173
expect ( serverAppAuth . currentUser ) . to . equal ( serverAuthUser ) ;
154
174
expect ( user . uid ) . to . be . equal ( serverAuthUser . uid ) ;
155
175
expect ( serverAuthUser . refreshToken ) . to . be . empty ;
156
176
expect ( user . isAnonymous ) . to . be . equal ( serverAuthUser . isAnonymous ) ;
157
177
expect ( user . emailVerified ) . to . be . equal ( serverAuthUser . emailVerified ) ;
158
- expect ( user . providerData . length ) . to . eq ( serverAuthUser . providerData . length ) ;
178
+ expect ( user . providerData . length ) . to . eq (
179
+ serverAuthUser . providerData . length
180
+ ) ;
159
181
expect ( user . email ) . to . equal ( serverAuthUser . email ) ;
160
- }
182
+ }
183
+ } ) ;
184
+
185
+ await new Promise ( resolve => {
186
+ setTimeout ( resolve , signInWaitDuration ) ;
161
187
} ) ;
162
- await sleep ( signInWaitDuration ) ;
188
+
163
189
expect ( numberServerLogins ) . to . equal ( 1 ) ;
164
190
} ) ;
165
191
166
192
it ( 'can reload user' , async ( ) => {
193
+ if ( isBrowser ( ) ) {
194
+ return ;
195
+ }
167
196
const userCred = await signInAnonymously ( auth ) ;
168
197
expect ( auth . currentUser ) . to . eq ( userCred . user ) ;
169
198
170
199
const user = userCred . user ;
171
200
expect ( user ) . to . equal ( auth . currentUser ) ;
172
201
expect ( user . uid ) . to . be . a ( 'string' ) ;
173
-
202
+
174
203
const authIdToken = await user . getIdToken ( ) ;
175
204
const firebaseServerAppSettings = { authIdToken } ;
176
205
177
- const serverApp = initializeServerApp ( auth . app , firebaseServerAppSettings ) ;
206
+ const serverApp = initializeServerApp ( auth . app , firebaseServerAppSettings ) ;
178
207
serverAppAuth = getAuth ( serverApp ) ;
179
208
let numberServerLogins = 0 ;
180
- onAuthStateChanged ( serverAppAuth , function ( serverAuthUser ) {
209
+ onAuthStateChanged ( serverAppAuth , serverAuthUser => {
181
210
if ( serverAuthUser ) {
182
211
numberServerLogins ++ ;
183
212
expect ( user . uid ) . to . be . equal ( serverAuthUser . uid ) ;
184
213
expect ( serverAppAuth . currentUser ) . to . equal ( serverAuthUser ) ;
185
- }
214
+ }
186
215
} ) ;
187
- await sleep ( signInWaitDuration ) ;
216
+
217
+ await new Promise ( resolve => {
218
+ setTimeout ( resolve , signInWaitDuration ) ;
219
+ } ) ;
220
+
188
221
expect ( serverAppAuth . currentUser ) . to . not . be . null ;
189
- if ( serverAppAuth . currentUser ) {
222
+ if ( serverAppAuth . currentUser ) {
190
223
await serverAppAuth . currentUser . reload ( ) ;
191
224
}
192
225
expect ( numberServerLogins ) . to . equal ( 1 ) ;
193
226
} ) ;
194
227
195
228
it ( 'can update server based user profile' , async ( ) => {
229
+ if ( isBrowser ( ) ) {
230
+ return ;
231
+ }
196
232
const userCred = await signInAnonymously ( auth ) ;
197
233
expect ( auth . currentUser ) . to . eq ( userCred . user ) ;
198
234
@@ -204,24 +240,29 @@ describe('Integration test: automatic user login via idToken in server apps', ()
204
240
const authIdToken = await user . getIdToken ( ) ;
205
241
const firebaseServerAppSettings = { authIdToken } ;
206
242
207
- const serverApp = initializeServerApp ( auth . app , firebaseServerAppSettings ) ;
243
+ const serverApp = initializeServerApp ( auth . app , firebaseServerAppSettings ) ;
208
244
serverAppAuth = getAuth ( serverApp ) ;
209
245
let numberServerLogins = 0 ;
210
- const newDisplayName = " newName" ;
211
- onAuthStateChanged ( serverAppAuth , function ( serverAuthUser ) {
246
+ const newDisplayName = ' newName' ;
247
+ onAuthStateChanged ( serverAppAuth , serverAuthUser => {
212
248
if ( serverAuthUser ) {
213
249
numberServerLogins ++ ;
214
250
expect ( serverAppAuth . currentUser ) . to . equal ( serverAuthUser ) ;
215
251
expect ( user . uid ) . to . be . equal ( serverAuthUser . uid ) ;
216
252
expect ( user . displayName ) . to . be . null ;
217
- updateProfile ( serverAuthUser , {
253
+ void updateProfile ( serverAuthUser , {
218
254
displayName : newDisplayName
219
255
} ) ;
220
- }
256
+ }
257
+ } ) ;
258
+
259
+ await new Promise ( resolve => {
260
+ setTimeout ( resolve , signInWaitDuration ) ;
221
261
} ) ;
222
- await sleep ( signInWaitDuration ) ;
262
+
223
263
expect ( serverAppAuth . currentUser ) . to . not . be . null ;
224
- if ( serverAppAuth . currentUser ) {
264
+
265
+ if ( serverAppAuth . currentUser ) {
225
266
await serverAppAuth . currentUser . reload ( ) ;
226
267
}
227
268
@@ -230,5 +271,4 @@ describe('Integration test: automatic user login via idToken in server apps', ()
230
271
expect ( serverAppAuth . currentUser ?. displayName ) . to . not . be . null ;
231
272
expect ( serverAppAuth . currentUser ?. displayName ) . to . equal ( newDisplayName ) ;
232
273
} ) ;
233
-
234
274
} ) ;
0 commit comments