@@ -1101,6 +1101,37 @@ public async Task IssueTokens_ShouldUseEffectiveLifetimes()
11011101 refresh ! . ExpiresAt . Should ( ) . Be ( Now . AddMinutes ( 30 ) ) ;
11021102 }
11031103
1104+ [ Theory ]
1105+ [ InlineData ( UAuthMode . Hybrid ) ]
1106+ [ InlineData ( UAuthMode . SemiHybrid ) ]
1107+ [ InlineData ( UAuthMode . PureJwt ) ]
1108+ public async Task IssueRefreshTokenAsync_WhenIssueRefreshDisabled_ShouldReturnNull ( UAuthMode mode )
1109+ {
1110+ var fixture = CreateFixture ( ) ;
1111+ var flow = CreateFlow ( mode ) ;
1112+
1113+ flow . Options . Token . IssueRefresh = false ;
1114+
1115+ var result = await fixture . Sut . IssueRefreshTokenAsync (
1116+ flow ,
1117+ CreateTokenContext ( sessionId : null ) ,
1118+ RefreshTokenPersistence . Persist ) ;
1119+
1120+ result . Should ( ) . BeNull ( ) ;
1121+
1122+ fixture . OpaqueGenerator . Verify (
1123+ x => x . Generate ( ) ,
1124+ Times . Never ) ;
1125+
1126+ fixture . Hasher . Verify (
1127+ x => x . Hash ( It . IsAny < string > ( ) ) ,
1128+ Times . Never ) ;
1129+
1130+ fixture . StoreFactory . Verify (
1131+ x => x . Create ( It . IsAny < TenantKey > ( ) ) ,
1132+ Times . Never ) ;
1133+ }
1134+
11041135 // =====================================================================
11051136 // Context helpers
11061137 // =====================================================================
@@ -1112,7 +1143,8 @@ private static AuthFlowContext CreateFlow(
11121143 string ? issuer = null ,
11131144 string ? audience = null ,
11141145 string ? keyId = null ,
1115- bool addJwtIdClaim = true )
1146+ bool addJwtIdClaim = true ,
1147+ bool issueRefresh = true )
11161148 {
11171149 /*
11181150 * Adapt only this helper to the existing AuthFlowContext builder/helper
@@ -1124,15 +1156,11 @@ private static AuthFlowContext CreateFlow(
11241156 * - OriginalOptions.Token values below
11251157 */
11261158
1127- var flow = AuthFlowTestFactory . New (
1128- mode : mode ,
1129- tenant : Tenant ) ;
1130-
1131- flow . Options . Token . AccessTokenLifetime =
1132- accessTokenLifetime ?? TimeSpan . FromMinutes ( 15 ) ;
1159+ var flow = AuthFlowTestFactory . New ( mode : mode , tenant : Tenant ) ;
11331160
1134- flow . Options . Token . RefreshTokenLifetime =
1135- refreshTokenLifetime ?? TimeSpan . FromDays ( 30 ) ;
1161+ flow . Options . Token . AccessTokenLifetime = accessTokenLifetime ?? TimeSpan . FromMinutes ( 15 ) ;
1162+ flow . Options . Token . RefreshTokenLifetime = refreshTokenLifetime ?? TimeSpan . FromDays ( 30 ) ;
1163+ flow . Options . Token . IssueRefresh = issueRefresh ;
11361164
11371165 if ( issuer is not null )
11381166 flow . Options . Token . Issuer = issuer ;
0 commit comments