public void will_execute_a_build_with_the_app_build_url()
            {
                var buildExecutor = new Mock<IBuildExecutor>();
                var controller = CreateController(buildExecutor: buildExecutor);
                var request = new SetMaintenanceModeRequest { AppBuildUrl = "http://theBuildUrl/path" };

                controller.TurnMantienanceModeOn(request);

                buildExecutor.Verify(x => x.Execute(
                    new Uri("http://theBuildUrl/path"), null));
            }
            public void will_pass_the_maintenance_mode_message_the_build_executor_when_specified()
            {
                var buildExecutor = new Mock<IBuildExecutor>();
                var controller = CreateController(buildExecutor: buildExecutor);
                var request = new SetMaintenanceModeRequest { AppBuildUrl = "http://theBuildUrl/path" };
                var messageBytes = Encoding.UTF8.GetBytes("theMessage");
                request.Message = HttpServerUtility.UrlTokenEncode(messageBytes);

                controller.TurnMantienanceModeOn(request);

                buildExecutor.Verify(x => x.Execute(
                    new Uri("http://theBuildUrl/path"), request.Message));
            }
            public void will_invalidate_model_state_and_show_the_form_with_errors_when_the_a_bad_url_exception_is_thrown()
            {
                var buildExecutor = new Mock<IBuildExecutor>();
                buildExecutor.Setup(x => x.Execute(It.IsAny<Uri>(), It.IsAny<string>()))
                    .Throws(new BadUrlException(""));
                var controller = CreateController(buildExecutor: buildExecutor);
                var request = new SetMaintenanceModeRequest { AppBuildUrl = "anInvalidUrl" };

                var result = controller.TurnMantienanceModeOn(request) as ViewResult;

                Assert.NotNull(result);
                Assert.Empty(result.ViewName);
                Assert.False(controller.ModelState.IsValid);
                Assert.Equal(
                    Message.InvalidBuildUrl,
                    controller.ModelState["AppBuildUrl"].Errors[0].ErrorMessage);
            }
            public void will_invalidate_model_state_and_show_the_form_with_errors_when_the_build_url_is_not_a_valid_url()
            {
                var buildExecutor = new Mock<IBuildExecutor>();
                var controller = CreateController(buildExecutor: buildExecutor);
                var request = new SetMaintenanceModeRequest { AppBuildUrl = "anInvalidUrl" };

                var result = controller.TurnMantienanceModeOn(request) as ViewResult;

                Assert.NotNull(result);
                Assert.Empty(result.ViewName);
                Assert.False(controller.ModelState.IsValid);
                Assert.Equal(
                    Message.InvalidBuildUrl,
                    controller.ModelState["AppBuildUrl"].Errors[0].ErrorMessage);
            }
            public void will_flash_success_after_executing_the_build()
            {
                var buildExecutor = new Mock<IBuildExecutor>();
                var controller = CreateController(buildExecutor: buildExecutor);
                var request = new SetMaintenanceModeRequest { AppBuildUrl = "http://theBuildUrl/path" };

                controller.TurnMantienanceModeOn(request);

                Assert.Equal(Message.SetMaintenanceModeSuccess, controller.TempData["success"]);
            }