16
16
*/
17
17
import '../test/setup' ;
18
18
import { expect } from 'chai' ;
19
- import { stub , spy } from 'sinon' ;
19
+ import { stub , spy , SinonStub } from 'sinon' ;
20
20
import {
21
21
activate ,
22
22
setTokenAutoRefreshEnabled ,
@@ -28,6 +28,7 @@ import {
28
28
getFakeApp ,
29
29
getFakeCustomTokenProvider ,
30
30
getFakePlatformLoggingProvider ,
31
+ getFakeGreCAPTCHA ,
31
32
removegreCAPTCHAScriptsOnPage
32
33
} from '../test/util' ;
33
34
import { clearState , getState } from './state' ;
@@ -37,8 +38,12 @@ import * as internalApi from './internal-api';
37
38
import * as client from './client' ;
38
39
import * as storage from './storage' ;
39
40
import * as logger from './logger' ;
41
+ import * as util from './util' ;
40
42
41
43
describe ( 'api' , ( ) => {
44
+ beforeEach ( ( ) => {
45
+ stub ( util , 'getRecaptcha' ) . returns ( getFakeGreCAPTCHA ( ) ) ;
46
+ } ) ;
42
47
describe ( 'activate()' , ( ) => {
43
48
let app : FirebaseApp ;
44
49
@@ -126,25 +131,35 @@ describe('api', () => {
126
131
} ) ;
127
132
} ) ;
128
133
describe ( 'onTokenChanged()' , ( ) => {
134
+ let storageReadStub : SinonStub ;
135
+ let storageWriteStub : SinonStub ;
136
+ const fakePlatformLoggingProvider = getFakePlatformLoggingProvider ( ) ;
137
+ const fakeRecaptchaToken = 'fake-recaptcha-token' ;
138
+ const fakeRecaptchaAppCheckToken = {
139
+ token : 'fake-recaptcha-app-check-token' ,
140
+ expireTimeMillis : Date . now ( ) + 60000 ,
141
+ issuedAtTimeMillis : 0
142
+ } ;
143
+
144
+ beforeEach ( ( ) => {
145
+ storageReadStub = stub ( storage , 'readTokenFromStorage' ) . resolves (
146
+ undefined
147
+ ) ;
148
+ storageWriteStub = stub ( storage , 'writeTokenToStorage' ) ;
149
+ } ) ;
129
150
afterEach ( ( ) => {
151
+ storageReadStub . restore ( ) ;
152
+ storageWriteStub . restore ( ) ;
130
153
clearState ( ) ;
131
154
removegreCAPTCHAScriptsOnPage ( ) ;
132
155
} ) ;
133
156
it ( 'Listeners work when using top-level parameters pattern' , async ( ) => {
134
- const app = getFakeApp ( { automaticDataCollectionEnabled : true } ) ;
135
- activate ( app , FAKE_SITE_KEY , true ) ;
136
- const fakePlatformLoggingProvider = getFakePlatformLoggingProvider ( ) ;
137
- const fakeRecaptchaToken = 'fake-recaptcha-token' ;
138
- const fakeRecaptchaAppCheckToken = {
139
- token : 'fake-recaptcha-app-check-token' ,
140
- expireTimeMillis : 123 ,
141
- issuedAtTimeMillis : 0
142
- } ;
157
+ const app = getFakeApp ( ) ;
158
+ activate ( app , FAKE_SITE_KEY , false ) ;
143
159
stub ( reCAPTCHA , 'getToken' ) . returns ( Promise . resolve ( fakeRecaptchaToken ) ) ;
144
160
stub ( client , 'exchangeToken' ) . returns (
145
161
Promise . resolve ( fakeRecaptchaAppCheckToken )
146
162
) ;
147
- stub ( storage , 'writeTokenToStorage' ) . returns ( Promise . resolve ( undefined ) ) ;
148
163
149
164
const listener1 = ( ) : void => {
150
165
throw new Error ( ) ;
@@ -183,20 +198,12 @@ describe('api', () => {
183
198
} ) ;
184
199
185
200
it ( 'Listeners work when using Observer pattern' , async ( ) => {
186
- const app = getFakeApp ( { automaticDataCollectionEnabled : true } ) ;
187
- activate ( app , FAKE_SITE_KEY , true ) ;
188
- const fakePlatformLoggingProvider = getFakePlatformLoggingProvider ( ) ;
189
- const fakeRecaptchaToken = 'fake-recaptcha-token' ;
190
- const fakeRecaptchaAppCheckToken = {
191
- token : 'fake-recaptcha-app-check-token' ,
192
- expireTimeMillis : 123 ,
193
- issuedAtTimeMillis : 0
194
- } ;
201
+ const app = getFakeApp ( ) ;
202
+ activate ( app , FAKE_SITE_KEY , false ) ;
195
203
stub ( reCAPTCHA , 'getToken' ) . returns ( Promise . resolve ( fakeRecaptchaToken ) ) ;
196
204
stub ( client , 'exchangeToken' ) . returns (
197
205
Promise . resolve ( fakeRecaptchaAppCheckToken )
198
206
) ;
199
- stub ( storage , 'writeTokenToStorage' ) . returns ( Promise . resolve ( undefined ) ) ;
200
207
201
208
const listener1 = ( ) : void => {
202
209
throw new Error ( ) ;
@@ -238,11 +245,8 @@ describe('api', () => {
238
245
stub ( logger . logger , 'error' ) ;
239
246
const app = getFakeApp ( ) ;
240
247
activate ( app , FAKE_SITE_KEY , false ) ;
241
- const fakePlatformLoggingProvider = getFakePlatformLoggingProvider ( ) ;
242
- const fakeRecaptchaToken = 'fake-recaptcha-token' ;
243
248
stub ( reCAPTCHA , 'getToken' ) . returns ( Promise . resolve ( fakeRecaptchaToken ) ) ;
244
249
stub ( client , 'exchangeToken' ) . rejects ( 'exchange error' ) ;
245
- stub ( storage , 'writeTokenToStorage' ) . returns ( Promise . resolve ( undefined ) ) ;
246
250
247
251
const listener1 = spy ( ) ;
248
252
0 commit comments