Esempio n. 1
0
        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;
        }
Esempio n. 2
0
        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());
        }
Esempio n. 3
0
        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);
        }