Exemple #1
0
        public void LicenseDefaultNotAllowed_InternalProject_NoViolation()
        {
            var config = new Config {
                DiskCache = new DiskCacheConfig {
                    ResolvedLicenses = new DiskCacheItem {
                        DoCache = false
                    }
                }
            };
            var packagePolicies = new PackagePolicies(new PackagePolicy[] { });
            var licensePolicies = new[] { new LicensePolicy {
                                              License = "no-distribution-allowed", Allow = false, AllowInternal = true
                                          } };

            var pd = new PackageDetails
            {
                Id      = "test-id",
                Version = "1.0.4",
                License = "no-distribution-allowed",
            };

            var package      = new AnalyzedPackage(pd.Id, pd.Version, "path-to-origin-project");
            var dependencies = DependencyChain <AnalyzedPackage> .EmptyList;
            var packages     = new[] { new DependencyChain <AnalyzedPackage>(package, dependencies) };

            var scanner = new LicenseScanner(_ => Task.FromResult(new PackageDetailsResult(pd)), packagePolicies, config);
            var licensedDependencies = scanner.FindLicenses(packages);

            LicensePolicies licensing = new LicensePolicies(licensePolicies, packagePolicies, new Projects(new[] { "path-to-origin-project" }));
            var             result    = licensing.Apply(licensedDependencies);

            Assert.Equal(1, result.Count);
            Assert.Equal(Evaluation.Ok, result.First().Package.Result);
        }
Exemple #2
0
 internal DependencyScanner(InMemoryIndex index, Config config, IFileAccess fileSystem, PackagePolicies packagePolicies)
 {
     this.versionResolver = new PackageVersionResolver(index);
     this.registry        = new NuGetDependencies(index, config);
     this.fileSystem      = fileSystem;
     this.packagePolicies = packagePolicies;
     this.followLocations = config.FollowLocations;
 }
Exemple #3
0
 public NuGetDependencies(InMemoryIndex index, Config config)
 {
     this.index  = index;
     this.config = config.DiskCache;
     this.ignoreDuplicatePackages = config.IgnoreDuplicatePackages;
     this.versionResolver         = new PackageVersionResolver(index);
     this.detailsPathFormatStr    = Path.Combine(this.config.CacheRoot, "packageDetails", "{0}_{1}.json");
     this.resolvedPathFormatStr   = Path.Combine(this.config.CacheRoot, "resolvedDependencies", "{0}_{1}.json");
     this.packagePolicies         = PackagePolicies.LoadFrom(config.PackagePolicies);
 }
        public DependencyScanner(INpm npm, IFileAccess fileSystem, PackagePolicies packagePolicies, DiskCacheConfig config)
        {
            this.fileSystem      = fileSystem;
            this.npm             = npm;
            this.versionResolver = new NpmVersionResolver(npm, config);
            this.packagePolicies = packagePolicies;
            this.config          = config;

            this.detailsPathFormatStr  = Path.Combine(this.config.CacheRoot, "packageDetails", "{0}_{1}.json");
            this.resolvedPathFormatStr = Path.Combine(this.config.CacheRoot, "resolvedDependencies", "{0}_{1}.json");
        }
        public void TypeLicense_InvalidRepositoryFormat_CorrectResult()
        {
            var config = Config.WithoutCache(new Config());

            var packagePolicies = new PackagePolicies(new PackagePolicy[] { });

            var scanner = new DependencyScanner(new FakeNpm(), new FakeFileSystem(), packagePolicies, config.DiskCache);
            var x       = scanner.FindPackageDependencies(new[] { new PackageRange("test-package", "^1.0.0", "") }, new HashSet <string>()).Result;

            Assert.Equal(1, x[0].Dependencies.Count);
        }
        public void CyclincDependency_IsIgnored()
        {
            var config = Config.WithoutCache(new Config());

            var packagePolicies = new PackagePolicies(new PackagePolicy[] { });

            var scanner = new DependencyScanner(new FakeNpm(), new FakeFileSystem(), packagePolicies, config.DiskCache);
            var x       = scanner.FindPackageDependencies(new[] { new PackageRange("test-package", "^2.0.0", "") }, new HashSet <string>()).Result;

            Assert.Equal(1, x[0].Dependencies.Count);
            Assert.Equal(0, x[0].Dependencies.First().Dependencies.Count);
        }
        public static Task <(IDependencyScanner, ILicenseScanner)> Create(IFileAccess fileSystem, Config config)
        {
            var npm                    = new Npm();
            var packagePolicies        = PackagePolicies.LoadFrom(config.PackagePolicies);
            IDependencyScanner scanner = new DependencyScanner(npm, fileSystem, packagePolicies, config.DiskCache);

            Func <IPackage, Task <PackageDetailsResult> > getDetails =
                p => npm.GetPackage(p).ContinueWith(ConvertPackageDetails);

            ILicenseScanner licenseScanner = new LicenseScanner(getDetails, packagePolicies, config);

            return(Task.FromResult((scanner, licenseScanner)));
        }
        public void ApplyLicensePolicy_DifferentLicenseCasing_EvaluationOk()
        {
            var policy = new LicensePolicy
            {
                License = "MS-PL",
                Allow   = true
            };
            var packagePolicies = new PackagePolicies(new PackagePolicy[] { });
            var policies        = new LicensePolicies(new[] { policy }, packagePolicies, new Projects(new string[] { }));

            var package = new LicensedPackage("test-id", "1.0.0", string.Empty, "Ms-PL");

            var result = policies.Apply(package);

            Assert.Equal(Evaluation.Ok, result.Result);
        }
Exemple #9
0
        public static async Task <(IDependencyScanner, ILicenseScanner)> Create(IFileAccess fileSystem, Config config)
        {
            var packagePolicies = PackagePolicies.LoadFrom(config.PackagePolicies);
            var scanner         = await DependencyScanner.Create(config, fileSystem, packagePolicies);

            var catalog = new NuGetCatalog(config.DiskCache);
            var index   = await catalog.GetIndex();

            var registry = new NuGetDependencies(index, config);

            Func <IPackage, Task <PackageDetailsResult> > getDetails =
                p => registry.GetPackageDetails(p).ContinueWith(ConvertPackageDetails);

            ILicenseScanner licenseScanner = new LicenseScanner(getDetails, packagePolicies, config);

            return(scanner, licenseScanner);
        }
Exemple #10
0
        public void NoPackageFound_HasValidPackagePolicy_GivesCorrectLicense()
        {
            var config          = new Config();
            var packagePolicies = new PackagePolicies(new[] { new PackagePolicy {
                                                                  Package = "test-id", License = "test-license"
                                                              } });
            var scanner = new LicenseScanner(_ => Task.FromResult(new PackageDetailsResult(PackageDetailsResultEnum.NoPackageFound)), packagePolicies, config);

            var package      = new AnalyzedPackage("test-id", "1.0.4", string.Empty, AnalysisState.Error, "test error");
            var dependencies = DependencyChain <AnalyzedPackage> .EmptyList;
            var packages     = new[] { new DependencyChain <AnalyzedPackage>(package, dependencies) };

            var result = scanner.FindLicenses(packages);

            Assert.Equal(1, result.Count);
            Assert.Equal("test-license", result.First().Package.License);
        }
Exemple #11
0
        public async static Task <DependencyScanner> Create(Config config, IFileAccess fileSystem, PackagePolicies packagePolicies)
        {
            var catalog = new NuGetCatalog(config.DiskCache);
            var index   = await catalog.GetIndex();

            return(new DependencyScanner(index, config, fileSystem, packagePolicies));
        }