Skip to content

Commit e7d8438

Browse files
author
StickFun
committed
Added test verification for TimeProvider
1 parent a1d7d2a commit e7d8438

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

src/Identity/test/Identity.Test/UserManagerTest.cs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)