public void WhenCalled_SetsLastModified() { var lockout = new TimedLockout("key", lastModified: DateTimeOffset.UtcNow); var model = new TimedLockoutModel(lockout); Assert.Equal(lockout.LastModified, model.LastModified); }
public void WhenCalled_SetsValue() { var data = new TimedLockout("key", new UtcDateTime(DateTimeOffset.UtcNow)); byte failedAttempts = 5; data.FailedAccessAttempts = failedAttempts; Assert.Equal(failedAttempts, data.FailedAccessAttempts); }
public TimedLockoutModel(TimedLockout lockout) : this() { Guard.Null(nameof(lockout), lockout); this.Key = lockout.Key; this.LastModified = lockout.LastModified; this.FailedAccessAttempts = lockout.FailedAccessAttempts; this.Expiration = lockout.Expiration; }
public void WhenCalled_SetsKey() { var lockout = new TimedLockout("key", lastModified: new UtcDateTime(DateTimeOffset.UtcNow)); var model = new TimedLockoutModel(lockout); Assert.Equal("key", model.Key); }
public void WhenCalled_SetsValue() { var data = new TimedLockout("key", new UtcDateTime(DateTimeOffset.UtcNow)); var expiration = DateTimeOffset.UtcNow.AddDays(1); data.Expiration = new UtcDateTime(expiration); Assert.Equal(expiration, data.Expiration.ToOffset()); }
public void WhenCalled_SetsValue() { var data = new TimedLockout("key", new UtcDateTime(DateTimeOffset.UtcNow)); var lastModified = DateTimeOffset.UtcNow.AddDays(1); data.LastModified = new UtcDateTime(lastModified); Assert.Equal(lastModified, data.LastModified.ToOffset()); }
public void WhenCalled_SetsExpiration() { var lockout = new TimedLockout("key", lastModified: DateTimeOffset.UtcNow) { Expiration = DateTimeOffset.UtcNow }; var model = new TimedLockoutModel(lockout); Assert.Equal(lockout.Expiration, model.Expiration); }
public void WhenCalled_SetsFailedAccessAttempts() { var lockout = new TimedLockout("key", lastModified: DateTimeOffset.UtcNow) { FailedAccessAttempts = 5 }; var model = new TimedLockoutModel(lockout); Assert.Equal(5, model.FailedAccessAttempts); }
public TimedLockoutModel(TimedLockout lockout) : this() { Guard.Null(nameof(lockout), lockout); this.Key = lockout.Key; this.LastModified = lockout.LastModified.ToOffset(); this.FailedAccessAttempts = lockout.FailedAccessAttempts; if (!(lockout.Expiration is null)) { this.Expiration = lockout.Expiration.ToOffset(); } }
protected virtual async Task <bool> IsLockedOut(string key, TimeSpan lockoutLength, byte maxFailedAccessAttempts) { Guard.NullOrWhiteSpace(nameof(key), key); Guard.LessThan(nameof(maxFailedAccessAttempts), maxFailedAccessAttempts, minimum: (byte)2); var now = this.Clock.UtcNow; var lockout = await this.TimedLockoutStore.Retrieve(key).ConfigureAwait(false); if (lockout == null) { lockout = new TimedLockout(key, lastModified: now); await this.TimedLockoutStore.Create(lockout).ConfigureAwait(false); } else if (lockout.Expiration is null) { if (lockout.LastModified.ToOffset() <= now.ToOffset().Subtract(lockoutLength)) { lockout = new TimedLockout(key, lastModified: now); await this.TimedLockoutStore.Update(lockout).ConfigureAwait(false); } else { lockout.LastModified = now; lockout.FailedAccessAttempts++; if (lockout.FailedAccessAttempts >= maxFailedAccessAttempts) { lockout.Expiration = new UtcDateTime( now.ToOffset().Add(lockoutLength)); } await this.TimedLockoutStore.Update(lockout).ConfigureAwait(false); } } else if (lockout.Expiration <= now) { lockout = new TimedLockout(key, lastModified: now); await this.TimedLockoutStore.Update(lockout).ConfigureAwait(false); } return(!(lockout.Expiration is null) && lockout.Expiration > now); }
public void DefaultValue_Equals1() { var data = new TimedLockout("key", new UtcDateTime(DateTimeOffset.UtcNow)); Assert.Equal(1, data.FailedAccessAttempts); }
public void DefaultValue_ReturnsNull() { var data = new TimedLockout("key", new UtcDateTime(DateTimeOffset.UtcNow)); Assert.Null(data.Expiration); }