@@ -7003,6 +7003,39 @@ describe('revokeRefreshToken', () => {
70037003 await expect ( serverClient . revokeRefreshToken ( ) ) . resolves . toBeUndefined ( ) ;
70047004 expect ( revokeCalled ) . toBe ( false ) ;
70057005 } ) ;
7006+
7007+ test ( 'should skip revocation in resolver mode when session has no stored domain' , async ( ) => {
7008+ const domainResolver = vi . fn ( ) . mockResolvedValue ( 'resolver.local' ) ;
7009+ let revokeCalled = false ;
7010+
7011+ server . use (
7012+ http . post ( 'https://resolver.local/oauth/revoke' , ( ) => {
7013+ revokeCalled = true ;
7014+ return new HttpResponse ( null , { status : 200 } ) ;
7015+ } )
7016+ ) ;
7017+
7018+ const stateData : StateData = {
7019+ user : { sub : '<sub>' } ,
7020+ idToken : '<id_token>' ,
7021+ refreshToken : '<refresh_token>' ,
7022+ tokenSets : [ ] ,
7023+ // no domain field
7024+ internal : { sid : '<sid>' , createdAt : Date . now ( ) } ,
7025+ } ;
7026+
7027+ const serverClient = new ServerClient ( {
7028+ domain : domainResolver ,
7029+ clientId : '<client_id>' ,
7030+ clientSecret : '<client_secret>' ,
7031+ discoveryCache : { ttl : 0 } ,
7032+ transactionStore : { get : vi . fn ( ) , set : vi . fn ( ) , delete : vi . fn ( ) } ,
7033+ stateStore : { get : vi . fn ( ) . mockResolvedValue ( stateData ) , set : vi . fn ( ) , delete : vi . fn ( ) , deleteByLogoutToken : vi . fn ( ) } ,
7034+ } ) ;
7035+
7036+ await expect ( serverClient . revokeRefreshToken ( ) ) . resolves . toBeUndefined ( ) ;
7037+ expect ( revokeCalled ) . toBe ( false ) ;
7038+ } ) ;
70067039} ) ;
70077040
70087041describe ( 'logout revocation' , ( ) => {
0 commit comments