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); }
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; }
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); }
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); }
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); }
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)); }