Beispiel #1
0
            public void Should_Set_Source_From_Settings_If_Cake_Config_Source_Is_Not_Provided()
            {
                var settingsApi    = "https://foo.bar/api.json";
                var package        = new PackageReference($"nuget:?package=First.Package");
                var settings       = Substitute.For <ISettings>();
                var settingSection = Activator.CreateInstance(
                    type: typeof(VirtualSettingSection),
                    bindingAttr: System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance,
                    binder: null,
                    args: new object[]
                {
                    ConfigurationConstants.PackageSources,
                    (IReadOnlyDictionary <string, string>)null,
                    new[]
                    {
                        new SourceItem("foobar", settingsApi)
                    }
                },
                    culture: null);

                settings.GetSection(ConfigurationConstants.PackageSources).Returns(settingSection);

                var configuration = new CakeConfiguration(new Dictionary <string, string>()
                {
                    [Constants.NuGet.Source] = string.Empty,
                });

                var provider = new NuGetSourceRepositoryProvider(settings, configuration, package);

                Assert.Single(provider.GetRepositories());
                Assert.Contains(provider.GetRepositories(), p => p.PackageSource.Source == settingsApi);
            }
Beispiel #2
0
            public void Should_Set_Source_Specified_In_Directive_As_Primary_But_Not_For_Settings()
            {
                var nugetV3Api = "https://api.nuget.org/v3/index.json";
                var nugetV2Api = "https://packages.nuget.org/api/v2";
                var primaryApi = "https://foo.bar/api.json";
                var package    = new PackageReference($"nuget:{primaryApi}?package=First.Package");
                var settings   = new FakeNuGetSettings();

                settings.AddOrUpdate(ConfigurationConstants.PackageSources, new SourceItem("V3", nugetV3Api));
                settings.AddOrUpdate(ConfigurationConstants.PackageSources, new SourceItem("V2", nugetV2Api));

                var configuration = new CakeConfiguration(new Dictionary <string, string>()
                {
                    [Constants.NuGet.Source] = string.Empty,
                });

                var provider = new NuGetSourceRepositoryProvider(settings, configuration, package, "/Work/packages/");

                Assert.Single(provider.PrimaryRepositories);
                Assert.Contains(provider.PrimaryRepositories, p => p.PackageSource.Source == primaryApi);
                Assert.Equal(3, provider.Repositories.Count());
                Assert.Contains(provider.Repositories, p => p.PackageSource.Source == primaryApi);
                Assert.Contains(provider.Repositories, p => p.PackageSource.Source == nugetV2Api);
                Assert.Contains(provider.Repositories, p => p.PackageSource.Source == nugetV3Api);
            }
