public void AuditController_Resuming_Workflow_Does_Not_Require_Authentication_Given_allowLogIn_Is_False()
        {
            var request  = new Mock <HttpRequestBase>();
            var response = new Mock <HttpResponseBase>();

            request.SetupGet(x => x.Headers).Returns(
                new WebHeaderCollection
            {
                { "X-Requested-With", "XMLHttpRequest" },
            });

            var context = new Mock <HttpContextBase>();

            context.SetupGet(x => x.Request).Returns(request.Object);
            context.SetupGet(x => x.Response).Returns(response.Object);
            var controller = new AuditController();

            controller.ControllerContext = new ControllerContext(context.Object, new RouteData(), controller);
            controller.TempData.Add("allowLogin", false);
            controller.PerformResume(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>());
            response.VerifySet(res => res.StatusCode = 401, Times.AtLeastOnce);
            Assert.AreEqual(1, controller.TempData.Count);
        }
        public void AuditController_Resuming_Workflow_Given_UnAuthorizedUser_Authentication()
        {
            //---------------------------------Arrange---------------------------------------
            var url = "http://localhost:3142/secure/WorkflowResume";
            var returnedExceptionMessage = "The remote server returned an error: (401) Unauthorized.";

            var mockContext          = new Mock <HttpContextBase>();
            var mockRequest          = new Mock <HttpRequestBase>();
            var mockWebClientFactory = new Mock <IWebClientFactory>();
            var mockClientWrapper    = new Mock <IWebClientWrapper>();

            var tempData = new TempDataDictionary
            {
                { "allowLogin", true }
            };

            mockRequest.SetupGet(x => x.Headers).Returns(
                new WebHeaderCollection
            {
                { "X-Requested-With", "XMLHttpRequest" },
                { "Authorization", "Basic ZGV2MlxJbnRlcmdyYXRpb25UZXN0ZXI6STczNTczcjA=" },
            });

            mockContext.SetupGet(o => o.Request).Returns(mockRequest.Object);
            mockWebClientFactory.Setup(o => o.New(It.IsAny <string>(), It.IsAny <string>())).Returns(mockClientWrapper.Object);
            mockClientWrapper.Setup(o => o.UploadValues(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <NameValueCollection>())).Throws(new Exception(returnedExceptionMessage));

            //---------------------------------Act------------------------------------------
            using (var controller = new AuditController(mockWebClientFactory.Object))
            {
                controller.TempData          = tempData;
                controller.ControllerContext = new ControllerContext(mockContext.Object, new RouteData(), controller);

                //----------------------------Assert---------------------------------------
                Assert.ThrowsException <Exception>(() => controller.PerformResume(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), url));
            };
        }