[DataRow("pkg:nuget/razorengine", "RazorEngine - A Templating Engine based on the Razor parser.", "Matthew Abbott, Ben Dornis, Matthias Dittrich", "4.5.1-alpha001")] // Normal package, no specified version public async Task MetadataSucceeds(string purlString, string?description = null, string?authors = null, string?latestVersion = null) { PackageURL purl = new(purlString); IManagerPackageActions <NuGetPackageVersionMetadata>?nugetPackageActions = PackageActionsHelper <NuGetPackageVersionMetadata> .SetupPackageActions( purl, JsonConvert.DeserializeObject <NuGetPackageVersionMetadata>(_metadata[purl.ToString()]), JsonConvert.DeserializeObject <IEnumerable <string> >(_versions[purl.ToString()])?.Reverse()); _projectManager = new NuGetProjectManager(".", nugetPackageActions, _httpFactory); PackageMetadata metadata = await _projectManager.GetPackageMetadataAsync(purl, useCache : false); Assert.AreEqual(purl.Name, metadata.Name, ignoreCase: true); // If a version was specified, assert the response is for this version, otherwise assert for the latest version. Assert.AreEqual(!string.IsNullOrWhiteSpace(purl.Version) ? purl.Version : latestVersion, metadata.PackageVersion); Assert.AreEqual(description, metadata.Description); if (!string.IsNullOrWhiteSpace(authors)) { List <User> authorsList = authors.Split(", ").Select(author => new User() { Name = author }).ToList(); CollectionAssert.AreEquivalent(authorsList, metadata.Authors); } }
public async Task EnumerateVersionsSucceeds( string purlString, int count, string latestVersion, bool includePrerelease = true) { PackageURL purl = new(purlString); IManagerPackageActions <NuGetPackageVersionMetadata>?nugetPackageActions = PackageActionsHelper <NuGetPackageVersionMetadata> .SetupPackageActions( purl, JsonConvert.DeserializeObject <NuGetPackageVersionMetadata>(_metadata[purl.ToString()]), JsonConvert.DeserializeObject <IEnumerable <string> >(_versions[purl.ToString()])?.Reverse(), includePrerelease : includePrerelease); _projectManager = new NuGetProjectManager(".", nugetPackageActions, _httpFactory); List <string> versions = (await _projectManager.EnumerateVersionsAsync(purl, false, includePrerelease)).ToList(); Assert.AreEqual(count, versions.Count); Assert.AreEqual(latestVersion, versions.First()); }
public NuGetProjectManagerTests() { Mock <IHttpClientFactory> mockFactory = new(); MockHttpMessageHandler mockHttp = new(); // Mock getting the registration endpoint. mockHttp .When(HttpMethod.Get, "https://api.nuget.org/v3/index.json") .Respond(HttpStatusCode.OK, "application/json", Resources.nuget_registration_json); foreach ((string url, string json) in _packages) { MockHttpFetchResponse(HttpStatusCode.OK, url, json, mockHttp); } mockHttp.When(HttpMethod.Get, "https://api.nuget.org/v3-flatcontainer/*.nupkg").Respond(HttpStatusCode.OK); mockHttp.When(HttpMethod.Get, "https://api.nuget.org/v3-flatcontainer/*.nuspec").Respond(HttpStatusCode.OK); mockFactory.Setup(_ => _.CreateClient(It.IsAny <string>())).Returns(mockHttp.ToHttpClient()); _httpFactory = mockFactory.Object; _projectManager = new NuGetProjectManager(".", new NuGetPackageActions(), _httpFactory); }