@@ -39,6 +39,7 @@ import * as client from './client';
39
39
import * as storage from './storage' ;
40
40
import * as logger from './logger' ;
41
41
import * as util from './util' ;
42
+ import { ReCaptchaV3Provider } from './providers' ;
42
43
43
44
describe ( 'api' , ( ) => {
44
45
beforeEach ( ( ) => {
@@ -53,47 +54,92 @@ describe('api', () => {
53
54
54
55
it ( 'sets activated to true' , ( ) => {
55
56
expect ( getState ( app ) . activated ) . to . equal ( false ) ;
56
- activate ( app , FAKE_SITE_KEY ) ;
57
+ activate (
58
+ app ,
59
+ new ReCaptchaV3Provider ( FAKE_SITE_KEY ) ,
60
+ getFakePlatformLoggingProvider ( )
61
+ ) ;
57
62
expect ( getState ( app ) . activated ) . to . equal ( true ) ;
58
63
} ) ;
59
64
60
65
it ( 'isTokenAutoRefreshEnabled value defaults to global setting' , ( ) => {
61
66
app = getFakeApp ( { automaticDataCollectionEnabled : false } ) ;
62
- activate ( app , FAKE_SITE_KEY ) ;
67
+ activate (
68
+ app ,
69
+ new ReCaptchaV3Provider ( FAKE_SITE_KEY ) ,
70
+ getFakePlatformLoggingProvider ( )
71
+ ) ;
63
72
expect ( getState ( app ) . isTokenAutoRefreshEnabled ) . to . equal ( false ) ;
64
73
} ) ;
65
74
66
75
it ( 'sets isTokenAutoRefreshEnabled correctly, overriding global setting' , ( ) => {
67
76
app = getFakeApp ( { automaticDataCollectionEnabled : false } ) ;
68
- activate ( app , FAKE_SITE_KEY , true ) ;
77
+ activate (
78
+ app ,
79
+ new ReCaptchaV3Provider ( FAKE_SITE_KEY ) ,
80
+ getFakePlatformLoggingProvider ( ) ,
81
+ true
82
+ ) ;
69
83
expect ( getState ( app ) . isTokenAutoRefreshEnabled ) . to . equal ( true ) ;
70
84
} ) ;
71
85
72
86
it ( 'can only be called once' , ( ) => {
73
- activate ( app , FAKE_SITE_KEY ) ;
74
- expect ( ( ) => activate ( app , FAKE_SITE_KEY ) ) . to . throw (
75
- / A p p C h e c k c a n o n l y b e a c t i v a t e d o n c e /
87
+ activate (
88
+ app ,
89
+ new ReCaptchaV3Provider ( FAKE_SITE_KEY ) ,
90
+ getFakePlatformLoggingProvider ( )
76
91
) ;
92
+ expect ( ( ) =>
93
+ activate (
94
+ app ,
95
+ new ReCaptchaV3Provider ( FAKE_SITE_KEY ) ,
96
+ getFakePlatformLoggingProvider ( )
97
+ )
98
+ ) . to . throw ( / A p p C h e c k c a n o n l y b e a c t i v a t e d o n c e / ) ;
77
99
} ) ;
78
100
79
- it ( 'initialize reCAPTCHA when a sitekey is provided' , ( ) => {
101
+ it ( 'initialize reCAPTCHA when a sitekey string is provided' , ( ) => {
80
102
const initReCAPTCHAStub = stub ( reCAPTCHA , 'initialize' ) . returns (
81
103
Promise . resolve ( { } as any )
82
104
) ;
83
- activate ( app , FAKE_SITE_KEY ) ;
105
+ activate ( app , FAKE_SITE_KEY , getFakePlatformLoggingProvider ( ) ) ;
84
106
expect ( initReCAPTCHAStub ) . to . have . been . calledWithExactly (
85
107
app ,
86
108
FAKE_SITE_KEY
87
109
) ;
88
110
} ) ;
89
111
90
- it ( 'does NOT initialize reCAPTCHA when a custom token provider is provided' , ( ) => {
91
- const fakeCustomTokenProvider = getFakeCustomTokenProvider ( ) ;
92
- const initReCAPTCHAStub = stub ( reCAPTCHA , 'initialize' ) ;
93
- activate ( app , fakeCustomTokenProvider ) ;
94
- expect ( getState ( app ) . customProvider ) . to . equal ( fakeCustomTokenProvider ) ;
95
- expect ( initReCAPTCHAStub ) . to . have . not . been . called ;
112
+ it ( 'initialize reCAPTCHA when a ReCaptchaV3Provider instance is provided' , ( ) => {
113
+ const initReCAPTCHAStub = stub ( reCAPTCHA , 'initialize' ) . returns (
114
+ Promise . resolve ( { } as any )
115
+ ) ;
116
+ activate (
117
+ app ,
118
+ new ReCaptchaV3Provider ( FAKE_SITE_KEY ) ,
119
+ getFakePlatformLoggingProvider ( )
120
+ ) ;
121
+ expect ( initReCAPTCHAStub ) . to . have . been . calledWithExactly (
122
+ app ,
123
+ FAKE_SITE_KEY
124
+ ) ;
96
125
} ) ;
126
+
127
+ it (
128
+ 'creates CustomProvider instance if user provides an object containing' +
129
+ ' a getToken() method' ,
130
+ async ( ) => {
131
+ const fakeCustomTokenProvider = getFakeCustomTokenProvider ( ) ;
132
+ const initReCAPTCHAStub = stub ( reCAPTCHA , 'initialize' ) ;
133
+ activate (
134
+ app ,
135
+ fakeCustomTokenProvider ,
136
+ getFakePlatformLoggingProvider ( )
137
+ ) ;
138
+ const result = await getState ( app ) . provider ?. getToken ( ) ;
139
+ expect ( result ?. token ) . to . equal ( 'fake-custom-app-check-token' ) ;
140
+ expect ( initReCAPTCHAStub ) . to . have . not . been . called ;
141
+ }
142
+ ) ;
97
143
} ) ;
98
144
describe ( 'setTokenAutoRefreshEnabled()' , ( ) => {
99
145
it ( 'sets isTokenAutoRefreshEnabled correctly' , ( ) => {
@@ -149,7 +195,12 @@ describe('api', () => {
149
195
} ) ;
150
196
it ( 'Listeners work when using top-level parameters pattern' , async ( ) => {
151
197
const app = getFakeApp ( ) ;
152
- activate ( app , FAKE_SITE_KEY , false ) ;
198
+ activate (
199
+ app ,
200
+ new ReCaptchaV3Provider ( FAKE_SITE_KEY ) ,
201
+ fakePlatformLoggingProvider ,
202
+ false
203
+ ) ;
153
204
stub ( reCAPTCHA , 'getToken' ) . returns ( Promise . resolve ( fakeRecaptchaToken ) ) ;
154
205
stub ( client , 'exchangeToken' ) . returns (
155
206
Promise . resolve ( fakeRecaptchaAppCheckToken )
@@ -193,7 +244,12 @@ describe('api', () => {
193
244
194
245
it ( 'Listeners work when using Observer pattern' , async ( ) => {
195
246
const app = getFakeApp ( ) ;
196
- activate ( app , FAKE_SITE_KEY , false ) ;
247
+ activate (
248
+ app ,
249
+ new ReCaptchaV3Provider ( FAKE_SITE_KEY ) ,
250
+ fakePlatformLoggingProvider ,
251
+ false
252
+ ) ;
197
253
stub ( reCAPTCHA , 'getToken' ) . returns ( Promise . resolve ( fakeRecaptchaToken ) ) ;
198
254
stub ( client , 'exchangeToken' ) . returns (
199
255
Promise . resolve ( fakeRecaptchaAppCheckToken )
@@ -238,7 +294,12 @@ describe('api', () => {
238
294
it ( 'onError() catches token errors' , async ( ) => {
239
295
stub ( logger . logger , 'error' ) ;
240
296
const app = getFakeApp ( ) ;
241
- activate ( app , FAKE_SITE_KEY , false ) ;
297
+ activate (
298
+ app ,
299
+ new ReCaptchaV3Provider ( FAKE_SITE_KEY ) ,
300
+ fakePlatformLoggingProvider ,
301
+ false
302
+ ) ;
242
303
stub ( reCAPTCHA , 'getToken' ) . returns ( Promise . resolve ( fakeRecaptchaToken ) ) ;
243
304
stub ( client , 'exchangeToken' ) . rejects ( 'exchange error' ) ;
244
305
0 commit comments