public async Task RegistrationIndexCatalogEntryShouldContainDependencyGroupsWhenPackageDep() { var pkgService = new Mock <IPackageService>(MockBehavior.Strict); pkgService.Setup(p => p.FindAsync(It.IsAny <string>(), false, true)).ReturnsAsync(new List <Package>() { new Package() { Id = "abc", VersionString = "1.2.3", Dependencies = new System.Collections.Generic.List <PackageDependency>() { new PackageDependency() { TargetFramework = "netstandard2.0", Id = "dep1" } // a package dependency } } }); using (TestServer server = TestServerBuilder.Create() .TraceToTestOutputHelper(Helper, LogLevel.Error) .WithMock(typeof(IPackageService), pkgService) .Build()) { var services = server.Host.Services; Assert.Equal(pkgService.Object, services.GetRequiredService <IPackageService>()); // https://docs.microsoft.com/en-us/nuget/api/registration-base-url-resource#registration-pages-and-leaves var response = await server.CreateClient().GetAsync(string.Format(RegistrationIndexUrlFormatString, "abc")); Assert.Equal(System.Net.HttpStatusCode.OK, response.StatusCode); var jsonString = await response.Content.ReadAsStringAsync(); var actual = JObject.Parse(jsonString); var groups = actual["items"][0]["items"][0]["catalogEntry"]["dependencyGroups"]; var expected = new JArray( new JObject { { "@id", $"https://api.nuget.org/v3/catalog0/data/2015.02.01.06.24.15/abc.1.2.3.json#dependencygroup/.netstandard2.0" }, { "@type", "PackageDependencyGroup" }, { "targetFramework", "netstandard2.0" }, { "dependencies", new JArray(new JObject { { "@id", $"https://api.nuget.org/v3/catalog0/data/2015.02.01.06.24.15/abc.1.2.3.json#dependencygroup/.netstandard2.0/dep1" }, { "@type", "PackageDependency" }, { "id", "dep1" }, { "range", null }, { "registration", "http://localhost/v3/registration/dep1/index.json" } }) } } ); string message = "Actual part of response: \n" + groups.ToString(); Assert.True(JToken.DeepEquals(expected, groups), message); } }
public async Task RegistrationIndexCatalogEntryShouldContainDependencyGroups() { var pkgService = new Mock <ICacheService>(MockBehavior.Strict); Mock <IPackageSearchMetadata> abcPackage = new Mock <IPackageSearchMetadata>(); abcPackage.SetupGet(a => a.Identity).Returns(new NuGet.Packaging.Core.PackageIdentity("abc", NuGetVersion.Parse("1.2.3"))); abcPackage.SetupGet(a => a.DependencySets).Returns(new PackageDependencyGroup[1] { new PackageDependencyGroup(NuGetFramework.Parse("netstandard2.0"), new NuGet.Packaging.Core.PackageDependency[0]) }); pkgService.Setup(p => p.FindUpstreamMetadataAsync(It.IsAny <string>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new List <IPackageSearchMetadata>() { abcPackage.Object }); using (TestServer server = TestServerBuilder.Create() .TraceToTestOutputHelper(Helper, LogLevel.Error) .WithMock(typeof(ICacheService), pkgService) .Build()) { var services = server.Host.Services; Assert.Equal(pkgService.Object, services.GetRequiredService <ICacheService>()); // https://docs.microsoft.com/en-us/nuget/api/registration-base-url-resource#registration-pages-and-leaves var response = await server.CreateClient().GetAsync(string.Format(RegistrationIndexUrlFormatString, "abc")); Assert.Equal(System.Net.HttpStatusCode.OK, response.StatusCode); var jsonString = await response.Content.ReadAsStringAsync(); var actual = JObject.Parse(jsonString); var groups = actual["items"][0]["items"][0]["catalogEntry"]["dependencyGroups"]; var expected = new JArray( new JObject { { "@id", $"https://api.nuget.org/v3/catalog0/data/2015.02.01.06.24.15/abc.1.2.3.json#dependencygroup/.netstandard2.0" }, { "@type", "PackageDependencyGroup" }, { "targetFramework", "netstandard2.0" }, { "dependencies", null } } ); string message = "Actual part of response: \n" + groups.ToString(); Assert.True(JToken.DeepEquals(expected, groups), message); } }
public HostFixture() { Server = TestServerBuilder.Create().WithStartup <Startup>().Build(); _connectionString = Server.Host.Services.GetService <IConfiguration>().GetSection <ConnectionStrings>(); Server.Host.ExecuteDbContext <DataBaseContext>(dbContext => { dbContext.Database.EnsureDeleted(); if (dbContext.Database.GetPendingMigrations().Any()) { dbContext.Database.Migrate(); } }); Checkpoint.TablesToIgnore = new[] { "__EFMigrationsHistory", nameof(DataBaseContext.Genders) }; }
public PackageServiceTests(ITestOutputHelper helper) { Helper = helper ?? throw new ArgumentNullException(nameof(helper)); server = TestServerBuilder.Create().TraceToTestOutputHelper(Helper, LogLevel.Error).Build(); }
public void Reset() { Server = TestServerBuilder.Create().WithStartup <Startup>().Build(); }