@@ -630,6 +630,31 @@ describe('internal api', () => {
630630 expect ( token ) . to . deep . equal ( { token : fakeRecaptchaAppCheckToken . token } ) ;
631631 } ) ;
632632
633+ it ( 'exchanges debug token only once if debug mode with no cached token' , async ( ) => {
634+ const exchangeTokenStub : SinonStub = stub (
635+ client ,
636+ 'exchangeToken'
637+ ) . returns ( Promise . resolve ( fakeRecaptchaAppCheckToken ) ) ;
638+ const debugState = getDebugState ( ) ;
639+ debugState . enabled = true ;
640+ debugState . token = new Deferred ( ) ;
641+ debugState . token . resolve ( 'my-debug-token' ) ;
642+ const appCheck = initializeAppCheck ( app , {
643+ provider : new ReCaptchaV3Provider ( FAKE_SITE_KEY )
644+ } ) ;
645+ const appCheckService = appCheck as AppCheckService ;
646+ const [ token1 , token2 ] = await Promise . all ( [
647+ getToken ( appCheckService ) ,
648+ getToken ( appCheckService )
649+ ] ) ;
650+ expect ( exchangeTokenStub . args [ 0 ] [ 0 ] . body [ 'debug_token' ] ) . to . equal (
651+ 'my-debug-token'
652+ ) ;
653+ expect ( token1 ) . to . deep . equal ( { token : fakeRecaptchaAppCheckToken . token } ) ;
654+ expect ( token2 ) . to . deep . equal ( { token : fakeRecaptchaAppCheckToken . token } ) ;
655+ expect ( exchangeTokenStub ) . to . be . calledOnce ;
656+ } ) ;
657+
633658 it ( 'throttles for a period less than 1d on 503' , async ( ) => {
634659 // More detailed check of exponential backoff in providers.test.ts
635660 const appCheck = initializeAppCheck ( app , {
0 commit comments