Пример #1
0
        public void DoesNotThrowWhenInvalidDependencyVersionRangeDetectedAndParsingIsNotStrict()
        {
            var packageStream = CreateTestPackageStreamWithInvalidDependencyVersion();
            var nupkg         = new PackageArchiveReader(packageStream, leaveStreamOpen: false);
            var nuspec        = nupkg.GetNuspecReader();

            // Act
            var packageMetadata = PackageMetadata.FromNuspecReader(
                nuspec,
                strict: false);

            // Assert
            Assert.Equal("TestPackage", packageMetadata.Id);
            Assert.Equal(NuGetVersion.Parse("0.0.0.1"), packageMetadata.Version);
            Assert.Equal("Package A", packageMetadata.Title);
            Assert.Equal(2, packageMetadata.Authors.Count);
            Assert.Equal("ownera, ownerb", packageMetadata.Owners);
            Assert.False(packageMetadata.RequireLicenseAcceptance);
            Assert.Equal("package A description.", packageMetadata.Description);
            Assert.Equal("en-US", packageMetadata.Language);
            Assert.Equal("http://www.nuget.org/", packageMetadata.ProjectUrl.ToString());
            Assert.Equal("http://www.nuget.org/", packageMetadata.IconUrl.ToString());
            Assert.Equal("http://www.nuget.org/", packageMetadata.LicenseUrl.ToString());
            var dependencyGroup = Assert.Single(packageMetadata.GetDependencyGroups());
            var dependency      = Assert.Single(dependencyGroup.Packages);

            Assert.Equal("SampleDependency", dependency.Id);
            Assert.Equal(VersionRange.All, dependency.VersionRange);
        }
Пример #2
0
        public void CanReadBasicMetadataProperties()
        {
            // Arrange
            var packageStream = CreateTestPackageStream();
            var nupkg         = new PackageArchiveReader(packageStream, leaveStreamOpen: false);
            var nuspec        = nupkg.GetNuspecReader();

            // Act
            var packageMetadata = PackageMetadata.FromNuspecReader(
                nuspec,
                strict: true);

            // Assert
            Assert.Equal("TestPackage", packageMetadata.Id);
            Assert.Equal(NuGetVersion.Parse("0.0.0.1"), packageMetadata.Version);
            Assert.Equal("Package A", packageMetadata.Title);
            Assert.Equal(2, packageMetadata.Authors.Count);
            Assert.Equal("ownera, ownerb", packageMetadata.Owners);
            Assert.False(packageMetadata.RequireLicenseAcceptance);
            Assert.Equal("package A description.", packageMetadata.Description);
            Assert.Equal("en-US", packageMetadata.Language);
            Assert.Equal("http://www.nuget.org/", packageMetadata.ProjectUrl.ToString());
            Assert.Equal("http://www.nuget.org/", packageMetadata.IconUrl.ToString());
            Assert.Equal("http://www.nuget.org/", packageMetadata.LicenseUrl.ToString());
            Assert.Equal("https://github.com/NuGet/NuGetGallery", packageMetadata.RepositoryUrl.ToString());
            Assert.Equal("git", packageMetadata.RepositoryType);
        }
Пример #3
0
        public static void ThrowsPackagingExceptionWhenInvalidDepencencyVersionRangeDetected()
        {
            var packageStream = CreateTestPackageStreamWithInvalidDependencyVersion();
            var nupkg         = new PackageArchiveReader(packageStream, leaveStreamOpen: false);
            var nuspec        = nupkg.GetNuspecReader();

            // Act & Assert
            Assert.Throws <PackagingException>(() => PackageMetadata.FromNuspecReader(nuspec));
        }
Пример #4
0
        public void ThrowsWhenInvalidMinClientVersion(bool strict)
        {
            var packageStream = CreateTestPackageStreamWithInvalidMinClientVersion();
            var nupkg         = new PackageArchiveReader(packageStream, leaveStreamOpen: false);
            var nuspec        = nupkg.GetNuspecReader();

            // Act & Assert
            var ex = Assert.Throws <ArgumentException>(() => PackageMetadata.FromNuspecReader(nuspec, strict));

            Assert.Equal("'bad' is not a valid version string.\r\nParameter name: value", ex.Message);
        }
Пример #5
0
        public void RejectsEmptyBooleanValue(string name)
        {
            // Arrange
            var packageStream = CreateTestPackageStreamWithMetadataElementNameAndEmptyValue(name);
            var nupkg         = new PackageArchiveReader(packageStream, leaveStreamOpen: false);
            var nuspec        = nupkg.GetNuspecReader();

            // Act & Assert
            var ex = Assert.Throws <PackagingException>(() => PackageMetadata.FromNuspecReader(nuspec, strict: false));

            Assert.Equal($"The package manifest contains an invalid boolean value for metadata element: '{name}'. The value should be 'true' or 'false'.", ex.Message);
        }
Пример #6
0
        public void RejectsRestrictedElementNames(string name, string value)
        {
            // Arrange
            var packageStream = CreateTestPackageStreamWithMetadataElementName(name, value);
            var nupkg         = new PackageArchiveReader(packageStream, leaveStreamOpen: false);
            var nuspec        = nupkg.GetNuspecReader();

            // Act & Assert
            var ex = Assert.Throws <PackagingException>(() => PackageMetadata.FromNuspecReader(nuspec, strict: false));

            Assert.Equal($"The package manifest contains invalid metadata elements: '{name}'", ex.Message);
        }