Beispiel #3
0
            public void Should_Set_Settings_Source_As_Primary_If_Not_Specified_In_Directive()
            {
                var nugetV3Api     = "https://api.nuget.org/v3/index.json";
                var nugetV2Api     = "https://packages.nuget.org/api/v2";
                var package        = new PackageReference($"nuget:?package=First.Package");
                var settings       = Substitute.For <ISettings>();
                var settingSection = Activator.CreateInstance(
                    type: typeof(VirtualSettingSection),
                    bindingAttr: System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance,
                    binder: null,
                    args: new object[]
                {
                    ConfigurationConstants.PackageSources,
                    (IReadOnlyDictionary <string, string>)null,
                    new[]
                    {
                        new SourceItem("V3", nugetV3Api),
                        new SourceItem("V2", nugetV2Api)
                    }
                },
                    culture: null);

                settings.GetSection(ConfigurationConstants.PackageSources).Returns(settingSection);

                var configuration = new CakeConfiguration(new Dictionary <string, string>()
                {
                    [Constants.NuGet.Source] = string.Empty,
                });

                var provider = new NuGetSourceRepositoryProvider(settings, configuration, package);

                Assert.Equal(2, provider.GetPrimaryRepositories().Count());
                Assert.Contains(provider.GetPrimaryRepositories(), p => p.PackageSource.Source == nugetV2Api);
                Assert.Contains(provider.GetPrimaryRepositories(), p => p.PackageSource.Source == nugetV3Api);
            }
            public void Should_Use_Feed_Specified_In_NuGet_Config_If_Available()
            {
                var feed     = "https://foo.bar/api.json";
                var package  = new PackageReference($"nuget:{feed}?package=First.Package");
                var settings = Substitute.For <ISettings>();

                settings.GetSettingValues(ConfigurationConstants.PackageSources, Arg.Any <bool>())
                .Returns(new List <SettingValue>
                {
                    new SettingValue("foobar", feed, false)
                });
                settings.GetNestedValues(ConfigurationConstants.CredentialsSectionName, "foobar")
                .Returns(new Dictionary <string, string>()
                {
                    ["Username"]          = "******",
                    ["ClearTextPassword"] = "******"
                }.ToList());
                var configuration = new CakeConfiguration(new Dictionary <string, string>()
                {
                    [Constants.NuGet.Source] = string.Empty,
                });

                var provider = new NuGetSourceRepositoryProvider(settings, configuration, package);

                Assert.Single(provider.GetRepositories());
                Assert.Contains(provider.GetRepositories(), p =>
                                p.PackageSource.Source == feed &&
                                p.PackageSource.Credentials.Username == "*****@*****.**" &&
                                p.PackageSource.Credentials.Password == "p455w0rdz");
            }
            public void Should_Set_Source_Specified_In_Directive_As_Primary_But_Not_For_Settings()
            {
                var nugetV3Api = "https://api.nuget.org/v3/index.json";
                var nugetV2Api = "https://packages.nuget.org/api/v2";
                var primaryApi = "https://foo.bar/api.json";
                var package    = new PackageReference($"nuget:{primaryApi}?package=First.Package");
                var settings   = Substitute.For <ISettings>();

                settings.GetSettingValues(ConfigurationConstants.PackageSources, Arg.Any <bool>())
                .Returns(new List <SettingValue>
                {
                    new SettingValue("V3", nugetV3Api, true),
                    new SettingValue("V2", nugetV2Api, true),
                });
                var configuration = new CakeConfiguration(new Dictionary <string, string>()
                {
                    [Constants.NuGet.Source] = string.Empty,
                });

                var provider = new NuGetSourceRepositoryProvider(settings, configuration, package);

                Assert.Single(provider.GetPrimaryRepositories());
                Assert.Contains(provider.GetPrimaryRepositories(), p => p.PackageSource.Source == primaryApi);
                Assert.Equal(3, provider.GetRepositories().Count());
                Assert.Contains(provider.GetRepositories(), p => p.PackageSource.Source == primaryApi);
                Assert.Contains(provider.GetRepositories(), p => p.PackageSource.Source == nugetV2Api);
                Assert.Contains(provider.GetRepositories(), p => p.PackageSource.Source == nugetV3Api);
            }
Beispiel #6
0
            public void Should_Not_Throw_For_Null_NuGet_Source_Value_In_CakeConfiguration()
            {
                var package       = new PackageReference("nuget:?package=First.Package");
                var settings      = Substitute.For <ISettings>();
                var configuration = new CakeConfiguration(new Dictionary <string, string>()
                {
                    [Constants.NuGet.Source] = null,
                });

                var provider = new NuGetSourceRepositoryProvider(settings, configuration, package);

                Assert.Empty(provider.GetRepositories());
            }
