@@ -40,6 +40,7 @@ import * as storage from './storage';
40
40
import { getState , clearState , setState , getDebugState } from './state' ;
41
41
import { AppCheckTokenListener } from '@firebase/app-check-interop-types' ;
42
42
import { Deferred } from '@firebase/util' ;
43
+ import { ReCAPTCHAProvider } from './providers' ;
43
44
44
45
const fakePlatformLoggingProvider = getFakePlatformLoggingProvider ( ) ;
45
46
@@ -74,7 +75,7 @@ describe('internal api', () => {
74
75
const customTokenProvider = getFakeCustomTokenProvider ( ) ;
75
76
const customProviderSpy = spy ( customTokenProvider , 'getToken' ) ;
76
77
77
- activate ( app , customTokenProvider ) ;
78
+ activate ( app , customTokenProvider , fakePlatformLoggingProvider ) ;
78
79
const token = await getToken ( app , fakePlatformLoggingProvider ) ;
79
80
80
81
expect ( customProviderSpy ) . to . be . called ;
@@ -85,8 +86,12 @@ describe('internal api', () => {
85
86
clock . restore ( ) ;
86
87
} ) ;
87
88
88
- it ( 'uses reCAPTCHA token to exchange for AppCheck token if no customTokenProvider is provided' , async ( ) => {
89
- activate ( app , FAKE_SITE_KEY ) ;
89
+ it ( 'uses reCAPTCHA token to exchange for AppCheck token if ReCAPTCHAProvider is provided' , async ( ) => {
90
+ activate (
91
+ app ,
92
+ new ReCAPTCHAProvider ( FAKE_SITE_KEY ) ,
93
+ fakePlatformLoggingProvider
94
+ ) ;
90
95
91
96
const reCAPTCHASpy = stub ( reCAPTCHA , 'getToken' ) . returns (
92
97
Promise . resolve ( fakeRecaptchaToken )
@@ -108,7 +113,11 @@ describe('internal api', () => {
108
113
109
114
it ( 'resolves with a dummy token and an error if failed to get a token' , async ( ) => {
110
115
const errorStub = stub ( console , 'error' ) ;
111
- activate ( app , FAKE_SITE_KEY ) ;
116
+ activate (
117
+ app ,
118
+ new ReCAPTCHAProvider ( FAKE_SITE_KEY ) ,
119
+ fakePlatformLoggingProvider
120
+ ) ;
112
121
113
122
const reCAPTCHASpy = stub ( reCAPTCHA , 'getToken' ) . returns (
114
123
Promise . resolve ( fakeRecaptchaToken )
@@ -131,7 +140,11 @@ describe('internal api', () => {
131
140
} ) ;
132
141
133
142
it ( 'notifies listeners using cached token' , async ( ) => {
134
- activate ( app , FAKE_SITE_KEY ) ;
143
+ activate (
144
+ app ,
145
+ new ReCAPTCHAProvider ( FAKE_SITE_KEY ) ,
146
+ fakePlatformLoggingProvider
147
+ ) ;
135
148
136
149
const clock = useFakeTimers ( ) ;
137
150
stub ( storage , 'readTokenFromStorage' ) . returns (
@@ -156,7 +169,11 @@ describe('internal api', () => {
156
169
} ) ;
157
170
158
171
it ( 'notifies listeners using new token' , async ( ) => {
159
- activate ( app , FAKE_SITE_KEY ) ;
172
+ activate (
173
+ app ,
174
+ new ReCAPTCHAProvider ( FAKE_SITE_KEY ) ,
175
+ fakePlatformLoggingProvider
176
+ ) ;
160
177
161
178
stub ( storage , 'readTokenFromStorage' ) . returns ( Promise . resolve ( undefined ) ) ;
162
179
stub ( reCAPTCHA , 'getToken' ) . returns ( Promise . resolve ( fakeRecaptchaToken ) ) ;
@@ -180,7 +197,11 @@ describe('internal api', () => {
180
197
} ) ;
181
198
182
199
it ( 'ignores listeners that throw' , async ( ) => {
183
- activate ( app , FAKE_SITE_KEY ) ;
200
+ activate (
201
+ app ,
202
+ new ReCAPTCHAProvider ( FAKE_SITE_KEY ) ,
203
+ fakePlatformLoggingProvider
204
+ ) ;
184
205
stub ( reCAPTCHA , 'getToken' ) . returns ( Promise . resolve ( fakeRecaptchaToken ) ) ;
185
206
stub ( client , 'exchangeToken' ) . returns (
186
207
Promise . resolve ( fakeRecaptchaAppCheckToken )
@@ -202,7 +223,11 @@ describe('internal api', () => {
202
223
203
224
it ( 'loads persisted token to memory and returns it' , async ( ) => {
204
225
const clock = useFakeTimers ( ) ;
205
- activate ( app , FAKE_SITE_KEY ) ;
226
+ activate (
227
+ app ,
228
+ new ReCAPTCHAProvider ( FAKE_SITE_KEY ) ,
229
+ fakePlatformLoggingProvider
230
+ ) ;
206
231
207
232
stub ( storage , 'readTokenFromStorage' ) . returns (
208
233
Promise . resolve ( fakeCachedAppCheckToken )
@@ -221,7 +246,11 @@ describe('internal api', () => {
221
246
} ) ;
222
247
223
248
it ( 'persists token to storage' , async ( ) => {
224
- activate ( app , FAKE_SITE_KEY ) ;
249
+ activate (
250
+ app ,
251
+ new ReCAPTCHAProvider ( FAKE_SITE_KEY ) ,
252
+ fakePlatformLoggingProvider
253
+ ) ;
225
254
226
255
stub ( storage , 'readTokenFromStorage' ) . returns ( Promise . resolve ( undefined ) ) ;
227
256
stub ( reCAPTCHA , 'getToken' ) . returns ( Promise . resolve ( fakeRecaptchaToken ) ) ;
@@ -239,7 +268,11 @@ describe('internal api', () => {
239
268
240
269
it ( 'returns the valid token in memory without making network request' , async ( ) => {
241
270
const clock = useFakeTimers ( ) ;
242
- activate ( app , FAKE_SITE_KEY ) ;
271
+ activate (
272
+ app ,
273
+ new ReCAPTCHAProvider ( FAKE_SITE_KEY ) ,
274
+ fakePlatformLoggingProvider
275
+ ) ;
243
276
setState ( app , { ...getState ( app ) , token : fakeRecaptchaAppCheckToken } ) ;
244
277
245
278
const clientStub = stub ( client , 'exchangeToken' ) ;
@@ -252,7 +285,11 @@ describe('internal api', () => {
252
285
} ) ;
253
286
254
287
it ( 'force to get new token when forceRefresh is true' , async ( ) => {
255
- activate ( app , FAKE_SITE_KEY ) ;
288
+ activate (
289
+ app ,
290
+ new ReCAPTCHAProvider ( FAKE_SITE_KEY ) ,
291
+ fakePlatformLoggingProvider
292
+ ) ;
256
293
setState ( app , { ...getState ( app ) , token : fakeRecaptchaAppCheckToken } ) ;
257
294
258
295
stub ( reCAPTCHA , 'getToken' ) . returns ( Promise . resolve ( fakeRecaptchaToken ) ) ;
@@ -276,7 +313,11 @@ describe('internal api', () => {
276
313
debugState . enabled = true ;
277
314
debugState . token = new Deferred ( ) ;
278
315
debugState . token . resolve ( 'my-debug-token' ) ;
279
- activate ( app , FAKE_SITE_KEY ) ;
316
+ activate (
317
+ app ,
318
+ new ReCAPTCHAProvider ( FAKE_SITE_KEY ) ,
319
+ fakePlatformLoggingProvider
320
+ ) ;
280
321
281
322
const token = await getToken ( app , fakePlatformLoggingProvider ) ;
282
323
expect ( exchangeTokenStub . args [ 0 ] [ 0 ] . body [ 'debug_token' ] ) . to . equal (
@@ -330,7 +371,11 @@ describe('internal api', () => {
330
371
331
372
it ( 'notifies the listener with the valid token in storage' , done => {
332
373
const clock = useFakeTimers ( ) ;
333
- activate ( app , FAKE_SITE_KEY ) ;
374
+ activate (
375
+ app ,
376
+ new ReCAPTCHAProvider ( FAKE_SITE_KEY ) ,
377
+ fakePlatformLoggingProvider
378
+ ) ;
334
379
stub ( storage , 'readTokenFromStorage' ) . returns (
335
380
Promise . resolve ( {
336
381
token : `fake-cached-app-check-token` ,
@@ -364,7 +409,11 @@ describe('internal api', () => {
364
409
debugState . token = new Deferred ( ) ;
365
410
debugState . token . resolve ( 'my-debug-token' ) ;
366
411
367
- activate ( app , FAKE_SITE_KEY ) ;
412
+ activate (
413
+ app ,
414
+ new ReCAPTCHAProvider ( FAKE_SITE_KEY ) ,
415
+ fakePlatformLoggingProvider
416
+ ) ;
368
417
addTokenListener ( app , fakePlatformLoggingProvider , fakeListener ) ;
369
418
} ) ;
370
419
@@ -374,7 +423,11 @@ describe('internal api', () => {
374
423
debugState . token = new Deferred ( ) ;
375
424
debugState . token . resolve ( 'my-debug-token' ) ;
376
425
377
- activate ( app , FAKE_SITE_KEY ) ;
426
+ activate (
427
+ app ,
428
+ new ReCAPTCHAProvider ( FAKE_SITE_KEY ) ,
429
+ fakePlatformLoggingProvider
430
+ ) ;
378
431
addTokenListener ( app , fakePlatformLoggingProvider , ( ) => { } ) ;
379
432
380
433
const state = getState ( app ) ;
0 commit comments