public void Login_CanNotAuthenticateUser()
        {
            // Arrange
            UserClientMock.Setup(x => x.AuthenticateUser(It.IsAny <string>(), It.IsAny <string>())).Returns((IdentityUser)null);

            // Act
            var result = AccountController.Login(new LoginViewModel(), string.Empty).Result;

            // Assert
            AccountController.ModelState[string.Empty].Errors.First().ErrorMessage
            .Should().Be("Login unsuccessful. Check your user name and password.");
            AssertNeverSignedIn();
            result.Should().NotBeNull();
        }
        public void Login_UserClientThrowsException()
        {
            // Arrange
            UserClientMock.Setup(x => x.AuthenticateUser(It.IsAny <string>(), It.IsAny <string>())).Throws <AuthenticatedUserClientException>();

            // Act
            Task <ActionResult> result = AccountController.Login(new LoginViewModel(), string.Empty);

            // Assert
            AccountController.ModelState[string.Empty].Errors.First().ErrorMessage
            .Should().Be("There was a problem. Contact your administrator or try again later.");
            AssertNeverSignedIn();
            result.Should().NotBeNull();
        }
        public void Login_HappyPath()
        {
            // Arrange
            const string username   = "******";
            const string password   = "******";
            var          loginModel = new LoginViewModel
            {
                UserName   = username,
                Password   = password,
                RememberMe = true
            };
            string returnUrl    = string.Empty;
            var    identityUser = new IdentityUser();

            UserClientMock.Setup(client => client.AuthenticateUser(username, password)).Returns(identityUser);

            // Act
            ActionResult result = AccountController.Login(loginModel, returnUrl).Result;

            // Assert
            SignInManagerMock.Verify(x => x.SignInAsync(identityUser, true, true));
            result.Should().NotBeNull();
        }