Пример #7
0
        public void RejectsInvalidPackageTypeName(string name)
        {
            // Arrange
            var packageStream = CreateTestPackageStreamWithPackageTypes("Dependency", name);
            var nupkg         = new PackageArchiveReader(packageStream, leaveStreamOpen: false);
            var nuspec        = nupkg.GetNuspecReader();

            // Act & Assert
            var ex = Assert.Throws <PackagingException>(() => PackageMetadata.FromNuspecReader(nuspec, strict: false));

            Assert.Equal($"The package manifest contains an invalid package type name: '{name}'", ex.Message);
        }
Пример #8
0
        public void ThrowsPackagingExceptionWhenEmptyDuplicateMetadataElementsDetected()
        {
            // Arrange
            var packageStream = CreateTestPackageStreamWithDuplicateEmptyMetadataElements();
            var nupkg         = new PackageArchiveReader(packageStream, leaveStreamOpen: false);
            var nuspec        = nupkg.GetNuspecReader();

            // Act & Assert
            var ex = Assert.Throws <PackagingException>(() => PackageMetadata.FromNuspecReader(
                                                            nuspec,
                                                            strict: true));

            Assert.Equal(
                "The package manifest contains duplicate metadata elements: 'title', 'authors', 'description', 'releaseNotes'",
                ex.Message);
        }
Пример #9
0
        public void ThrowsForEmptyAndNonEmptyDuplicatesWhenDuplicateMetadataElementsDetectedAndParsingIsNotStrict()
        {
            // Arrange
            var packageStream = CreateTestPackageStreamWithDuplicateEmptyAndNonEmptyMetadataElements();
            var nupkg         = new PackageArchiveReader(packageStream, leaveStreamOpen: false);
            var nuspec        = nupkg.GetNuspecReader();

            // Act & Assert
            var ex = Assert.Throws <ArgumentException>(() => PackageMetadata.FromNuspecReader(
                                                           nuspec,
                                                           strict: false));

            Assert.Equal(
                "An item with the same key has already been added.",
                ex.Message);
        }
Пример #10
0
        public void AllowsUnrestrictedButUnofficialElementNames(string name, string value)
        {
            // Arrange
            var packageStream = CreateTestPackageStreamWithMetadataElementName(name, value);
            var nupkg         = new PackageArchiveReader(packageStream, leaveStreamOpen: false);
            var nuspec        = nupkg.GetNuspecReader();

            // Act
            var packageMetadata = PackageMetadata.FromNuspecReader(
                nuspec,
                strict: true);

            // Assert
            Assert.Equal("TestPackage", packageMetadata.Id);
            Assert.Equal(NuGetVersion.Parse("0.0.0.1"), packageMetadata.Version);
        }
Пример #11
0
        public void RejectsValidPackageTypeName(string name)
        {
            // Arrange
            var packageStream = CreateTestPackageStreamWithPackageTypes(name);
            var nupkg         = new PackageArchiveReader(packageStream, leaveStreamOpen: false);
            var nuspec        = nupkg.GetNuspecReader();

            // Act
            var metadata = PackageMetadata.FromNuspecReader(nuspec, strict: false);

            // Assert
            var packageType = Assert.Single(metadata.GetPackageTypes());

            Assert.Equal(name.Trim(), packageType.Name);
            Assert.Equal(new Version(0, 0), packageType.Version);
        }
Пример #12
0
        public static IEnumerable <ValidationResult> Validate(Stream nuspecStream, out NuspecReader nuspecReader)
        {
            try
            {
                nuspecReader = new NuspecReader(nuspecStream);
                var rawMetadata = nuspecReader.GetMetadata();
                if (rawMetadata != null && rawMetadata.Any())
                {
                    return(ValidateCore(PackageMetadata.FromNuspecReader(nuspecReader)));
                }
            }
            catch (Exception ex)
            {
                nuspecReader = null;
                return(new [] { new ValidationResult(ex.Message) });
            }

            return(Enumerable.Empty <ValidationResult>());
        }
Пример #13
0
        public void ThrowsForEmptyDuplicatesWhenDuplicateMetadataElementsDetectedAndParsingIsNotStrict()
        {
            // Arrange
            var packageStream = CreateTestPackageStreamWithDuplicateEmptyMetadataElements();
            var nupkg         = new PackageArchiveReader(packageStream, leaveStreamOpen: false);
            var nuspec        = nupkg.GetNuspecReader();

            // Act
            var packageMetadata = PackageMetadata.FromNuspecReader(
                nuspec,
                strict: false);

            // Assert
            Assert.Equal("TestPackage", packageMetadata.Id);
            Assert.Equal(NuGetVersion.Parse("0.0.0.1"), packageMetadata.Version);
            Assert.Equal("Package A", packageMetadata.Title);
            Assert.Equal(new[] { "authora", "authorb" }, packageMetadata.Authors);
            Assert.Equal("package A description.", packageMetadata.Description);
            Assert.Null(packageMetadata.ReleaseNotes);
        }