Beispiel #7
0
            public void Should_Use_Feed_Specified_In_NuGet_Config_If_Available()
            {
                var feed                 = "https://foo.bar/api.json";
                var package              = new PackageReference($"nuget:{feed}?package=First.Package");
                var settings             = Substitute.For <ISettings>();
                var packageSourceSection = Activator.CreateInstance(
                    type: typeof(VirtualSettingSection),
                    bindingAttr: System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance,
                    binder: null,
                    args: new object[]
                {
                    ConfigurationConstants.PackageSources,
                    (IReadOnlyDictionary <string, string>)null,
                    new[]
                    {
                        new SourceItem("foobar", feed)
                    }
                },
                    culture: null);
                var credentialSection = Activator.CreateInstance(
                    type: typeof(VirtualSettingSection),
                    bindingAttr: System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance,
                    binder: null,
                    args: new object[]
                {
                    ConfigurationConstants.CredentialsSectionName,
                    (IReadOnlyDictionary <string, string>)null,
                    new[]
                    {
                        new CredentialsItem("foobar", "*****@*****.**", "p455w0rdz", true)
                    }
                },
                    culture: null);

                settings.GetSection(ConfigurationConstants.PackageSources).Returns(packageSourceSection);
                settings.GetSection(ConfigurationConstants.CredentialsSectionName).Returns(credentialSection);

                var configuration = new CakeConfiguration(new Dictionary <string, string>()
                {
                    [Constants.NuGet.Source] = string.Empty,
                });

                var provider = new NuGetSourceRepositoryProvider(settings, configuration, package);

                Assert.Single(provider.GetRepositories());
                Assert.Contains(provider.GetRepositories(), p =>
                                p.PackageSource.Source == feed &&
                                p.PackageSource.Credentials.Username == "*****@*****.**" &&
                                p.PackageSource.Credentials.Password == "p455w0rdz");
            }
Beispiel #8
0
            public void Should_Ignore_Trailing_Separator_For_NuGet_Source_Argument()
            {
                var nugetV2Api    = "https://packages.nuget.org/api/v2";
                var package       = new PackageReference("nuget:?package=First.Package");
                var settings      = Substitute.For <ISettings>();
                var configuration = new CakeConfiguration(new Dictionary <string, string>()
                {
                    [Constants.NuGet.Source] = nugetV2Api + ";",
                });

                var provider = new NuGetSourceRepositoryProvider(settings, configuration, package);

                Assert.Single(provider.GetRepositories());
                Assert.Contains(provider.GetRepositories(), p => p.PackageSource.Source == nugetV2Api);
            }
Beispiel #9
0
            public void Should_Split_Multiple_NuGet_Sources_Into_Multiple_Repositories()
            {
                var nugetV3Api    = "https://api.nuget.org/v3/index.json";
                var nugetV2Api    = "https://packages.nuget.org/api/v2";
                var package       = new PackageReference("nuget:?package=First.Package");
                var settings      = Substitute.For <ISettings>();
                var configuration = new CakeConfiguration(new Dictionary <string, string>()
                {
                    [Constants.NuGet.Source] = nugetV2Api + ";" + nugetV3Api,
                });

                var provider = new NuGetSourceRepositoryProvider(settings, configuration, package);

                Assert.Equal(2, provider.GetRepositories().Count());
                Assert.Contains(provider.GetRepositories(), p => p.PackageSource.Source == nugetV2Api);
                Assert.Contains(provider.GetRepositories(), p => p.PackageSource.Source == nugetV3Api);
            }
Beispiel #10
0
            public void Should_Set_Configuration_Source_As_Primary_If_Not_Specified_In_Directive()
            {
                var nugetV3Api    = "https://api.nuget.org/v3/index.json";
                var nugetV2Api    = "https://packages.nuget.org/api/v2";
                var package       = new PackageReference($"nuget:?package=First.Package");
                var settings      = Substitute.For <ISettings>();
                var configuration = new CakeConfiguration(new Dictionary <string, string>()
                {
                    [Constants.NuGet.Source] = $"{nugetV3Api};{nugetV2Api}",
                });

                var provider = new NuGetSourceRepositoryProvider(settings, configuration, package);

                Assert.Equal(2, provider.GetPrimaryRepositories().Count());
                Assert.Contains(provider.GetPrimaryRepositories(), p => p.PackageSource.Source == nugetV2Api);
                Assert.Contains(provider.GetPrimaryRepositories(), p => p.PackageSource.Source == nugetV3Api);
            }
