예제 #1
0
        [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);
            }
        }
예제 #2
0
        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());
        }
예제 #3
0
        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);
        }