@@ -39,8 +39,9 @@ import * as client from './client';
39
39
import * as storage from './storage' ;
40
40
import * as internalApi from './internal-api' ;
41
41
import { deleteApp , FirebaseApp } from '@firebase/app-exp' ;
42
- import { ReCaptchaV3Provider } from './providers' ;
42
+ import { CustomProvider , ReCaptchaV3Provider } from './providers' ;
43
43
import { AppCheckService } from './factory' ;
44
+ import { AppCheckToken } from './public-types' ;
44
45
45
46
describe ( 'api' , ( ) => {
46
47
let app : FirebaseApp ;
@@ -57,16 +58,65 @@ describe('api', () => {
57
58
} ) ;
58
59
59
60
describe ( 'initializeAppCheck()' , ( ) => {
60
- it ( 'can only be called once' , ( ) => {
61
+ it ( 'can only be called once (if given different provider classes) ' , ( ) => {
61
62
initializeAppCheck ( app , {
62
63
provider : new ReCaptchaV3Provider ( FAKE_SITE_KEY )
63
64
} ) ;
64
65
expect ( ( ) =>
65
66
initializeAppCheck ( app , {
66
- provider : new ReCaptchaV3Provider ( FAKE_SITE_KEY )
67
+ provider : new CustomProvider ( {
68
+ getToken : ( ) => Promise . resolve ( { token : 'mm' } as AppCheckToken )
69
+ } )
70
+ } )
71
+ ) . to . throw ( / a p p C h e c k \/ a l r e a d y - i n i t i a l i z e d / ) ;
72
+ } ) ;
73
+ it ( 'can only be called once (if given different ReCaptchaV3Providers)' , ( ) => {
74
+ initializeAppCheck ( app , {
75
+ provider : new ReCaptchaV3Provider ( FAKE_SITE_KEY )
76
+ } ) ;
77
+ expect ( ( ) =>
78
+ initializeAppCheck ( app , {
79
+ provider : new ReCaptchaV3Provider ( FAKE_SITE_KEY + 'X' )
67
80
} )
68
81
) . to . throw ( / a p p C h e c k \/ a l r e a d y - i n i t i a l i z e d / ) ;
69
82
} ) ;
83
+ it ( 'can only be called once (if given different CustomProviders)' , ( ) => {
84
+ initializeAppCheck ( app , {
85
+ provider : new CustomProvider ( {
86
+ getToken : ( ) => Promise . resolve ( { token : 'ff' } as AppCheckToken )
87
+ } )
88
+ } ) ;
89
+ expect ( ( ) =>
90
+ initializeAppCheck ( app , {
91
+ provider : new CustomProvider ( {
92
+ getToken : ( ) => Promise . resolve ( { token : 'gg' } as AppCheckToken )
93
+ } )
94
+ } )
95
+ ) . to . throw ( / a p p C h e c k \/ a l r e a d y - i n i t i a l i z e d / ) ;
96
+ } ) ;
97
+ it ( 'can be called multiple times (if given equivalent ReCaptchaV3Providers)' , ( ) => {
98
+ const appCheckInstance = initializeAppCheck ( app , {
99
+ provider : new ReCaptchaV3Provider ( FAKE_SITE_KEY )
100
+ } ) ;
101
+ expect ( initializeAppCheck ( app , {
102
+ provider : new ReCaptchaV3Provider ( FAKE_SITE_KEY )
103
+ } )
104
+ ) . to . equal ( appCheckInstance ) ;
105
+ } ) ;
106
+ it ( 'can be called multiple times (if given equivalent CustomProviders)' , ( ) => {
107
+ const appCheckInstance = initializeAppCheck ( app , {
108
+ provider : new CustomProvider ( {
109
+ getToken : ( ) => Promise . resolve ( { token : 'ff' } as AppCheckToken )
110
+ } )
111
+ } ) ;
112
+ expect (
113
+ initializeAppCheck ( app , {
114
+ provider : new CustomProvider ( {
115
+ getToken : ( ) => Promise . resolve ( { token : 'ff' } as AppCheckToken )
116
+ } )
117
+ } )
118
+ ) . to . equal ( appCheckInstance ) ;
119
+ } ) ;
70
120
71
121
it ( 'initialize reCAPTCHA when a ReCaptchaV3Provider is provided' , ( ) => {
72
122
const initReCAPTCHAStub = stub ( reCAPTCHA , 'initialize' ) . returns (
0 commit comments