public void ShouldConfirmNewUserWithTokenAndNewPassword() { var model = new RegisterModelBuilder() .Build(); var mock = GetEmailMock(); string secureToken = null; mock.Setup(e => e.SendConfirmation(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>())) .Callback<string, string, string, int>((from, to, token, userId) => { secureToken = token; }); string oldPassword = ""; UsingSession(session => { var controller = new AccountController(session) { EmailService = mock.Object }; controller.Create(model); oldPassword = session.Query<User>().First(u => u.Username == model.Email).Password; }); UsingSession(session => { var user = session.Query<User>().First(); var controller = new AccountController(session) { EmailService = mock.Object }; var localPasswordModel = new LocalPasswordModelBuilder() .WithSecurityToken(secureToken) .WithUserId(user.Id) .Build(); var mockAccountService = new Mock<IAccountService>(); mockAccountService.Setup(s => s.Login(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<bool>())).Returns(true); controller.AccountService = mockAccountService.Object; var actionResult = (System.Web.Mvc.RedirectToRouteResult)(controller.RegisterConfirmation(localPasswordModel)); Assert.AreEqual("Home", actionResult.RouteValues["controller"]); Assert.AreEqual("Index", actionResult.RouteValues["action"]); }); UsingSession(session => { Assert.IsTrue(session.Query<User>().First(u=>u.Username==model.Email).IsApproved); Assert.AreNotEqual(oldPassword, session.Query<User>().First(u => u.Username == model.Email).Password); }); }
public void ShouldCreateNewUser() { var model = new RegisterModelBuilder() .WithEmail("*****@*****.**") .WithRole(Roles.Admin) .Build(); UsingSession(session => { var controller = new AccountController(session) { EmailService = GetEmailMock().Object }; var actionResult = (System.Web.Mvc.RedirectToRouteResult) (controller.Create(model)); Assert.AreEqual("Account", actionResult.RouteValues["controller"]); Assert.AreEqual("List", actionResult.RouteValues["action"]); }); UsingSession(session => { var users = session.Query<User>().Customize(a => a.WaitForNonStaleResultsAsOfLastWrite()).ToList(); Assert.AreEqual(1, users.Count()); var user = users.First(); Assert.AreEqual(model.Email, user.Username); Assert.AreEqual(model.Role, user.Roles.First()); }); }
public void ShouldListUsers() { var ruimin = new RegisterModelBuilder() .WithEmail("*****@*****.**") .WithRole(Roles.Author) .Build(); var akani = new RegisterModelBuilder() .WithEmail("*****@*****.**") .WithRole(Roles.Admin) .Build(); UsingSession(session => { var accountController = new AccountController(session) { EmailService = GetEmailMock().Object }; accountController.Create(ruimin); accountController.Create(akani); }); UsingSession(session => { var accountController = new AccountController(session); var viewResult = accountController.List(); var actualUsers = ((List<User>) (viewResult.Model)); Assert.AreEqual(2, actualUsers.Count); Assert.IsTrue(UserEqual(akani, actualUsers.First())); Assert.IsTrue(UserEqual(ruimin, actualUsers.Last())); }); }
public void ShouldNotBeAbleToCreateUserWithAnExistingEmail() { var model = new RegisterModelBuilder() .WithEmail("*****@*****.**") .WithRole(Roles.Admin) .Build(); UsingSession(session => { var controller = new AccountController(session) { EmailService = GetEmailMock().Object }; controller.Create(model); }); UsingSession(session => { var controller = new AccountController(session) { EmailService = GetEmailMock().Object }; var viewResult = (System.Web.Mvc.ViewResult)(controller.Create(model)); Assert.AreEqual("A user with this email already exists", controller.TempData["flashError"]); Assert.AreEqual(string.Empty, viewResult.MasterName); Assert.AreEqual("Add a User", viewResult.ViewBag.Title); }); }
public void ShouldCreateNewUserNotApproved() { var model = new RegisterModelBuilder() .Build(); var mock = GetEmailMock(); UsingSession(session => { var controller = new AccountController(session) {EmailService = mock.Object}; controller.Create(model); }); UsingSession(session => { var user = session.Query<User>().Customize(a => a.WaitForNonStaleResultsAsOfLastWrite()).First(); Assert.IsFalse(user.IsApproved); mock.Verify(e => e.SendConfirmation("*****@*****.**", model.Email, user.ConfirmationToken, user.Id), Times.Once()); }); }