public void WhenProviderRespondsWithAnythingElse_ThenRedirectsToSignInActionWithMessage()
        {
            var relyingParty = new MockRelyingParty();
            relyingParty.ResponseMock.SetupGet(r => r.Status).Returns(AuthenticationStatus.SetupRequired);

            TestableAuthController authController = GetTestableAuthController(relyingParty);

            ActionResult result = authController.SignInResponse(@"http://returnUrl.com");
            Assert.IsType(typeof (RedirectToRouteResult), result);
            Assert.Equal("SignIn", ((RedirectToRouteResult) result).RouteValues["action"]);
            Assert.NotNull(authController.TempData["Message"]);
        }
        public void WhenProviderRespondsFailedSignInAuthentication_ThenProvidesErrorMessage()
        {
            var exception = new ArgumentException("TestException");
            var relyingParty = new MockRelyingParty();
            relyingParty.ResponseMock.SetupGet(r => r.Status).Returns(AuthenticationStatus.Failed);
            relyingParty.ResponseMock.SetupGet(r => r.Exception).Returns(exception);

            TestableAuthController authController = GetTestableAuthController(relyingParty);

            authController.SignInResponse(@"http://returnUrl.com");
            Assert.Equal(exception.Message, authController.TempData["Message"]);
        }
        public void WhenProviderRespondsCancelledAuthentication_ThenRedirectsToSignInAction()
        {
            var relyingParty = new MockRelyingParty();
            relyingParty.ResponseMock.SetupGet(r => r.Status).Returns(AuthenticationStatus.Canceled);

            TestableAuthController authController = GetTestableAuthController(relyingParty);

            ActionResult result = authController.SignInResponse(@"http://returnUrl.com");
            Assert.IsType(typeof (RedirectToRouteResult), result);
            Assert.Equal("SignIn", ((RedirectToRouteResult) result).RouteValues["action"]);
        }
        public void WhenProviderRespondsFailedSignInAuthentication_ThenRedirectsToSignInAction()
        {
            var mockRelyingParty = new MockRelyingParty();
            mockRelyingParty.ResponseMock.SetupGet(r => r.Status).Returns(AuthenticationStatus.Failed);
            mockRelyingParty.ResponseMock.SetupGet(r => r.Exception).Returns(new Exception("Failed"));

            TestableAuthController authController = GetTestableAuthController(mockRelyingParty);

            ActionResult result = authController.SignInResponse();
            Assert.IsType(typeof (RedirectToRouteResult), result);
            Assert.Equal("Index", ((RedirectToRouteResult)result).RouteValues["action"]);
        }