public LoginLogoutManager(IPasswordAuthenticationService authenticationService, ILogsUserInOrOut loginLogoutService, ILoginThrottlingService throttlingService) { if (loginLogoutService == null) { throw new ArgumentNullException(nameof(loginLogoutService)); } if (throttlingService == null) { throw new ArgumentNullException(nameof(throttlingService)); } if (authenticationService == null) { throw new ArgumentNullException(nameof(authenticationService)); } this.authenticationService = authenticationService; this.loginLogoutService = loginLogoutService; this.throttlingService = throttlingService; }
public void AttemptLogin_result_indicates_correct_time_to_next_attempt_when_throttling_prohibits_login([Frozen] CSF.Security.Authentication.IPasswordAuthenticationService authService, [Frozen] ILoginThrottlingService throttling, LoginLogoutManager sut, ILoginRequest request, LoginCredentials credentials, [HasIdentity] User user, TimeSpan time) { // Arrange Mock.Get(request) .Setup(x => x.GetCredentials()) .Returns(credentials); Mock.Get(authService) .Setup(x => x.Authenticate(credentials)) .Returns(new AuthenticationResult(user.GetIdentity(), user.Username, true)); Mock.Get(throttling) .Setup(x => x.GetThrottlingResponse(request)) .Returns(new LoginThrottlingResponse(time)); user.Username = credentials.Username; user.GenerateIdentity(); // Act var result = sut.AttemptLogin(request); // Assert Assert.AreEqual(time, result.TimeBeforeNextAttempt.GetValueOrDefault()); }
public void AttemptLogin_returns_failure_result_when_throttling_prohibits_a_login([Frozen] CSF.Security.Authentication.IPasswordAuthenticationService authService, [Frozen] ILoginThrottlingService throttling, LoginLogoutManager sut, ILoginRequest request, LoginCredentials credentials, [HasIdentity] User user, TimeSpan time) { // Arrange Mock.Get(request) .Setup(x => x.GetCredentials()) .Returns(credentials); Mock.Get(authService) .Setup(x => x.Authenticate(credentials)) .Returns(new AuthenticationResult(user.GetIdentity(), user.Username, true)); Mock.Get(throttling) .Setup(x => x.GetThrottlingResponse(request)) .Returns(new LoginThrottlingResponse(time)); user.Username = credentials.Username; user.GenerateIdentity(); // Act var result = sut.AttemptLogin(request); // Assert Assert.IsFalse(result.Success); }