@@ -374,6 +374,45 @@ describe("login", () => {
374374 expect ( mockStartAuthServer ) . toHaveBeenCalled ( ) ;
375375 } ) ;
376376
377+ test ( "in human mode, skips prompt and runs OAuth when yes is true" , async ( ) => {
378+ mockIsHuman . mockReturnValue ( true ) ;
379+ mockGetValidToken . mockResolvedValue ( "existing-token" ) ;
380+ mockGetAuth . mockResolvedValue ( { userId : "user_123" } ) ;
381+ mockFetchUserInfo
382+ . mockResolvedValueOnce ( { userId : "user_123" , email : "old@example.com" } )
383+ . mockResolvedValueOnce ( { userId : "user_new" , email : "new@example.com" } ) ;
384+ mockBunSpawn ( ) ;
385+
386+ const mockServer = {
387+ port : 54321 ,
388+ waitForCallback : mock ( ) . mockResolvedValue ( { code : "reauth-code" } ) ,
389+ stop : mock ( ) ,
390+ } ;
391+ mockStartAuthServer . mockReturnValue ( mockServer ) ;
392+
393+ mockExchangeCodeForToken . mockResolvedValue ( {
394+ access_token : "new-token" ,
395+ token_type : "Bearer" ,
396+ expires_in : 3600 ,
397+ refresh_token : "new-refresh-token" ,
398+ } ) ;
399+ mockCreateOAuthSession . mockReturnValue ( {
400+ accessToken : "new-token" ,
401+ refreshToken : "new-refresh-token" ,
402+ expiresAt : 999 ,
403+ tokenType : "Bearer" ,
404+ } ) ;
405+ mockStoreToken . mockResolvedValue ( undefined ) ;
406+ mockSetAuth . mockResolvedValue ( undefined ) ;
407+
408+ consoleSpy = spyOn ( console , "log" ) . mockImplementation ( ( ) => { } ) ;
409+ const result = await runLogin ( { yes : true } ) ;
410+
411+ expect ( mockConfirm ) . not . toHaveBeenCalled ( ) ;
412+ expect ( mockStartAuthServer ) . toHaveBeenCalled ( ) ;
413+ expect ( result ) . toEqual ( { userId : "user_new" , email : "new@example.com" } ) ;
414+ } ) ;
415+
377416 test ( "in human mode, throws UserAbortError when user declines re-auth" , async ( ) => {
378417 mockIsHuman . mockReturnValue ( true ) ;
379418 mockGetValidToken . mockResolvedValue ( "existing-token" ) ;
0 commit comments