public void InactiveUserCannotLogon()
        {
            Session.Store(new User(firstName: "f", lastName: "l", email: "*****@*****.**", password: "******"));
            Session.SaveChanges();

            bool loggedOn = false;
            var service = Mock.Of<IAuthenticationService>();
            Mock.Get(service).Setup(s => s.SetAuthCookie(It.IsAny<string>(), It.IsAny<bool>())).Callback(
                () => loggedOn = true);
            var controller = new AccountController(service)
                {
                    DocumentSession = Session,
                    Url = CreateUrlHelper()
                };
            var result = controller.LogOn(
                new LogOnViewModel
                    {
                        Email = "*****@*****.**",
                        Password = "******"
                    },
                string.Empty);
            Assert.True(controller.ModelState.ContainsKey("Inactive"));
            result.AssertViewRendered().ForView(string.Empty);

            Assert.False(loggedOn);
        }
        public void LogonReturnsView()
        {
            // Arrange
            var controller = new AccountController(Mock.Of<IAuthenticationService>()) { DocumentSession = Session };

            // Act
            var result = controller.LogOn();

            // Assert
            result.AssertViewRendered().ForView(string.Empty);
        }
        public void CanLogOnAfterRegisteringAndVerifyingAccount()
        {
            // register
            var model = new RegisterViewModel
                {
                    FirstName = "F",
                    LastName = "L",
                    Email = "*****@*****.**",
                    ConfirmEmail = "*****@*****.**",
                    Password = "******"
                };

            var controller1 = new AccountController(Mock.Of<IAuthenticationService>()) { DocumentSession = Session };
            using (DomainEvent.Disable()) controller1.Register(model);

            // normally done by infrastructure (special action filter)
            Session.SaveChanges();

            // verify
            var registeredUser = Session.FindUserByEmail("*****@*****.**");
            Assert.NotNull(registeredUser);
            var key = registeredUser.ActivationKey;

            var controller2 = new AccountController(Mock.Of<IAuthenticationService>()) { DocumentSession = Session };
            controller2.Verify(Guid.Parse(key));

            // logon
            var loggedOn = false;
            var service = Mock.Of<IAuthenticationService>();
            Mock.Get(service)
                .Setup(s => s.SetAuthCookie(It.Is<string>(e => e == "*****@*****.**"), It.IsAny<bool>()))
                .Callback(() => loggedOn = true);

            var controller3 = new AccountController(service)
                {
                    DocumentSession = Session,
                    Url = CreateUrlHelper()
                };
            controller3.LogOn(
                new LogOnViewModel
                    {
                        Email = "*****@*****.**",
                        Password = "******"
                    },
                string.Empty);

            Assert.True(loggedOn);
        }
        public void UnknownUserCannotLogon()
        {
            var service = Mock.Of<IAuthenticationService>();
            bool cookieSet = false;
            Mock.Get(service)
                .Setup(x => x.SetAuthCookie(It.IsAny<string>(), It.IsAny<bool>()))
                .Callback(() => cookieSet = true);

            var controller = new AccountController(service) { DocumentSession = Session };
            var result = controller.LogOn(new LogOnViewModel { Email = "*****@*****.**", Password = "******" }, string.Empty);

            result.AssertViewRendered().ForView(string.Empty);
            Assert.False(cookieSet);
        }