public void ShouldSetConfigFileSwitchFromRelativeFilePath(
            [Frozen] ICakeEnvironment environment,
            IFileSystem fileSystem, [Frozen] IAdvProcessRunner runner,
            ConfigBasedIISExpressRunner sut)
        {
            environment.WorkingDirectory.Returns("c:/MyWorkingDirectory");
            var settings = new ConfigBasedIISExpressSettings
            {
                ConfigFilePath = FilePath.FromString("applicationhost.config")
            };

            fileSystem.Exist(
                Arg.Is <FilePath>(
                    f =>
                    f.FullPath.Equals("c:/MyWorkingDirectory/applicationhost.config",
                                      StringComparison.OrdinalIgnoreCase))).Returns(true);

            sut.StartServer(settings);

            runner.Received()
            .Start(Arg.Any <FilePath>(),
                   Arg.Is <AdvProcessSettings>(
                       p =>
                       p.Arguments.Render() ==
                       "/config:\"c:/MyWorkingDirectory/applicationhost.config\""));
        }
        public void ShouldNotSetAnySwitchesByDefault([Frozen] IAdvProcessRunner runner,
                                                     ConfigBasedIISExpressRunner sut)
        {
            var settings = new ConfigBasedIISExpressSettings();

            sut.StartServer(settings);

            runner.Received()
            .Start(Arg.Any <FilePath>(),
                   Arg.Is <AdvProcessSettings>(p => p.Arguments.Render() == ""));
        }
        public void ShouldSetSiteIdSwitch([Frozen] IAdvProcessRunner runner,
                                          ConfigBasedIISExpressRunner sut)
        {
            var settings = new ConfigBasedIISExpressSettings {
                SiteIdToLaunch = 53
            };

            sut.StartServer(settings);

            runner.Received()
            .Start(Arg.Any <FilePath>(),
                   Arg.Is <AdvProcessSettings>(p => p.Arguments.Render() == "/siteid:53"));
        }
        public void ShouldSetAppPoolSwitch([Frozen] IAdvProcessRunner runner,
                                           ConfigBasedIISExpressRunner sut)
        {
            var settings = new ConfigBasedIISExpressSettings {
                AppPoolToLaunch = "MyAppPool"
            };

            sut.StartServer(settings);

            runner.Received()
            .Start(Arg.Any <FilePath>(),
                   Arg.Is <AdvProcessSettings>(p => p.Arguments.Render() == "/apppool:MyAppPool"));
        }
        public void ShouldSetTraceSwitch([Frozen] IAdvProcessRunner runner,
                                         ConfigBasedIISExpressRunner sut)
        {
            var settings = new ConfigBasedIISExpressSettings {
                TraceLevel = TraceLevel.Warning
            };

            sut.StartServer(settings);

            runner.Received()
            .Start(Arg.Any <FilePath>(),
                   Arg.Is <AdvProcessSettings>(p => p.Arguments.Render() == "/trace:warning"));
        }
        public void ShouldSetSystraySwitch([Frozen] IAdvProcessRunner runner,
                                           ConfigBasedIISExpressRunner sut)
        {
            var settings = new ConfigBasedIISExpressSettings {
                EnableSystemTray = false
            };

            sut.StartServer(settings);

            runner.Received()
            .Start(Arg.Any <FilePath>(),
                   Arg.Is <AdvProcessSettings>(p => p.Arguments.Render() == "/systray:false"));
        }
                public void Should_Use_Environments_Working_Directory(ICakeContext context,
                                                                      IAdvProcessRunner runner)
                {
                    // Arrange
                    context.Environment.WorkingDirectory.Returns(new DirectoryPath("/Working"));

                    Action sut = () => context.StartAdvProcess("hello.exe", runner);

                    // Act
                    sut();

                    // Assert
                    runner.Received(1).Start(Arg.Any <FilePath>(), Arg.Is <AdvProcessSettings>(info =>
                                                                                               info.WorkingDirectory.FullPath == "/Working"));
                }
                public void Should_Use_Environments_Working_Directory(ICakeContext context,
                    IAdvProcessRunner runner)
                {
                    // Arrange
                    context.Environment.WorkingDirectory.Returns(new DirectoryPath("/Working"));

                    Action sut = () => context.StartAdvProcess("hello.exe", runner);

                    // Act
                    sut();

                    // Assert
                    runner.Received(1).Start(Arg.Any<FilePath>(), Arg.Is<AdvProcessSettings>(info =>
                        info.WorkingDirectory.FullPath == "/Working"));
                }
        public void ShouldSetSystraySwitch([Frozen] IAdvProcessRunner runner,
                                           IFileSystem fileSystem, AppPathBasedIISExpressRunner sut)
        {
            var settings = new AppPathBasedIISExpressSettings(@"c:\MyApp")
            {
                EnableSystemTray = false
            };

            fileSystem.Exist(settings.AppPath).Returns(true);
            sut.StartServer(settings);

            runner.Received()
            .Start(Arg.Any <FilePath>(),
                   Arg.Is <AdvProcessSettings>(p => p.Arguments.Render() == "/path:\"c:/MyApp\" /systray:false"));
        }
        public void ShouldSetClrVersionSwitch([Frozen] IAdvProcessRunner runner,
                                              IFileSystem fileSystem, AppPathBasedIISExpressRunner sut)
        {
            var settings = new AppPathBasedIISExpressSettings(@"c:\MyApp")
            {
                ClrVersion = ClrVersion.Version20
            };

            fileSystem.Exist(settings.AppPath).Returns(true);

            sut.StartServer(settings);

            runner.Received()
            .Start(Arg.Any <FilePath>(),
                   Arg.Is <AdvProcessSettings>(
                       p => p.Arguments.Render() == "/path:\"c:/MyApp\" /clr:v2.0"));
        }
                public void Should_Use_Provided_Working_Directory_If_Set(ICakeContext context,
                                                                         [NoAutoProperties] AdvProcessSettings settings, IAdvProcessRunner runner)
                {
                    // Arrange
                    settings.WorkingDirectory = "/OtherWorking";

                    Action sut =
                        () => context.StartAdvProcess("hello.exe", settings, runner);

                    // Act
                    sut();

                    // Assert
                    runner.Received(1).Start(
                        Arg.Any <FilePath>(),
                        Arg.Is <AdvProcessSettings>(info =>
                                                    info.WorkingDirectory.FullPath == "/OtherWorking"));
                }
        public void ShouldSetAppPathSwitchFromAbsolutePath(
            [Frozen] ICakeEnvironment environment,
            IFileSystem fileSystem, [Frozen] IAdvProcessRunner runner,
            AppPathBasedIISExpressRunner sut)
        {
            var settings = new AppPathBasedIISExpressSettings(@"c:\MyApp");

            fileSystem.Exist(Arg.Is(settings.AppPath)).Returns(true);

            sut.StartServer(settings);

            runner.Received()
            .Start(Arg.Any <FilePath>(),
                   Arg.Is <AdvProcessSettings>(
                       p =>
                       p.Arguments.Render() ==
                       "/path:\"c:/MyApp\""));
        }
                public void Should_Make_Working_Directory_Absolute_If_Set_To_Relative(
                    ICakeContext context,
                    [NoAutoProperties] AdvProcessSettings settings, IAdvProcessRunner runner)
                {
                    // Arrange
                    context.Environment.WorkingDirectory.Returns("/Working");
                    settings.WorkingDirectory = "OtherWorking";

                    Action sut =
                        () => context.StartAdvProcess("hello.exe", settings, runner);

                    // Act
                    sut();

                    // Assert
                    runner.Received(1).Start(
                        Arg.Any <FilePath>(),
                        Arg.Is <AdvProcessSettings>(info =>
                                                    info.WorkingDirectory.FullPath == "/Working/OtherWorking"));
                }
        public void ShouldSetAppPathSwitchFromRelativeFilePath(
            [Frozen] ICakeEnvironment environment,
            IFileSystem fileSystem, [Frozen] IAdvProcessRunner runner,
            AppPathBasedIISExpressRunner sut)
        {
            environment.WorkingDirectory.Returns("c:/build/MyWorkingDirectory");

            var settings = new AppPathBasedIISExpressSettings(@"..\MyApp");

            fileSystem.Exist(Arg.Is <DirectoryPath>(x => x.FullPath == "c:/build/MyApp")).Returns(true);

            sut.StartServer(settings);

            runner.Received()
            .Start(Arg.Any <FilePath>(),
                   Arg.Is <AdvProcessSettings>(
                       p =>
                       p.Arguments.Render() ==
                       "/path:\"c:/build/MyApp\""));
        }
                public void Should_Make_Working_Directory_Absolute_If_Set_To_Relative(
                    ICakeContext context,
                    [NoAutoProperties] AdvProcessSettings settings, IAdvProcessRunner runner)
                {
                    // Arrange
                    context.Environment.WorkingDirectory.Returns("/Working");
                    settings.WorkingDirectory = "OtherWorking";

                    Action sut =
                        () => context.StartAdvProcess("hello.exe", settings, runner);

                    // Act
                    sut();

                    // Assert
                    runner.Received(1).Start(
                        Arg.Any<FilePath>(),
                        Arg.Is<AdvProcessSettings>(info =>
                            info.WorkingDirectory.FullPath == "/Working/OtherWorking"));
                }
                public void Should_Use_Provided_Working_Directory_If_Set(ICakeContext context,
                    [NoAutoProperties] AdvProcessSettings settings, IAdvProcessRunner runner)
                {
                    // Arrange
                    settings.WorkingDirectory = "/OtherWorking";

                    Action sut =
                        () => context.StartAdvProcess("hello.exe", settings, runner);

                    // Act
                    sut();

                    // Assert
                    runner.Received(1).Start(
                        Arg.Any<FilePath>(),
                        Arg.Is<AdvProcessSettings>(info =>
                            info.WorkingDirectory.FullPath == "/OtherWorking"));
                }