public async Task V2FeedParser_NexusFindPackagesByIdNullDependencyRange() { // Arrange var serviceAddress = TestUtility.CreateServiceAddress(); var responses = new Dictionary <string, string>(); responses.Add(serviceAddress + "FindPackagesById()?id='PackageA'", TestUtility.GetResource("NuGet.Protocol.Core.v3.Tests.compiler.resources.NexusFindPackagesById.xml", GetType())); responses.Add(serviceAddress, string.Empty); var httpSource = new TestHttpSource(new PackageSource(serviceAddress), responses); V2FeedParser parser = new V2FeedParser(httpSource, serviceAddress); // Act var packages = await parser.FindPackagesByIdAsync("PackageA", NullLogger.Instance, CancellationToken.None); var latest = packages.OrderByDescending(e => e.Version, VersionComparer.VersionRelease).FirstOrDefault(); // Assert Assert.Equal("PackageA", latest.Id); Assert.Equal("1.0.0.99", latest.Version.ToNormalizedString()); Assert.Equal("My Name", String.Join(",", latest.Authors)); Assert.Equal("", String.Join(",", latest.Owners)); Assert.True(latest.Description.StartsWith("Some description")); Assert.Equal(0, latest.DownloadCountAsInt); Assert.Equal("PackageB:null|EntityFramework:6.1.3|PackageC:3.7.0.15", latest.Dependencies); Assert.Equal(1, latest.DependencySets.Count()); Assert.Equal(VersionRange.All, latest.DependencySets.Single().Packages.Where(p => p.Id == "PackageB").Single().VersionRange); Assert.Equal("any", latest.DependencySets.First().TargetFramework.GetShortFolderName()); }
public async Task V2FeedParser_FindPackagesById_InternalServerError() { // Arrange var serviceAddress = TestUtility.CreateServiceAddress(); var responses = new Dictionary <string, string>(); responses.Add(serviceAddress + "FindPackagesById()?id='xunit'", null); responses.Add(serviceAddress, string.Empty); var httpSource = new TestHttpSource(new PackageSource(serviceAddress), responses, TestUtility.GetResource("NuGet.Protocol.Core.v3.Tests.compiler.resources.500Error.xml", GetType())); V2FeedParser parser = new V2FeedParser(httpSource, serviceAddress); // Act & Assert var exception = await Assert.ThrowsAsync <FatalProtocolException>(() => parser.FindPackagesByIdAsync( "xunit", NullLogger.Instance, CancellationToken.None)); Assert.Equal( "The V2 feed at '" + serviceAddress + "FindPackagesById()?id='xunit'' " + "returned an unexpected status code '500 Internal Server Error'.", exception.Message); }
public async Task V2FeedParser_FollowNextLinks() { // Arrange var serviceAddress = TestUtility.CreateServiceAddress(); var responses = new Dictionary <string, string>(); responses.Add(serviceAddress + "FindPackagesById()?id='ravendb.client'", TestUtility.GetResource("NuGet.Protocol.Core.v3.Tests.compiler.resources.RavendbFindPackagesById.xml", GetType())); responses.Add(serviceAddress, string.Empty); responses.Add("https://www.nuget.org/api/v2/FindPackagesById?id='ravendb.client'&$skiptoken='RavenDB.Client','1.2.2067-Unstable'", TestUtility.GetResource("NuGet.Protocol.Core.v3.Tests.compiler.resources.RavendbFindPackagesByIdPage1.xml", GetType())); responses.Add("https://www.nuget.org/api/v2/FindPackagesById?id='ravendb.client'&$skiptoken='RavenDB.Client','2.0.2183-Unstable'", TestUtility.GetResource("NuGet.Protocol.Core.v3.Tests.compiler.resources.RavendbFindPackagesByIdPage2.xml", GetType())); var httpSource = new TestHttpSource(new PackageSource(serviceAddress), responses); V2FeedParser parser = new V2FeedParser(httpSource, serviceAddress); // Act var packages = await parser.FindPackagesByIdAsync("ravendb.client", NullLogger.Instance, CancellationToken.None); // Assert Assert.Equal(300, packages.Count()); }
private async Task <V2FeedPackageInfo> GetPackageFromIndexAsync(PackageIdentity package, ILogger log, CancellationToken token) { // If the package is missing from FindPackagesById, this will return null. var feedPackages = await _feedParser.FindPackagesByIdAsync(package.Id, NullSourceCacheContext.Instance, log, token); return(feedPackages.FirstOrDefault(p => p.Version == package.Version)); }
public async Task V2FeedParser_FindPackagesByIdAsync() { // Arrange var serviceAddress = TestUtility.CreateServiceAddress(); var responses = new Dictionary <string, string>(); responses.Add(serviceAddress + "FindPackagesById()?id='WindowsAzure.Storage'", TestUtility.GetResource("NuGet.Protocol.Core.v3.Tests.compiler.resources.WindowsAzureStorageFindPackagesById.xml", GetType())); responses.Add(serviceAddress, string.Empty); var httpSource = new TestHttpSource(new PackageSource(serviceAddress), responses); V2FeedParser parser = new V2FeedParser(httpSource, serviceAddress); // Act var packages = await parser.FindPackagesByIdAsync("WindowsAzure.Storage", NullLogger.Instance, CancellationToken.None); var latest = packages.OrderByDescending(e => e.Version, VersionComparer.VersionRelease).FirstOrDefault(); // Assert Assert.Equal("WindowsAzure.Storage", latest.Id); Assert.Equal("6.2.2-preview", latest.Version.ToNormalizedString()); Assert.Equal("WindowsAzure.Storage", latest.Title); Assert.Equal("Microsoft", String.Join(",", latest.Authors)); Assert.Equal("", String.Join(",", latest.Owners)); Assert.True(latest.Description.StartsWith("This client library enables")); Assert.Equal(3957668, latest.DownloadCountAsInt); Assert.Equal("https://www.nuget.org/api/v2/package/WindowsAzure.Storage/6.2.2-preview", latest.DownloadUrl); Assert.Equal("http://go.microsoft.com/fwlink/?LinkID=288890", latest.IconUrl); Assert.Equal("http://go.microsoft.com/fwlink/?LinkId=331471", latest.LicenseUrl); Assert.Equal("http://go.microsoft.com/fwlink/?LinkId=235168", latest.ProjectUrl); Assert.Equal(DateTimeOffset.Parse("2015-12-11T01:25:11.37"), latest.Published.Value); Assert.Equal("https://www.nuget.org/package/ReportAbuse/WindowsAzure.Storage/6.2.2-preview", latest.ReportAbuseUrl); Assert.True(latest.RequireLicenseAcceptance); Assert.Equal("A client library for working with Microsoft Azure storage services including blobs, files, tables, and queues.", latest.Summary); Assert.Equal("Microsoft Azure Storage Table Blob File Queue Scalable windowsazureofficial", latest.Tags); Assert.Equal("Microsoft.Data.OData:5.6.4:dotnet54|Microsoft.Data.Services.Client:5.6.4:dotnet54|System.Spatial:5.6.4:dotnet54|Newtonsoft.Json:6.0.8:dotnet54|System.Collections:4.0.11-beta-23225:dotnet54|System.Collections.Concurrent:4.0.11-beta-23225:dotnet54|System.Collections.Specialized:4.0.0-beta-23109:dotnet54|System.Diagnostics.Debug:4.0.11-beta-23225:dotnet54|System.Diagnostics.Tools:4.0.1-beta-23225:dotnet54|System.Diagnostics.TraceSource:4.0.0-beta-23225:dotnet54|System.Diagnostics.Tracing:4.0.21-beta-23225:dotnet54|System.Dynamic.Runtime:4.0.11-beta-23225:dotnet54|System.Globalization:4.0.11-beta-23225:dotnet54|System.IO:4.0.11-beta-23225:dotnet54|System.IO.FileSystem:4.0.1-beta-23225:dotnet54|System.IO.FileSystem.Primitives:4.0.1-beta-23225:dotnet54|System.Linq:4.0.1-beta-23225:dotnet54|System.Linq.Expressions:4.0.11-beta-23225:dotnet54|System.Linq.Queryable:4.0.0-beta-23109:dotnet54|System.Net.Http:4.0.1-beta-23225:dotnet54|System.Net.Primitives:4.0.11-beta-23225:dotnet54|System.Reflection:4.1.0-beta-23225:dotnet54|System.Reflection.Extensions:4.0.1-beta-23225:dotnet54|System.Reflection.TypeExtensions:4.0.1-beta-23225:dotnet54|System.Runtime:4.0.20-beta-23109:dotnet54|System.Runtime.Extensions:4.0.11-beta-23225:dotnet54|System.Runtime.InteropServices:4.0.21-beta-23225:dotnet54|System.Runtime.Serialization.Primitives:4.0.0-beta-23109:dotnet54|System.Runtime.Serialization.Xml:4.0.10-beta-23109:dotnet54|System.Security.Cryptography.Encoding:4.0.0-beta-23225:dotnet54|System.Security.Cryptography.Primitives:4.0.0-beta-23225:dotnet54|System.Security.Cryptography.Algorithms:4.0.0-beta-23225:dotnet54|System.Text.Encoding:4.0.11-beta-23225:dotnet54|System.Text.Encoding.Extensions:4.0.11-beta-23225:dotnet54|System.Text.RegularExpressions:4.0.11-beta-23225:dotnet54|System.Threading:4.0.11-beta-23225:dotnet54|System.Threading.Tasks:4.0.11-beta-23225:dotnet54|System.Threading.Thread:4.0.0-beta-23225:dotnet54|System.Threading.ThreadPool:4.0.10-beta-23225:dotnet54|System.Threading.Timer:4.0.1-beta-23225:dotnet54|System.Xml.ReaderWriter:4.0.11-beta-23225:dotnet54|System.Xml.XDocument:4.0.11-beta-23225:dotnet54|System.Xml.XmlSerializer:4.0.0-beta-23109:dotnet54|Microsoft.Data.OData:5.6.4:net40-Client|Newtonsoft.Json:6.0.8:net40-Client|Microsoft.Data.Services.Client:5.6.4:net40-Client|Microsoft.Azure.KeyVault.Core:1.0.0:net40-Client|Microsoft.Data.OData:5.6.4:win80|Newtonsoft.Json:6.0.8:win80|Microsoft.Data.OData:5.6.4:wpa|Newtonsoft.Json:6.0.8:wpa|Microsoft.Data.OData:5.6.4:wp80|Newtonsoft.Json:6.0.8:wp80|Microsoft.Azure.KeyVault.Core:1.0.0:wp80|Microsoft.Data.OData:5.6.4:portable-net45+win+wpa81+MonoAndroid10+MonoTouch10|Newtonsoft.Json:6.0.8:portable-net45+win+wpa81+MonoAndroid10+MonoTouch10", latest.Dependencies); Assert.Equal(6, latest.DependencySets.Count()); Assert.Equal("dotnet5.4", latest.DependencySets.First().TargetFramework.GetShortFolderName()); Assert.Equal("release notes", latest.ReleaseNotes); }
public async Task V2FeedParser_DuplicateNextUrl() { // Arrange var dupUrl = "https://www.nuget.org/api/v2/FindPackagesById?id='ravendb.client'&$skiptoken='RavenDB.Client','1.2.2067-Unstable'"; var serviceAddress = TestUtility.CreateServiceAddress(); var responses = new Dictionary <string, string>(); responses.Add(serviceAddress + "FindPackagesById()?id='ravendb.client'", TestUtility.GetResource("NuGet.Protocol.Core.v3.Tests.compiler.resources.CyclicDependency.xml", GetType())); responses.Add(serviceAddress, string.Empty); responses.Add(dupUrl, TestUtility.GetResource("NuGet.Protocol.Core.v3.Tests.compiler.resources.CyclicDependencyPage1.xml", GetType())); responses.Add("https://www.nuget.org/api/v2/FindPackagesById?id='ravendb.client'&$skiptoken='RavenDB.Client','2.0.2183-Unstable'", TestUtility.GetResource("NuGet.Protocol.Core.v3.Tests.compiler.resources.CyclicDependencyPage2.xml", GetType())); var httpSource = new TestHttpSource(new PackageSource(serviceAddress), responses); V2FeedParser parser = new V2FeedParser(httpSource, serviceAddress); FatalProtocolException duplicateUrlException = null; try { // Act var packages = await parser.FindPackagesByIdAsync("ravendb.client", NullLogger.Instance, CancellationToken.None); } catch (FatalProtocolException ex) { duplicateUrlException = ex; } // Assert Assert.NotNull(duplicateUrlException); Assert.Equal(string.Format(CultureInfo.CurrentCulture, Strings.Protocol_duplicateUri, dupUrl), duplicateUrlException.Message); }
public async Task V2FeedParser_Basic() { // Arrange var serviceAddress = TestUtility.CreateServiceAddress(); var responses = new Dictionary <string, string>(); responses.Add(serviceAddress + "FindPackagesById()?id='WindowsAzure.Storage'", TestUtility.GetResource("NuGet.Protocol.Core.v3.Tests.compiler.resources.WindowsAzureStorageFindPackagesById.xml", GetType())); responses.Add(serviceAddress, string.Empty); var httpSource = new TestHttpSource(new PackageSource(serviceAddress), responses); V2FeedParser parser = new V2FeedParser(httpSource, serviceAddress); // Act var packages = await parser.FindPackagesByIdAsync( "WindowsAzure.Storage", NullLogger.Instance, CancellationToken.None); // Assert Assert.Equal(47, packages.Count()); }