@@ -1239,6 +1239,39 @@ public async Task TwoFactorStoreMethodsFailWhenStoreNotImplemented()
12391239 Assert . ThrowsAsync < NotSupportedException > ( async ( ) => await manager . SetTwoFactorEnabledAsync ( null , true ) ) ;
12401240 }
12411241
1242+ [ Fact ]
1243+ public async Task IsLockedOutAsyncUsesTimeProvider ( )
1244+ {
1245+ var isLockoutEnabled = true ;
1246+ var user = new PocoUser ( ) ;
1247+ var currentDate = DateTimeOffset . UtcNow ;
1248+ var lockoutEndDate = ( DateTimeOffset ? ) currentDate . AddMinutes ( - 1 ) ;
1249+ var timeProviderDate = currentDate . AddMinutes ( - 2 ) ;
1250+ var timeProvider = new Mock < TimeProvider > ( ) ;
1251+ timeProvider . Setup ( provider => provider . GetUtcNow ( ) )
1252+ . Returns ( timeProviderDate ) ;
1253+
1254+ var userLockoutStore = new Mock < IUserLockoutStore < PocoUser > > ( ) ;
1255+ userLockoutStore . Setup ( store =>
1256+ store . GetLockoutEnabledAsync ( user , It . IsAny < CancellationToken > ( ) ) )
1257+ . Returns ( ( ) => Task . FromResult ( isLockoutEnabled ) ) ;
1258+
1259+ userLockoutStore . Setup ( store =>
1260+ store . GetLockoutEndDateAsync ( user , It . IsAny < CancellationToken > ( ) ) )
1261+ . Returns ( ( ) => Task . FromResult ( lockoutEndDate ) ) ;
1262+
1263+ var services = new ServiceCollection ( )
1264+ . AddSingleton ( timeProvider . Object )
1265+ . AddSingleton < IUserStore < PocoUser > > ( userLockoutStore . Object )
1266+ . AddLogging ( ) ;
1267+
1268+ services . AddIdentity < PocoUser , PocoRole > ( ) ;
1269+
1270+ var manager = services . BuildServiceProvider ( ) . GetService < UserManager < PocoUser > > ( ) ;
1271+
1272+ Assert . True ( await manager . IsLockedOutAsync ( user ) ) ;
1273+ }
1274+
12421275 [ Fact ]
12431276 public async Task LockoutStoreMethodsFailWhenStoreNotImplemented ( )
12441277 {
0 commit comments