public async Task PostAsync_ShouldReturnBadRequest_WithModelState_WhenSignInFailed()
        {
            var userStoreMock     = new Mock <IUserStore <User> >();
            var userManagerMock   = new Mock <UserManager <User> >(userStoreMock.Object, null, null, null, null, null, null, null, null);
            var signInManagerMock = new Mock <SignInManager <User> >(userManagerMock.Object,
                                                                     new Mock <IHttpContextAccessor>().Object,
                                                                     new Mock <IUserClaimsPrincipalFactory <User> >().Object,
                                                                     new Mock <IOptions <IdentityOptions> >().Object,
                                                                     new Mock <ILogger <SignInManager <User> > >().Object,
                                                                     new Mock <IAuthenticationSchemeProvider>().Object,
                                                                     new Mock <IUserConfirmation <User> >().Object);

            userManagerMock
            .Setup(m => m.FindByEmailAsync(It.IsAny <string>()))
            .ReturnsAsync(new User {
                EmailConfirmed = true
            });
            signInManagerMock
            .Setup(m => m.PasswordSignInAsync(It.IsAny <User>(), It.IsAny <string>(), It.IsAny <bool>(), It.IsAny <bool>()))
            .ReturnsAsync(Microsoft.AspNetCore.Identity.SignInResult.Failed);

            using (var controller = new SignInController(userManagerMock.Object, signInManagerMock.Object))
            {
                IActionResult actionResult = await controller.PostAsync(new SignInPostViewModel());

                var badRequestObjectResult = Assert.IsType <BadRequestObjectResult>(actionResult);
                Assert.IsType <SerializableError>(badRequestObjectResult.Value);
            }
        }
        public async Task PostAsync_ShouldReturnBadRequest_WithModelState_WhenUserIsNotFound()
        {
            var userStoreMock   = new Mock <IUserStore <User> >();
            var userManagerMock = new Mock <UserManager <User> >(userStoreMock.Object, null, null, null, null, null, null, null, null);

            using (var controller = new SignInController(userManagerMock.Object, null))
            {
                IActionResult actionResult = await controller.PostAsync(new SignInPostViewModel());

                var badRequestObjectResult = Assert.IsType <BadRequestObjectResult>(actionResult);
                Assert.IsType <SerializableError>(badRequestObjectResult.Value);
            }
        }
        public async Task PostAsync_ShouldReturnBadRequest_WithModelState_WhenEmailIsNotConfirmed()
        {
            var userStoreMock   = new Mock <IUserStore <User> >();
            var userManagerMock = new Mock <UserManager <User> >(userStoreMock.Object, null, null, null, null, null, null, null, null);

            userManagerMock.Setup(m => m.FindByEmailAsync(It.IsAny <string>())).ReturnsAsync(new User {
                EmailConfirmed = false
            });

            using (var controller = new SignInController(userManagerMock.Object, null))
            {
                IActionResult actionResult = await controller.PostAsync(new SignInPostViewModel());

                var badRequestObjectResult = Assert.IsType <BadRequestObjectResult>(actionResult);
                Assert.IsType <SerializableError>(badRequestObjectResult.Value);
            }
        }