public void ReturnsSemVer2ForSemVer2CompliantPackagesThatAreNotSemVer1Compliant(string originalVersionString) { // Arrange var nugetVersion = NuGetVersion.Parse(originalVersionString); // Act var key = SemVerLevelKey.ForPackage(nugetVersion, null); // Assert Assert.Equal(SemVerLevelKey.SemVer2, key); }
public void ReturnsUnknownForNonSemVer2CompliantPackages(string originalVersionString) { // Arrange var nugetVersion = NuGetVersion.Parse(originalVersionString); // Act var key = SemVerLevelKey.ForPackage(nugetVersion, null); // Assert Assert.Equal(SemVerLevelKey.Unknown, key); }
private static PackageUploadService CreateService( Mock <IPackageService> packageService = null, Mock <IReservedNamespaceService> reservedNamespaceService = null, Mock <IValidationService> validationService = null) { if (packageService == null) { packageService = new Mock <IPackageService>(); } packageService.Setup(x => x.FindPackageRegistrationById(It.IsAny <string>())).Returns((PackageRegistration)null); packageService.Setup(x => x .CreatePackageAsync(It.IsAny <PackageArchiveReader>(), It.IsAny <PackageStreamMetadata>(), It.IsAny <User>(), It.IsAny <User>(), It.IsAny <bool>())) .Returns((PackageArchiveReader packageArchiveReader, PackageStreamMetadata packageStreamMetadata, User owner, User currentUser, bool isVerified) => { var packageMetadata = PackageMetadata.FromNuspecReader( packageArchiveReader.GetNuspecReader(), strict: true); var newPackage = new Package(); newPackage.PackageRegistration = new PackageRegistration { Id = packageMetadata.Id, IsVerified = isVerified }; newPackage.Version = packageMetadata.Version.ToString(); newPackage.SemVerLevelKey = SemVerLevelKey.ForPackage(packageMetadata.Version, packageMetadata.GetDependencyGroups().AsPackageDependencyEnumerable()); return(Task.FromResult(newPackage)); }); if (reservedNamespaceService == null) { reservedNamespaceService = new Mock <IReservedNamespaceService>(); reservedNamespaceService .Setup(r => r.GetReservedNamespacesForId(It.IsAny <string>())) .Returns(new ReservedNamespace[0]); } if (validationService == null) { validationService = new Mock <IValidationService>(); } var packageUploadService = new Mock <PackageUploadService>( packageService.Object, new Mock <IPackageFileService>().Object, new Mock <IEntitiesContext>().Object, reservedNamespaceService.Object, validationService.Object); return(packageUploadService.Object); }
public void ReturnsUnknownForNonSemVer2CompliantDependenciesThatAreNotSemVer1Compliant(string versionSpec) { // Arrange var packageVersion = NuGetVersion.Parse("1.0.0"); var dependency = new PackageDependency { VersionSpec = versionSpec }; // Act var key = SemVerLevelKey.ForPackage(packageVersion, new[] { dependency }); // Assert Assert.Equal(SemVerLevelKey.Unknown, key); }
private static PackageUploadService CreateService( Mock <IPackageService> packageService = null, Mock <IReservedNamespaceService> reservedNamespaceService = null) { { if (packageService == null) { packageService = new Mock <IPackageService>(); } packageService.Setup(x => x.FindPackageRegistrationById(It.IsAny <string>())).Returns((PackageRegistration)null); packageService.Setup(x => x.CreatePackageAsync(It.IsAny <PackageArchiveReader>(), It.IsAny <PackageStreamMetadata>(), It.IsAny <User>(), It.IsAny <bool>(), It.IsAny <bool>())). Returns((PackageArchiveReader packageArchiveReader, PackageStreamMetadata packageStreamMetadata, User user, bool isVerified, bool commitChanges) => { var packageMetadata = PackageMetadata.FromNuspecReader(packageArchiveReader.GetNuspecReader()); var newPackage = new Package(); newPackage.PackageRegistration = new PackageRegistration { Id = packageMetadata.Id, IsVerified = isVerified }; newPackage.Version = packageMetadata.Version.ToString(); newPackage.SemVerLevelKey = SemVerLevelKey.ForPackage(packageMetadata.Version, packageMetadata.GetDependencyGroups().AsPackageDependencyEnumerable()); return(Task.FromResult(newPackage)); }); } if (reservedNamespaceService == null) { reservedNamespaceService = new Mock <IReservedNamespaceService>(); IReadOnlyCollection <ReservedNamespace> userOwnedMatchingNamespaces = new List <ReservedNamespace>(); reservedNamespaceService.Setup(s => s.IsPushAllowed(It.IsAny <string>(), It.IsAny <User>(), out userOwnedMatchingNamespaces)) .Returns(true); } var packageUploadService = new Mock <PackageUploadService>( packageService.Object, reservedNamespaceService.Object); return(packageUploadService.Object); }
public void ThrowsArgumentNullWhenOriginalVersionStringIsNull() { Assert.Throws <ArgumentNullException>(() => SemVerLevelKey.ForPackage(null, null)); }
public virtual Package EnrichPackageFromNuGetPackage( Package package, PackageArchiveReader packageArchive, PackageMetadata packageMetadata, PackageStreamMetadata packageStreamMetadata, User user) { // Version must always be the exact string from the nuspec, which OriginalVersion will return to us. // However, we do also store a normalized copy for looking up later. package.Version = packageMetadata.Version.OriginalVersion; package.NormalizedVersion = packageMetadata.Version.ToNormalizedString(); package.Description = packageMetadata.Description; package.ReleaseNotes = packageMetadata.ReleaseNotes; package.HashAlgorithm = packageStreamMetadata.HashAlgorithm; package.Hash = packageStreamMetadata.Hash; package.PackageFileSize = packageStreamMetadata.Size; package.Language = packageMetadata.Language; package.Copyright = packageMetadata.Copyright; package.FlattenedAuthors = packageMetadata.Authors.Flatten(); package.IsPrerelease = packageMetadata.Version.IsPrerelease; package.Listed = true; package.RequiresLicenseAcceptance = packageMetadata.RequireLicenseAcceptance; package.Summary = packageMetadata.Summary; package.Tags = PackageHelper.ParseTags(packageMetadata.Tags); package.Title = packageMetadata.Title; package.User = user; package.IconUrl = packageMetadata.IconUrl.ToEncodedUrlStringOrNull(); package.LicenseUrl = packageMetadata.LicenseUrl.ToEncodedUrlStringOrNull(); package.ProjectUrl = packageMetadata.ProjectUrl.ToEncodedUrlStringOrNull(); package.MinClientVersion = packageMetadata.MinClientVersion.ToStringOrNull(); #pragma warning disable 618 // TODO: remove Package.Authors completely once production services definitely no longer need it foreach (var author in packageMetadata.Authors) { package.Authors.Add(new PackageAuthor { Name = author }); } #pragma warning restore 618 var supportedFrameworks = GetSupportedFrameworks(packageArchive) .ToArray(); if (!supportedFrameworks.Any(fx => fx != null && fx.IsAny)) { var supportedFrameworkNames = supportedFrameworks .Select(fn => fn.ToShortNameOrNull()) .Where(fn => fn != null) .ToArray(); ValidateSupportedFrameworks(supportedFrameworkNames); foreach (var supportedFramework in supportedFrameworkNames) { package.SupportedFrameworks.Add(new PackageFramework { TargetFramework = supportedFramework }); } } package.Dependencies = packageMetadata .GetDependencyGroups() .AsPackageDependencyEnumerable() .ToList(); package.PackageTypes = packageMetadata .GetPackageTypes() .AsPackageTypeEnumerable() .ToList(); package.FlattenedDependencies = package.Dependencies.Flatten(); package.FlattenedPackageTypes = package.PackageTypes.Flatten(); // Identify the SemVerLevelKey using the original package version string and package dependencies package.SemVerLevelKey = SemVerLevelKey.ForPackage(packageMetadata.Version, package.Dependencies); return(package); }