public void AlternativeToolPathsThrowsWhenRegistryItemDoesNotExist(
            IISExpressSettingsTestImpl dummySettings,
            [Frozen] IRegistry registry,
            IISExpressRunnerTestImpl sut)
        {
            registry.LocalMachine.OpenKey(@"SOFTWARE\Microsoft\IISExpress")
            .Returns(null as IRegistryKey);

            sut.Invoking(_ => _.Access_GetAlternativeToolPaths(dummySettings).ToArray())
            .ShouldThrow <CakeException>()
            .WithMessage("IIS Express is not installed on this machine.");
        }
        public void AlternativeToolPathsShouldComeFromRegistry(
            IISExpressSettingsTestImpl dummySettings,
            [Frozen] IRegistry registry,
            IISExpressRunnerTestImpl sut)
        {
            registry.LocalMachine.OpenKey(@"SOFTWARE\Microsoft\IISExpress")
            .GetSubKeyNames()
            .Returns(new[] { "8.0", "10.0" });
            registry.LocalMachine.OpenKey(@"SOFTWARE\Microsoft\IISExpress")
            .OpenKey("10.0")
            .GetValue("InstallPath")
            .Returns("MyIISExpressInstallPath");

            var result = sut.Access_GetAlternativeToolPaths(dummySettings);

            result.Should()
            .HaveCount(1)
            .And.ContainSingle(
                r =>
                r.FullPath.Equals(@"MyIISExpressInstallPath/IISExpress.exe",
                                  StringComparison.OrdinalIgnoreCase));
        }