@@ -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