Beispiel #11
0
            public void Should_Set_Source_From_Settings_If_Cake_Config_Source_Is_Not_Provided()
            {
                var settingsApi = "https://foo.bar/api.json";
                var package     = new PackageReference($"nuget:?package=First.Package");
                var settings    = new FakeNuGetSettings();

                settings.AddOrUpdate(ConfigurationConstants.PackageSources, new SourceItem("foobar", settingsApi));

                var configuration = new CakeConfiguration(new Dictionary <string, string>()
                {
                    [Constants.NuGet.Source] = string.Empty,
                });

                var provider = new NuGetSourceRepositoryProvider(settings, configuration, package, "/Work/packages/");

                Assert.Single(provider.Repositories);
                Assert.Contains(provider.Repositories, p => p.PackageSource.Source == settingsApi);
            }
Beispiel #12
0
            public void Should_Not_Set_Source_From_Settings_If_Cake_Config_Source_Is_Provided()
            {
                var nugetV3Api  = "https://api.nuget.org/v3/index.json";
                var nugetV2Api  = "https://packages.nuget.org/api/v2";
                var settingsApi = "https://foo.bar/api.json";
                var package     = new PackageReference($"nuget:?package=First.Package");
                var settings    = new FakeNuGetSettings();

                settings.AddOrUpdate(ConfigurationConstants.PackageSources, new SourceItem("foobar", settingsApi));

                var configuration = new CakeConfiguration(new Dictionary <string, string>()
                {
                    [Constants.NuGet.Source] = $"{nugetV3Api};{nugetV2Api}",
                });

                var provider = new NuGetSourceRepositoryProvider(settings, configuration, package, "/Work/packages/");

                Assert.Equal(2, provider.Repositories.Count());
                Assert.Contains(provider.Repositories, p => p.PackageSource.Source == nugetV2Api);
                Assert.Contains(provider.Repositories, p => p.PackageSource.Source == nugetV3Api);
            }
            public void Should_Set_Source_From_Settings_If_Cake_Config_Source_Is_Not_Provided()
            {
                var settingsApi = "https://foo.bar/api.json";
                var package     = new PackageReference($"nuget:?package=First.Package");
                var settings    = Substitute.For <ISettings>();

                settings.GetSettingValues(ConfigurationConstants.PackageSources, Arg.Any <bool>())
                .Returns(new List <SettingValue>
                {
                    new SettingValue("foobar", settingsApi, true)
                });
                var configuration = new CakeConfiguration(new Dictionary <string, string>()
                {
                    [Constants.NuGet.Source] = string.Empty,
                });

                var provider = new NuGetSourceRepositoryProvider(settings, configuration, package);

                Assert.Single(provider.GetRepositories());
                Assert.Contains(provider.GetRepositories(), p => p.PackageSource.Source == settingsApi);
            }
Beispiel #14
0
            public void Should_Use_Feed_Specified_In_NuGet_Config_If_Available()
            {
                var feed     = "https://foo.bar/api.json";
                var package  = new PackageReference($"nuget:{feed}?package=First.Package");
                var settings = new FakeNuGetSettings();

                settings.AddOrUpdate(ConfigurationConstants.PackageSources, new SourceItem("foobar", feed));
                settings.AddOrUpdate(ConfigurationConstants.CredentialsSectionName, new CredentialsItem("foobar", "*****@*****.**", "p455w0rdz", true, "foo"));

                var configuration = new CakeConfiguration(new Dictionary <string, string>()
                {
                    [Constants.NuGet.Source] = string.Empty,
                });

                var provider = new NuGetSourceRepositoryProvider(settings, configuration, package, "/Work/packages/");

                Assert.Single(provider.Repositories);
                Assert.Contains(provider.Repositories, p =>
                                p.PackageSource.Source == feed &&
                                p.PackageSource.Credentials.Username == "*****@*****.**" &&
                                p.PackageSource.Credentials.Password == "p455w0rdz");
            }