public void IndexActionAuthenticatesRedirectsToQueryStringParameterWhenAuthenticationModelIsValid() { var user = new Mock<User>(); user.Object.Email = string.Empty; user.Object.PasswordSalt = string.Empty; user.Object.PasswordHashed = "hashedpassword"; var crypto = new Mock<ICryptographer>(); crypto.Setup(c => c.GetPasswordHash(It.IsAny<string>(), It.IsAny<string>())).Returns("hashedpassword"); var session = new Mock<IPersistenceSession>(); session.Setup(s => s.Single<User>(It.IsAny<Expression<Func<User, bool>>>())).Returns(user.Object); var auth = new Mock<IAuth>(); var request = new Mock<HttpRequestBase>(); var context = new Mock<HttpContextBase>(); var qstrings = new NameValueCollection(); qstrings.Add("ReturnUrl", "/somepagetoredirecto"); request.Setup(c => c.QueryString).Returns(qstrings); context.Setup(c => c.Request).Returns(request.Object); var controller = new AuthenticationController(crypto.Object, session.Object, auth.Object, M<IMessagingService>()); controller.ControllerContext = new ControllerContext(context.Object, new RouteData(), controller); var model = Mock.Of<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")); }
public void IndexShouldReturnViewResultWithAuthenticationModel() { var controller = new AuthenticationController(Store.OpenSession(), M<ICryptographer>(), M<IAuth>(), M<IMessagingService>()); var result = controller.Index(); Assert.That(result, Is.InstanceOf(typeof(ViewResult))); var viewresult = (ViewResult) result; Assert.That(viewresult.ViewData.Model, Is.Not.Null); Assert.That(viewresult.ViewData.Model, Is.InstanceOf(typeof(AuthenticationModel))); }
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 IndexActionAuthenticatesRedirectsWhenAuthenticationModelIsValid() { var email = "*****@*****.**"; var salt = "salt"; var pass = "******"; var user = new Mock<User>(); user.Object.Email = email; user.Object.PasswordSalt = salt; user.Object.PasswordHashed = "hashedpassword"; var crypto = new Mock<ICryptographer>(); crypto.Setup(c => c.GetPasswordHash(pass, salt)).Returns("hashedpassword"); var session = new Mock<IPersistenceSession>(); session.Setup(s => s.Single<User>(It.IsAny<Expression<Func<User, bool>>>())).Returns(user.Object); var auth = new Mock<IAuth>(); var request = new Mock<HttpRequestBase>(); var context = new Mock<HttpContextBase>(); request.Setup(c => c.QueryString).Returns(new NameValueCollection()); context.Setup(c => c.Request).Returns(request.Object); var controller = new AuthenticationController(crypto.Object, session.Object,auth.Object,M<IMessagingService>()); controller.ControllerContext = new ControllerContext(context.Object, new RouteData(), controller); var model = Mock.Of<AuthenticationModel>(); model.Email = email; model.Password = pass; var result = controller.Index(model); result.AssertActionRedirect().ToController("dashboard").ToAction("index"); session.Verify(s => s.Single<User>(It.IsAny<Expression<Func<User, bool>>>()), Times.Once()); crypto.Verify(c => c.GetPasswordHash(pass, salt), Times.Once()); auth.Verify(a => a.DoAuth(email, true), Times.Once()); }
public void IndexActionReturnsToViewWhenAuthenticationModelIsInValid() { var controller = new AuthenticationController(M<ICryptographer>(), M<IPersistenceSession>(), M<IAuth>(), M<IMessagingService>()); var result = controller.Index(Mock.Of<AuthenticationModel>()); var viewresult = result.AssertViewRendered(); Assert.That(viewresult.ViewData.Model, Is.Not.Null); Assert.That(viewresult.ViewData.Model, Is.InstanceOf(typeof(AuthenticationModel))); }
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")); }