public void DeleteWillNotDeleteYourself() { var userid = new ObjectId("abc123"); var email = "*****@*****.**"; var user = new User {Id = userid, Email=email}; var contextuser = new Mock<IPrincipal>(); var context = new Mock<HttpContextBase>(); var response = new Mock<HttpResponseBase>(); var identity = new Mock<IIdentity>(); identity.SetupGet(i => i.Name).Returns(email); contextuser.Setup(u => u.Identity).Returns(identity.Object); context.Setup(h => h.Response).Returns(response.Object); context.Setup(h => h.User).Returns(contextuser.Object); var session = new Mock<IPersistenceSession>(); session.Setup(s => s.Single<User>(It.IsAny<Expression<Func<User, bool>>>())).Returns(user); var controller = new UserController(session.Object); controller.ControllerContext = new ControllerContext(context.Object, new RouteData(), controller); var result = controller.Delete(userid) as ViewResult; session.Verify(s => s.Single<User>(It.IsAny<Expression<Func<User, bool>>>()), Times.Once()); session.Verify(s => s.Delete<User>(It.IsAny<User>()), Times.Never()); }
public void ShouldNotRedirectToSetupWhenThereAreUsers() { var locator = M<IServiceLocator>(); ServiceLocator.SetLocatorProvider(() => locator); var session = Store.OpenSession(); var userdoc = new User(); session.Store(userdoc); session.SaveChanges(); locator.Expect(l => l.GetInstance<IDocumentSession>()).Return(session); var user = M<IPrincipal>(); var httpContext = M<HttpContextBase>(); var response = M<HttpResponseBase>(); response.Expect(r => r.Redirect("/admin/setup", true)).Repeat.Never(); user.Expect(u => u.Identity).Return(M<IIdentity>()); httpContext.Expect(h => h.Response).Return(response); httpContext.Expect(h => h.User).Return(user); var controller = M<ControllerBase>(); var controllerContext = new ControllerContext(httpContext, new RouteData(), controller); var filterContext = new ActionExecutingContext(controllerContext, M<ActionDescriptor>(), new Dictionary<string, object>()); var attribute = new AppInitAttribute(); attribute.OnActionExecuting(filterContext); response.VerifyAllExpectations(); locator.VerifyAllExpectations(); session.Delete(userdoc); session.SaveChanges(); }
public void IndexShouldRedirectWhenThereAreUsers() { var locator = M<IServiceLocator>(); ServiceLocator.SetLocatorProvider(() => locator); var session = Store.OpenSession(); locator.Expect(l => l.GetInstance<IDocumentSession>()).Return(session); var user = new User(); session.Store(user); session.SaveChanges(); var controller = new SetupController(); var result = controller.Index(); result.AssertActionRedirect().ToController("authentication").ToAction("index"); session.Delete(user); session.SaveChanges(); }
public void IndexActionAuthenticatesRedirectsWhenAuthenticationModelIsValid() { var email = "*****@*****.**"; var salt = "salt"; var pass = "******"; var user = new User(); user.Email = email; user.PasswordSalt = salt; user.PasswordHashed = "hashedpassword"; SetupData(s => s.Store(user)); var crypto = M<ICryptographer>(); crypto.Expect(c => c.GetPasswordHash(pass, salt)).Return("hashedpassword").Repeat.Once(); var auth = M<IAuth>(); auth.Expect(a => a.DoAuth(email, true)).Repeat.Once(); var request = M<HttpRequestBase>(); var context = M<HttpContextBase>(); request.Expect(c => c.QueryString).Return(new NameValueCollection()); context.Expect(c => c.Request).Return(request); var controller = new AuthenticationController(Store.OpenSession(),crypto,auth,M<IMessagingService>()); controller.ControllerContext = new ControllerContext(context, new RouteData(), controller); var model = M<AuthenticationModel>(); model.Email = email; model.Password = pass; var result = controller.Index(model); result.AssertActionRedirect().ToController("dashboard").ToAction("index"); crypto.VerifyAllExpectations(); auth.VerifyAllExpectations(); }
public void IndexActionAuthenticatesRedirectsToQueryStringParameterWhenAuthenticationModelIsValid() { var user = new User(); user.Email = "e"; user.PasswordSalt = string.Empty; user.PasswordHashed = "hashedpassword"; SetupData(s => s.Store(user)); var crypto = M<ICryptographer>(); crypto.Expect(c => c.GetPasswordHash(Arg<string>.Is.Anything, (Arg<string>.Is.Anything))).Return("hashedpassword"); var auth = M<IAuth>(); var request = M<HttpRequestBase>(); var context = M<HttpContextBase>(); var qstrings = new NameValueCollection(); qstrings.Add("ReturnUrl", "/somepagetoredirecto"); request.Expect(c => c.QueryString).Return(qstrings); context.Expect(c => c.Request).Return(request); var controller = new AuthenticationController(Store.OpenSession(),crypto, auth, M<IMessagingService>()); controller.ControllerContext = new ControllerContext(context, new RouteData(), controller); var model = M<AuthenticationModel>(); model.Email = "e"; model.Password = "******"; var result = controller.Index(model); Assert.That(result, Is.InstanceOfType(typeof (RedirectResult))); Assert.That(((RedirectResult) result).Url, Is.EqualTo("/somepagetoredirecto")); }