@@ -209,7 +209,7 @@ public async Task RefreshTokenUsingRefreshTokenAsyncRefreshHasExpired()
209209 }
210210
211211 [ Fact ]
212- public async Task TestMarkJwtRefreshTokenAsUsedAsync ( )
212+ public async Task TestLogoutUserViaRefreshTokenAsync_TwoSameUsers ( )
213213 {
214214 //SETUP
215215 var options = SqliteInMemory . CreateOptions < AuthPermissionsDbContext > ( ) ;
@@ -218,22 +218,66 @@ public async Task TestMarkJwtRefreshTokenAsUsedAsync()
218218
219219 var setup = new SetupTokenBuilder ( context ) ;
220220 await setup . TokenBuilder . GenerateTokenAndRefreshTokenAsync ( "User1" ) ;
221+ await setup . TokenBuilder . GenerateTokenAndRefreshTokenAsync ( "User1" ) ;
222+
223+ var refreshTokensSet = context . RefreshTokens . OrderBy ( x => x . AddedDateUtc ) ;
221224
222- var beforeToken = context . RefreshTokens . Single ( ) ;
223- beforeToken . IsInvalid . ShouldBeFalse ( ) ;
225+ var firstTokenBefore = refreshTokensSet . First ( ) ;
226+ firstTokenBefore . IsInvalid . ShouldBeFalse ( ) ;
227+
228+ var lastTokenBefore = refreshTokensSet . Last ( ) ;
229+ lastTokenBefore . IsInvalid . ShouldBeFalse ( ) ;
224230
225231 context . ChangeTracker . Clear ( ) ;
226232 var service = new DisableJwtRefreshToken ( context ) ;
227233
228234 //ATTEMPT
229- await service . MarkJwtRefreshTokenAsUsedAsync ( "User1" ) ;
235+ await service . LogoutUserViaRefreshTokenAsync ( firstTokenBefore . TokenValue ) ;
230236
231237 //VERIFY
232238 context . ChangeTracker . Clear ( ) ;
233- var afterToken = context . RefreshTokens . Single ( ) ;
234- afterToken . IsInvalid . ShouldBeTrue ( ) ;
239+
240+ var firstTokenAfter = refreshTokensSet . First ( ) ;
241+ firstTokenAfter . IsInvalid . ShouldBeTrue ( ) ;
242+
243+ var lastTokenAfter = refreshTokensSet . Last ( ) ;
244+ lastTokenAfter . IsInvalid . ShouldBeFalse ( ) ;
235245 }
236246
247+ [ Fact ]
248+ public async Task LogoutUserViaUserIdAsync_TwoSameUsers ( )
249+ {
250+ //SETUP
251+ var options = SqliteInMemory . CreateOptions < AuthPermissionsDbContext > ( ) ;
252+ using var context = new AuthPermissionsDbContext ( options ) ;
253+ context . Database . EnsureCreated ( ) ;
254+
255+ var setup = new SetupTokenBuilder ( context ) ;
256+ await setup . TokenBuilder . GenerateTokenAndRefreshTokenAsync ( "User1" ) ;
257+ await setup . TokenBuilder . GenerateTokenAndRefreshTokenAsync ( "User1" ) ;
258+
259+ var refreshTokensSet = context . RefreshTokens . OrderBy ( x => x . AddedDateUtc ) ;
260+
261+ var firstTokenBefore = refreshTokensSet . First ( ) ;
262+ firstTokenBefore . IsInvalid . ShouldBeFalse ( ) ;
263+
264+ var lastTokenBefore = refreshTokensSet . Last ( ) ;
265+ lastTokenBefore . IsInvalid . ShouldBeFalse ( ) ;
266+
267+ context . ChangeTracker . Clear ( ) ;
268+ var service = new DisableJwtRefreshToken ( context ) ;
269+
270+ //ATTEMPT
271+ await service . LogoutUserViaUserIdAsync ( "User1" ) ;
237272
273+ //VERIFY
274+ context . ChangeTracker . Clear ( ) ;
275+
276+ var firstTokenAfter = refreshTokensSet . First ( ) ;
277+ firstTokenAfter . IsInvalid . ShouldBeTrue ( ) ;
278+
279+ var lastTokenAfter = refreshTokensSet . Last ( ) ;
280+ lastTokenAfter . IsInvalid . ShouldBeTrue ( ) ;
281+ }
238282 }
239283}
0 commit comments