public async Task MetadataClient_ResolverPackagesAndDependencyPackages() { // Verify that when collecting dependency info for Microsoft.Owin that Owin is also returned // Arrange var responses = new Dictionary <string, string>(); responses.Add("http://testsource.com/v3/index.json", JsonData.Index); responses.Add("https://api.nuget.org/v3/registration0/microsoft.owin/index.json", JsonData.MicrosoftOwinRegistration); responses.Add("https://api.nuget.org/v3/registration0/owin/index.json", JsonData.OwinRegistration); var repo = StaticHttpHandler.CreateSource("http://testsource.com/v3/index.json", Repository.Provider.GetCoreV3(), responses); var resource = await repo.GetResourceAsync <DepedencyInfoResource>(); // Act var results = await resource.ResolvePackages("microsoft.owin", NuGetFramework.Parse("net45"), true, CancellationToken.None); var target = results.Where(p => p.Version == NuGetVersion.Parse("3.0.0")).Single(); // Assert Assert.Equal(14, results.Where(p => p.Id.Equals("microsoft.owin", StringComparison.OrdinalIgnoreCase)).Count()); Assert.Equal("Owin", target.Dependencies.Single().Id); Assert.Equal("[1.0.0, )", target.Dependencies.Single().VersionRange.ToNormalizedString()); Assert.Equal(1, results.Where(p => p.Id.Equals("owin", StringComparison.OrdinalIgnoreCase)).Count()); }
public async Task PackageSearchResourceV3_UsesReferenceCache() { // Arrange var responses = new Dictionary <string, string>(); responses.Add("https://api-v3search-0.nuget.org/query?q=entityframework&skip=0&take=1&prerelease=false&semVerLevel=2.0.0", TestUtility.GetResource("NuGet.Protocol.Tests.compiler.resources.SearchV3WithDuplicateBesidesVersion.json", GetType())); responses.Add("http://testsource.com/v3/index.json", JsonData.IndexWithoutFlatContainer); var repo = StaticHttpHandler.CreateSource("http://testsource.com/v3/index.json", Repository.Provider.GetCoreV3(), responses); var resource = await repo.GetResourceAsync <PackageSearchResource>(); // Act var packages = (IEnumerable <PackageSearchMetadataBuilder.ClonedPackageSearchMetadata>) await resource.SearchAsync( "entityframework", new SearchFilter(false), skip : 0, take : 1, log : NullLogger.Instance, cancellationToken : CancellationToken.None); var first = packages.ElementAt(0); var second = packages.ElementAt(1); // Assert MetadataReferenceCacheTestUtility.AssertPackagesHaveSameReferences(first, second); }
public async Task PackageSearchResourceV3_GetMetadataAsync_NotFound() { // Arrange var responses = new Dictionary <string, string>(); responses.Add("https://api-v3search-0.nuget.org/query?q=yabbadabbadoo&skip=0&take=1&prerelease=false&semVerLevel=2.0.0", TestUtility.GetResource("NuGet.Protocol.Tests.compiler.resources.EmptySearchResponse.json", GetType())); responses.Add("http://testsource.com/v3/index.json", JsonData.IndexWithoutFlatContainer); var repo = StaticHttpHandler.CreateSource("http://testsource.com/v3/index.json", Repository.Provider.GetCoreV3(), responses); var resource = await repo.GetResourceAsync <PackageSearchResource>(); // Act var packages = await resource.SearchAsync( "yabbadabbadoo", new SearchFilter(false), skip : 0, take : 1, log : NullLogger.Instance, cancellationToken : CancellationToken.None); // Assert Assert.Empty(packages); }
public async Task PackageMetadataResource_PackageIdentity_NotFound() { // Arrange var serviceAddress = TestUtility.CreateServiceAddress(); var responses = new Dictionary <string, string>(); responses.Add(serviceAddress + "FindPackagesById()?id='WindowsAzure.Storage'&semVerLevel=2.0.0", TestUtility.GetResource("NuGet.Protocol.Tests.compiler.resources.NotFoundFindPackagesById.xml", GetType())); responses.Add(serviceAddress + "Packages(Id='WindowsAzure.Storage',Version='0.0.0')", TestUtility.GetResource("NuGet.Protocol.Tests.compiler.resources.NotFoundFindPackagesById.xml", GetType())); responses.Add(serviceAddress, string.Empty); var repo = StaticHttpHandler.CreateSource(serviceAddress, Repository.Provider.GetCoreV3(), responses); var packageMetadataResource = await repo.GetResourceAsync <PackageMetadataResource>(); var packageIdentity = new PackageIdentity("WindowsAzure.Storage", new NuGetVersion("0.0.0")); // Act var metadata = await packageMetadataResource.GetMetadataAsync(packageIdentity, NullLogger.Instance, CancellationToken.None); // Assert Assert.Null(metadata); }
public async Task PackageSearchResourceV3_GetMetadataAsync() { // Arrange var responses = new Dictionary <string, string>(); responses.Add("https://api-v3search-0.nuget.org/query?q=entityframework&skip=0&take=1&prerelease=false&semVerLevel=2.0.0", TestUtility.GetResource("NuGet.Protocol.Tests.compiler.resources.EntityFrameworkSearch.json", GetType())); responses.Add("http://testsource.com/v3/index.json", JsonData.IndexWithoutFlatContainer); var repo = StaticHttpHandler.CreateSource("http://testsource.com/v3/index.json", Repository.Provider.GetCoreV3(), responses); var resource = await repo.GetResourceAsync <PackageSearchResource>(); // Act var packages = await resource.SearchAsync( "entityframework", new SearchFilter(false), skip : 0, take : 1, log : NullLogger.Instance, cancellationToken : CancellationToken.None); var package = packages.SingleOrDefault(); // Assert Assert.NotNull(package); Assert.Equal("Microsoft", package.Authors); Assert.Equal("Entity Framework is Microsoft's recommended data access technology for new applications.", package.Description); Assert.Equal(package.Description, package.Summary); Assert.Equal("EntityFramework", package.Title); Assert.Equal(string.Join(", ", "Microsoft", "EF", "Database", "Data", "O/RM", "ADO.NET"), package.Tags); Assert.True(package.PrefixReserved); }
public NuGetPackageSearchServiceTests(GlobalServiceProvider globalServiceProvider) : base(globalServiceProvider) { _installedPackages = new List <IPackageReferenceContextInfo>(); _transitivePackages = new List <IPackageReferenceContextInfo>(); _projects = new List <IProjectContextInfo> { new ProjectContextInfo( Guid.NewGuid().ToString(), ProjectModel.ProjectStyle.PackageReference, NuGetProjectKind.PackageReference) }; var testFeedUrl = "https://testsource.test/v3/index.json"; var query = "https://api-v2v3search-0.nuget.org/query"; var responses = new Dictionary <string, string> { { testFeedUrl, ProtocolUtility.GetResource("NuGet.PackageManagement.VisualStudio.Test.compiler.resources.index.json", GetType()) }, { query + "?q=nuget&skip=0&take=26&prerelease=true&semVerLevel=2.0.0", ProtocolUtility.GetResource("NuGet.PackageManagement.VisualStudio.Test.compiler.resources.nugetSearchPage1.json", GetType()) }, { query + "?q=nuget&skip=25&take=26&prerelease=true&semVerLevel=2.0.0", ProtocolUtility.GetResource("NuGet.PackageManagement.VisualStudio.Test.compiler.resources.nugetSearchPage2.json", GetType()) }, { query + "?q=&skip=0&take=26&prerelease=true&semVerLevel=2.0.0", ProtocolUtility.GetResource("NuGet.PackageManagement.VisualStudio.Test.compiler.resources.blankSearchPage.json", GetType()) }, { "https://api.nuget.org/v3/registration3-gz-semver2/nuget.core/index.json", ProtocolUtility.GetResource("NuGet.PackageManagement.VisualStudio.Test.compiler.resources.nugetCoreIndex.json", GetType()) }, { "https://api.nuget.org/v3/registration3-gz-semver2/microsoft.extensions.logging.abstractions/index.json", ProtocolUtility.GetResource("NuGet.PackageManagement.VisualStudio.Test.compiler.resources.loggingAbstractions.json", GetType()) } }; _sourceRepository = StaticHttpHandler.CreateSource(testFeedUrl, Repository.Provider.GetCoreV3(), responses); }
public async Task RepositorySignatureResource_RepositorySignatureInfo() { // Arrange var source = $"http://unit.test/{Guid.NewGuid()}/v3-with-flat-container/index.json"; var responses = new Dictionary <string, string>(); responses.Add(source, JsonData.RepoSignIndexJsonData); responses.Add("https://api.nuget.org/v3-index/repository-signatures/index.json", JsonData.RepoSignData); var repo = StaticHttpHandler.CreateSource(source, Repository.Provider.GetCoreV3(), responses); // Act var repositorySignatureResource = await repo.GetResourceAsync <RepositorySignatureResource>(); repositorySignatureResource.UpdateRepositorySignatureInfo(); // Assert RepositorySignatureInfoProvider.Instance.TryGetRepositorySignatureInfo(source, out var repositorySignatureInfo); Assert.False(repositorySignatureInfo.AllRepositorySigned); Assert.NotNull(repositorySignatureInfo.RepositoryCertificateInfos); Assert.Equal(1, repositorySignatureInfo.RepositoryCertificateInfos.Count()); var certInfo = repositorySignatureInfo.RepositoryCertificateInfos.FirstOrDefault(); VerifyCertInfo(certInfo); }
public async Task PackageMetadataResourceV3_GetMetadataAsync() { // Arrange var responses = new Dictionary <string, string>(); responses.Add("http://testsource.com/v3/index.json", JsonData.IndexWithoutFlatContainer); responses.Add("https://api.nuget.org/v3/registration0/deepequal/index.json", JsonData.DeepEqualRegistationIndex); var repo = StaticHttpHandler.CreateSource("http://testsource.com/v3/index.json", Repository.Provider.GetCoreV3(), responses); var resource = await repo.GetResourceAsync <PackageMetadataResource>(); var package = new PackageIdentity("deepequal", NuGetVersion.Parse("0.9.0")); // Act var result = (PackageSearchMetadataRegistration)await resource.GetMetadataAsync(package, Common.NullLogger.Instance, CancellationToken.None); // Assert Assert.Equal("deepequal", result.Identity.Id, StringComparer.OrdinalIgnoreCase); Assert.Equal("0.9.0", result.Identity.Version.ToNormalizedString()); Assert.True(result.Authors.Contains("James Foster")); Assert.Equal("An extensible deep comparison library for .NET", result.Description); Assert.Null(result.IconUrl); Assert.Null(result.LicenseUrl); Assert.Equal("http://github.com/jamesfoster/DeepEqual", result.ProjectUrl.ToString()); Assert.Equal("https://api.nuget.org/v3/catalog0/data/2015.02.03.18.34.51/deepequal.0.9.0.json", result.CatalogUri.ToString()); Assert.Equal(DateTimeOffset.Parse("2013-08-28T09:19:10.013Z"), result.Published); Assert.False(result.RequireLicenseAcceptance); Assert.Equal(result.Description, result.Summary); Assert.Equal(string.Join(", ", "deepequal", "deep", "equal"), result.Tags); Assert.Equal("DeepEqual", result.Title); }
public async Task PackageSearchResourceV2Feed_Search100() { // Arrange var serviceAddress = ProtocolUtility.CreateServiceAddress(); var responses = new Dictionary <string, string>(); responses.Add( serviceAddress + "Search()?$filter=IsLatestVersion&searchTerm='azure'&targetFramework='net40-client'" + "&includePrerelease=false&$skip=0&$top=100&semVerLevel=2.0.0", ProtocolUtility.GetResource("NuGet.Protocol.Tests.compiler.resources.AzureSearch100.xml", GetType())); responses.Add(serviceAddress, string.Empty); var repo = StaticHttpHandler.CreateSource(serviceAddress, Repository.Provider.GetCoreV3(), responses); var packageSearchResource = await repo.GetResourceAsync <PackageSearchResource>(); var searchFilter = new SearchFilter(includePrerelease: false) { SupportedFrameworks = new string[] { "net40-Client" } }; // Act var searchResult = await packageSearchResource.SearchAsync("azure", searchFilter, 0, 100, NullLogger.Instance, CancellationToken.None); // Assert Assert.Equal(100, searchResult.Count()); }
public async Task DependencyInfoResourceV2Feed_GetDependencyInfoByPackageIdentity() { // Arrange var serviceAddress = ProtocolUtility.CreateServiceAddress(); var responses = new Dictionary <string, string>(); responses.Add(serviceAddress + "FindPackagesById()?id='WindowsAzure.Storage'", ProtocolUtility.GetResource("NuGet.Protocol.Tests.compiler.resources.WindowsAzureStorageFindPackagesById.xml", GetType())); responses.Add(serviceAddress + "Packages(Id='WindowsAzure.Storage',Version='4.3.2-preview')", ProtocolUtility.GetResource("NuGet.Protocol.Tests.compiler.resources.WindowsAzureStorageGetPackages.xml", GetType())); responses.Add(serviceAddress, string.Empty); var repo = StaticHttpHandler.CreateSource(serviceAddress, Repository.Provider.GetCoreV3(), responses); var dependencyInfoResource = await repo.GetResourceAsync <DependencyInfoResource>(); var packageIdentity = new PackageIdentity("WindowsAzure.Storage", new NuGetVersion("4.3.2-preview")); // Act var dependencyInfo = await dependencyInfoResource.ResolvePackage(packageIdentity, NuGetFramework.Parse("aspnetcore50"), NullSourceCacheContext.Instance, NullLogger.Instance, CancellationToken.None); // Assert Assert.Equal(43, dependencyInfo.Dependencies.Count()); }
public async Task DependencyInfo_RetrieveExactVersion() { // Arrange var serviceAddress = ProtocolUtility.CreateServiceAddress(); var responses = new Dictionary <string, string>(); responses.Add(serviceAddress + "Packages(Id='xunit',Version='2.1.0-beta1-build2945')", ProtocolUtility.GetResource("NuGet.Protocol.Tests.compiler.resources.Xunit.2.1.0-beta1-build2945GetPackages.xml", GetType())); responses.Add(serviceAddress, string.Empty); var repo = StaticHttpHandler.CreateSource(serviceAddress, Repository.Provider.GetCoreV3(), responses); var dependencyInfoResource = await repo.GetResourceAsync <DependencyInfoResource>(); var package = new PackageIdentity("xunit", NuGetVersion.Parse("2.1.0-beta1-build2945")); var dep1 = new PackageIdentity("xunit.core", NuGetVersion.Parse("2.1.0-beta1-build2945")); var dep2 = new PackageIdentity("xunit.assert", NuGetVersion.Parse("2.1.0-beta1-build2945")); // Act var result = await dependencyInfoResource.ResolvePackage(package, NuGetFramework.Parse("net45"), NullSourceCacheContext.Instance, Common.NullLogger.Instance, CancellationToken.None); // Assert Assert.Equal(package, result, PackageIdentity.Comparer); Assert.Equal(2, result.Dependencies.Count()); Assert.Equal("[2.1.0-beta1-build2945, 2.1.0-beta1-build2945]", result.Dependencies.Single(dep => dep.Id == "xunit.core").VersionRange.ToNormalizedString()); Assert.Equal("[2.1.0-beta1-build2945, 2.1.0-beta1-build2945]", result.Dependencies.Single(dep => dep.Id == "xunit.assert").VersionRange.ToNormalizedString()); }
public async Task DependencyInfoResourceV2Feed_GetDependencyInfoById() { // Arrange var serviceAddress = ProtocolUtility.CreateServiceAddress(); var responses = new Dictionary <string, string>(); responses.Add(serviceAddress + "FindPackagesById()?id='WindowsAzure.Storage'&semVerLevel=2.0.0", ProtocolUtility.GetResource("NuGet.Protocol.Tests.compiler.resources.WindowsAzureStorageFindPackagesById.xml", GetType())); responses.Add(serviceAddress, string.Empty); var repo = StaticHttpHandler.CreateSource(serviceAddress, Repository.Provider.GetCoreV3(), responses); var dependencyInfoResource = await repo.GetResourceAsync <DependencyInfoResource>(); // Act var dependencyInfoList = await dependencyInfoResource.ResolvePackages("WindowsAzure.Storage", NuGetFramework.Parse("aspnetcore50"), NullSourceCacheContext.Instance, NullLogger.Instance, CancellationToken.None); // Assert Assert.Equal(47, dependencyInfoList.Count()); }
public async Task DependencyInfo_RetrieveExactVersion_NotFound() { // Arrange var serviceAddress = ProtocolUtility.CreateServiceAddress(); var responses = new Dictionary <string, string>(); responses.Add(serviceAddress + "Packages(Id='xunit',Version='1.0.0-notfound')", string.Empty); responses.Add(serviceAddress + "FindPackagesById()?id='xunit'&semVerLevel=2.0.0", ProtocolUtility.GetResource("NuGet.Protocol.Tests.compiler.resources.XunitFindPackagesById.xml", GetType())); responses.Add(serviceAddress, string.Empty); var repo = StaticHttpHandler.CreateSource(serviceAddress, Repository.Provider.GetCoreV3(), responses, ProtocolUtility.GetResource("NuGet.Protocol.Tests.compiler.resources.500Error.xml", GetType())); var dependencyInfoResource = await repo.GetResourceAsync <DependencyInfoResource>(); var package = new PackageIdentity("xunit", NuGetVersion.Parse("1.0.0-notfound")); // Act var result = await dependencyInfoResource.ResolvePackage(package, NuGetFramework.Parse("net45"), NullSourceCacheContext.Instance, Common.NullLogger.Instance, CancellationToken.None); // Assert Assert.Null(result); }
public async Task DependencyInfo_RetrieveDependencies() { // Arrange var serviceAddress = ProtocolUtility.CreateServiceAddress(); var responses = new Dictionary <string, string>(); responses.Add(serviceAddress + "FindPackagesById()?id='xunit'&semVerLevel=2.0.0", ProtocolUtility.GetResource("NuGet.Protocol.Tests.compiler.resources.XunitFindPackagesById.xml", GetType())); responses.Add(serviceAddress, string.Empty); var repo = StaticHttpHandler.CreateSource(serviceAddress, Repository.Provider.GetCoreV3(), responses); var dependencyInfoResource = await repo.GetResourceAsync <DependencyInfoResource>(); var package = new PackageIdentity("xunit", NuGetVersion.Parse("2.1.0-beta1-build2945")); // filter to keep this test consistent var filterRange = new VersionRange(NuGetVersion.Parse("2.0.0-rc4-build2924"), true, NuGetVersion.Parse("2.1.0-beta1-build2945"), true); // Act var results = await dependencyInfoResource.ResolvePackages("xunit", NuGetFramework.Parse("net45"), NullSourceCacheContext.Instance, Common.NullLogger.Instance, CancellationToken.None); var filtered = results.Where(result => filterRange.Satisfies(result.Version)); var target = filtered.Single(p => PackageIdentity.Comparer.Equals(p, package)); // Assert Assert.Equal(3, filtered.Count()); Assert.Equal(2, target.Dependencies.Count()); Assert.Equal("[2.1.0-beta1-build2945, 2.1.0-beta1-build2945]", target.Dependencies.Single(dep => dep.Id == "xunit.core").VersionRange.ToNormalizedString()); Assert.Equal("[2.1.0-beta1-build2945, 2.1.0-beta1-build2945]", target.Dependencies.Single(dep => dep.Id == "xunit.assert").VersionRange.ToNormalizedString()); }
public async Task PowershellAutoComplete_VersionStartsWithReturnsExpectedResults(string sourceUrl) { // Arrange var source = StaticHttpHandler.CreateSource(sourceUrl, Repository.Provider.GetVisualStudio(), ResponsesDict); var resource = await source.GetResourceAsync <AutoCompleteResource>(); Assert.NotNull(resource); var logger = new TestLogger(); // Act using (var sourceCacheContext = new SourceCacheContext()) { var versions = await resource.VersionStartsWith( "NuGet.Versioning", "3.", includePrerelease : true, sourceCacheContext : sourceCacheContext, log : logger, token : CancellationToken.None); // Assert Assert.NotNull(versions); Assert.Equal(2, versions.Count()); Assert.Contains(new NuGetVersion("3.5.0-rc1-final"), versions); Assert.Contains(new NuGetVersion("3.5.0"), versions); Assert.NotEqual(0, logger.Messages.Count); } }
public async Task MetadataClient_ResolvePackageListed() { // Arrange var responses = new Dictionary <string, string>(); responses.Add("http://testsource.com/v3/index.json", JsonData.IndexWithoutFlatContainer); responses.Add("https://api.nuget.org/v3/registration0/unlistedpackagea/index.json", JsonData.UnlistedPackageARegistration); responses.Add("https://api.nuget.org/v3/registration0/unlistedpackageb/index.json", JsonData.UnlistedPackageBRegistration); responses.Add("https://api.nuget.org/v3/registration0/unlistedpackagec/index.json", JsonData.UnlistedPackageCRegistration); var repo = StaticHttpHandler.CreateSource("http://testsource.com/v3/index.json", Repository.Provider.GetCoreV3(), responses); var resource = await repo.GetResourceAsync <DependencyInfoResource>(); var package = new PackageIdentity("unlistedpackagec", NuGetVersion.Parse("1.0.0")); var projectFramework = NuGetFramework.Parse("net45"); // Act using (var sourceCacheContext = new SourceCacheContext()) { var result = await resource.ResolvePackage(package, projectFramework, sourceCacheContext, Common.NullLogger.Instance, CancellationToken.None); // Assert Assert.True(result.Listed); } }
public async Task PowerShellSearchResource_WithoutPSMetadata() { Dictionary <string, string> responses = new Dictionary <string, string>(); responses.Add("http://testsource.com/v3/index.json", JsonData.IndexJson); responses.Add("https://api-v3search-0.nuget.org/query?q=test&skip=0&take=10&includePrerelease=false", JsonData.NonPSMetadata); var repo = StaticHttpHandler.CreateSource("http://testsource.com/v3/index.json", Repository.Provider.GetPowerShell(), responses); var resource = await repo.GetResourceAsync <PowerShellSearchResource>(); var results = await resource.Search("test", new SearchFilter(), 0, 10, CancellationToken.None); var package = results.FirstOrDefault(); // verify the identity is used everywhere Assert.Equal("EntityFramework", package.Id); Assert.Equal("6.1.2", package.Version.ToNormalizedString()); Assert.Equal("EntityFramework", package.ServerPackage.Id); Assert.Equal("6.1.2", package.ServerPackage.Version.ToNormalizedString()); Assert.Equal("EntityFramework", package.PowerShellMetadata.Id); Assert.Equal("6.1.2", package.PowerShellMetadata.Version.ToNormalizedString()); Assert.Equal("http://go.microsoft.com/fwlink/?LinkID=386613", package.ServerPackage.IconUrl.AbsoluteUri); // verify the PS metadata is empty Assert.Null(package.PowerShellMetadata.ModuleVersion); }
public async Task MetadataClient_ResolvePackageWithEmptyDependencyGroups() { // Arrange var responses = new Dictionary <string, string>(); responses.Add("http://testsource.com/v3/index.json", JsonData.IndexWithoutFlatContainer); responses.Add("https://api.nuget.org/v3/registration0/deepequal/index.json", JsonData.DeepEqualRegistationIndex); var repo = StaticHttpHandler.CreateSource("http://testsource.com/v3/index.json", Repository.Provider.GetCoreV3(), responses); var resource = await repo.GetResourceAsync <DependencyInfoResource>(); // Act using (var sourceCacheContext = new SourceCacheContext()) { var results = await resource.ResolvePackages("deepequal", NuGetFramework.Parse("net45"), sourceCacheContext, Common.NullLogger.Instance, CancellationToken.None); var target = results.Where(p => p.Version == NuGetVersion.Parse("1.4.0")).Single(); // Assert Assert.Equal(19, results.Count()); Assert.Equal(0, target.Dependencies.Count()); } }
public NuGetPackageSearchServiceTests(GlobalServiceProvider globalServiceProvider) : base(globalServiceProvider) { _installedPackages = new List <IPackageReferenceContextInfo>(); _transitivePackages = new List <ITransitivePackageReferenceContextInfo>(); _projects = new List <IProjectContextInfo> { new ProjectContextInfo( Guid.NewGuid().ToString(), ProjectModel.ProjectStyle.PackageReference, NuGetProjectKind.PackageReference) }; var testFeedUrl = "https://testsource.test/v3/index.json"; var query = "https://api-v2v3search-0.nuget.org/query"; var responses = new Dictionary <string, string> { { testFeedUrl, ProtocolUtility.GetResource("NuGet.PackageManagement.VisualStudio.Test.compiler.resources.index.json", GetType()) }, { query + "?q=nuget&skip=0&take=26&prerelease=true&semVerLevel=2.0.0", ProtocolUtility.GetResource("NuGet.PackageManagement.VisualStudio.Test.compiler.resources.nugetSearchPage1.json", GetType()) }, { query + "?q=nuget&skip=25&take=26&prerelease=true&semVerLevel=2.0.0", ProtocolUtility.GetResource("NuGet.PackageManagement.VisualStudio.Test.compiler.resources.nugetSearchPage2.json", GetType()) }, { query + "?q=&skip=0&take=26&prerelease=true&semVerLevel=2.0.0", ProtocolUtility.GetResource("NuGet.PackageManagement.VisualStudio.Test.compiler.resources.blankSearchPage.json", GetType()) }, { "https://api.nuget.org/v3/registration3-gz-semver2/nuget.core/index.json", ProtocolUtility.GetResource("NuGet.PackageManagement.VisualStudio.Test.compiler.resources.nugetCoreIndex.json", GetType()) }, { "https://api.nuget.org/v3/registration3-gz-semver2/microsoft.extensions.logging.abstractions/index.json", ProtocolUtility.GetResource("NuGet.PackageManagement.VisualStudio.Test.compiler.resources.loggingAbstractions.json", GetType()) } }; _componentModel = new Mock <IComponentModel>(); var expService = new NuGetExperimentationService(new TestEnvironmentVariableReader(new Dictionary <string, string>()), new TestVisualStudioExperimentalService(_experimentationFlags), new Lazy <IOutputConsoleProvider>(() => new TestOutputConsoleProvider())); _componentModel.Setup(x => x.GetService <INuGetExperimentationService>()).Returns(expService); globalServiceProvider.AddService(typeof(SComponentModel), _componentModel.Object); _sourceRepository = StaticHttpHandler.CreateSource(testFeedUrl, Repository.Provider.GetCoreV3(), responses); }
public async Task PowershellAutoComplete_IdStartsWithCancelsAsAppropriate(string sourceUrl) { // Arrange var source = StaticHttpHandler.CreateSource(sourceUrl, Repository.Provider.GetVisualStudio(), ResponsesDict); var resource = await source.GetResourceAsync <AutoCompleteResource>(); Assert.NotNull(resource); var logger = new TestLogger(); // Act CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); Task <IEnumerable <string> > packagesTask = resource.IdStartsWith("elm", true, logger, cancellationTokenSource.Token); cancellationTokenSource.Cancel(); // Assert try { packagesTask.Wait(); } catch (AggregateException e) { Assert.Equal(e.InnerExceptions.Count(), 1); Assert.True(e.InnerExceptions.Any(item => item.GetType().Equals(typeof(TaskCanceledException)))); } Assert.NotEqual(0, logger.Messages.Count); }
public async Task MetadataClient_VerifyLowestDependencyVersionIsReturnedWhenMultipleRangesExist() { // Arrange var responses = new Dictionary <string, string>(); responses.Add("http://testsource.com/v3/index.json", JsonData.Index); responses.Add("https://api.nuget.org/v3/registration0/jquery/index.json", JsonData.JQueryRegistration); responses.Add("https://api.nuget.org/v3/registration0/jquery.validation/index.json", JsonData.JQueryValidationRegistration); var repo = StaticHttpHandler.CreateSource("http://testsource.com/v3/index.json", Repository.Provider.GetCoreV3(), responses); var resource = await repo.GetResourceAsync <DepedencyInfoResource>(); // Act var results = await resource.ResolvePackages("jquery.validation", NuGetFramework.Parse("net45"), true, CancellationToken.None); var target = results.Where(p => p.Id.Equals("jquery.validation", StringComparison.OrdinalIgnoreCase) && p.Version == NuGetVersion.Parse("1.6.0")).Single(); var lowestJQuery = results.Where(p => p.Id.Equals("jQuery", StringComparison.OrdinalIgnoreCase) && p.Version == NuGetVersion.Parse("1.4.1")).FirstOrDefault(); // Assert Assert.Equal(13, results.Where(p => p.Id.Equals("jquery.validation", StringComparison.OrdinalIgnoreCase)).Count()); Assert.Equal("jQuery", target.Dependencies.Single().Id); Assert.Equal("[1.4.1, )", target.Dependencies.Single().VersionRange.ToNormalizedString()); Assert.NotNull(lowestJQuery); }
public async Task GetAllVersionsAsync_NoErrorsOnNoContentAsync() { // Arrange var serviceAddress = ProtocolUtility.CreateServiceAddress(); var responses = new Dictionary <string, string> { { serviceAddress + "FindPackagesById()?id='a'&semVerLevel=2.0.0", "204" } }; var repo = StaticHttpHandler.CreateSource(serviceAddress, Repository.Provider.GetCoreV3(), responses); var logger = new TestLogger(); using (var cacheContext = new SourceCacheContext()) { var resource = await repo.GetResourceAsync <FindPackageByIdResource>(); // Act var versions = await resource.GetAllVersionsAsync( "a", cacheContext, logger, CancellationToken.None); // Assert // Verify no items returned, and no exceptions were thrown above Assert.Equal(0, versions.Count()); } }
public async Task DownloadResourceFromIdentityInvalidId() { // Arrange var serviceAddress = TestUtility.CreateServiceAddress(); var responses = new Dictionary <string, string>(); responses.Add(serviceAddress + "Packages(Id='xunit',Version='1.0.0-notfound')", string.Empty); responses.Add(serviceAddress + "FindPackagesById()?id='xunit'&semVerLevel=2.0.0", TestUtility.GetResource("NuGet.Protocol.Tests.compiler.resources.XunitFindPackagesById.xml", GetType())); responses.Add(serviceAddress, string.Empty); var repo = StaticHttpHandler.CreateSource(serviceAddress, Repository.Provider.GetCoreV3(), responses, TestUtility.GetResource("NuGet.Protocol.Tests.compiler.resources.500Error.xml", GetType())); var downloadResource = await repo.GetResourceAsync <DownloadResource>(); // Act using (var packagesFolder = TestDirectory.Create()) using (var sourceCacheContext = new SourceCacheContext()) { var actual = await downloadResource.GetDownloadResourceResultAsync( new PackageIdentity("xunit", new NuGetVersion("1.0.0-notfound")), new PackageDownloadContext(sourceCacheContext), packagesFolder, NullLogger.Instance, CancellationToken.None); // Assert Assert.NotNull(actual); Assert.Equal(DownloadResourceResultStatus.NotFound, actual.Status); } }
public async Task RemoteV3FindPackageById_GetOriginalIdentity_IdInResponse() { // Arrange var responses = new Dictionary <string, string>(); responses.Add("http://testsource.com/v3/index.json", JsonData.IndexWithoutFlatContainer); responses.Add("https://api.nuget.org/v3/registration0/deepequal/index.json", JsonData.DeepEqualRegistationIndex); var repo = StaticHttpHandler.CreateSource("http://testsource.com/v3/index.json", Repository.Provider.GetCoreV3(), responses); var logger = new TestLogger(); using (var cacheContext = new SourceCacheContext()) { // Act var resource = await repo.GetResourceAsync <FindPackageByIdResource>(); var identity = await resource.GetOriginalIdentityAsync( "DEEPEQUAL", new NuGetVersion("1.4.0.1-RC"), cacheContext, logger, CancellationToken.None); // Assert Assert.IsType <RemoteV3FindPackageByIdResource>(resource); Assert.Equal("DeepEqual", identity.Id); Assert.Equal("1.4.0.1-rc", identity.Version.ToNormalizedString()); } }
public async Task MetaDataResourceIdentityExistInvalidIdentity() { var serviceAddress = ProtocolUtility.CreateServiceAddress(); var responses = new Dictionary <string, string>(); responses.Add(serviceAddress + "Packages(Id='xunit',Version='1.0.0-notfound')", string.Empty); responses.Add( serviceAddress + "FindPackagesById()?id='xunit'&semVerLevel=2.0.0", ProtocolUtility.GetResource("NuGet.Protocol.Tests.compiler.resources.XunitFindPackagesById.xml", GetType())); responses.Add(serviceAddress, string.Empty); var repo = StaticHttpHandler.CreateSource(serviceAddress, Repository.Provider.GetCoreV3(), responses, ProtocolUtility.GetResource("NuGet.Protocol.Tests.compiler.resources.500Error.xml", GetType())); var metadataResource = await repo.GetResourceAsync <MetadataResource>(); var package = new PackageIdentity("xunit", new NuGetVersion("1.0.0-notfound")); // Act var exist = await metadataResource.Exists(package, NullSourceCacheContext.Instance, NullLogger.Instance, CancellationToken.None); // Assert Assert.False(exist); }
public async Task MetaDataResourceGetLatestVersions() { // Arrange var serviceAddress = ProtocolUtility.CreateServiceAddress(); var responses = new Dictionary <string, string>(); responses.Add( serviceAddress + "FindPackagesById()?id='WindowsAzure.Storage'&semVerLevel=2.0.0", ProtocolUtility.GetResource("NuGet.Protocol.Tests.compiler.resources.WindowsAzureStorageFindPackagesById.xml", GetType())); responses.Add( serviceAddress + "FindPackagesById()?id='xunit'&semVerLevel=2.0.0", ProtocolUtility.GetResource("NuGet.Protocol.Tests.compiler.resources.XunitFindPackagesById.xml", GetType())); responses.Add(serviceAddress, string.Empty); var repo = StaticHttpHandler.CreateSource(serviceAddress, Repository.Provider.GetCoreV3(), responses); var metadataResource = await repo.GetResourceAsync <MetadataResource>(); var packageIdList = new List <string>() { "WindowsAzure.Storage", "xunit" }; // Act var versions = (await metadataResource.GetLatestVersions(packageIdList, true, false, NullSourceCacheContext.Instance, NullLogger.Instance, CancellationToken.None)).ToList(); // Assert Assert.Equal("WindowsAzure.Storage", versions[1].Key); Assert.Equal("6.2.2-preview", versions[1].Value.ToNormalizedString()); Assert.Equal("xunit", versions[0].Key); Assert.Equal("2.2.0-beta1-build3239", versions[0].Value.ToNormalizedString()); }
public async Task PackagePrefixReservation_FromOneSource() { var solutionManager = Mock.Of <INuGetSolutionManagerService>(); var uiContext = new Mock <INuGetUIContext>(); uiContext.Setup(x => x.SolutionManagerService) .Returns(solutionManager); uiContext.Setup(x => x.ServiceBroker) .Returns(Mock.Of <IServiceBroker>()); // Arrange var responses = new Dictionary <string, string> { { "https://api-v3search-0.nuget.org/query?q=EntityFramework&skip=0&take=26&prerelease=false&semVerLevel=2.0.0", ProtocolUtility.GetResource("NuGet.PackageManagement.UI.Test.compiler.resources.EntityFrameworkSearch.json", GetType()) }, { "http://testsource.com/v3/index.json", JsonData.IndexWithoutFlatContainer } }; var repo = StaticHttpHandler.CreateSource("http://testsource.com/v3/index.json", Repository.Provider.GetCoreV3(), responses); var repositories = new List <SourceRepository> { repo }; var context = new PackageLoadContext(repositories, isSolution: false, uiContext.Object); var packageFeed = new MultiSourcePackageFeed(repositories, logger: null, telemetryService: null); var loader = new PackageItemLoader(context, packageFeed, "EntityFramework", includePrerelease: false); var loaded = new List <PackageItemListViewModel>(); foreach (var page in Enumerable.Range(0, 5)) { await loader.LoadNextAsync(progress : null, CancellationToken.None); while (loader.State.LoadingStatus == LoadingStatus.Loading) { await Task.Delay(TimeSpan.FromSeconds(1)); await loader.UpdateStateAsync(progress : null, CancellationToken.None); } var items = loader.GetCurrent(); loaded.AddRange(items); if (loader.State.LoadingStatus != LoadingStatus.Ready) { break; } } // Resource only has one item var item = loaded.First(); Assert.True(item.PrefixReserved); }
public async Task Push_WhenPushingToAnHttpSourceAndSymbolSource_WarnsForBoth() { // Arrange using var workingDir = TestDirectory.Create(); var source = "http://www.nuget.org/api/v2/"; var symbolSource = "http://other.smbsrc.net/"; HttpRequestMessage sourceRequest = null; HttpRequestMessage symbolRequest = null; var apiKey = "serverapikey"; var packageInfo = await SimpleTestPackageUtility.CreateFullPackageAsync(workingDir, "test", "1.0.0"); var symbolPackageInfo = await SimpleTestPackageUtility.CreateSymbolPackageAsync(workingDir, "test", "1.0.0"); var responses = new Dictionary <string, Func <HttpRequestMessage, Task <HttpResponseMessage> > > { { source, request => { sourceRequest = request; return(Task.FromResult(new HttpResponseMessage(HttpStatusCode.OK))); } }, { "http://other.smbsrc.net/api/v2/package/", request => { symbolRequest = request; return(Task.FromResult(new HttpResponseMessage(HttpStatusCode.OK))); } }, }; var resource = await StaticHttpHandler.CreateSource(source, Repository.Provider.GetCoreV3(), responses).GetResourceAsync <PackageUpdateResource>(); UserAgent.SetUserAgentString(new UserAgentStringBuilder("test client")); var logger = new TestLogger(); // Act await resource.Push( packagePaths : new[] { packageInfo.FullName }, symbolSource : symbolSource, timeoutInSecond : 5, disableBuffering : false, getApiKey : _ => apiKey, getSymbolApiKey : _ => apiKey, noServiceEndpoint : false, skipDuplicate : false, symbolPackageUpdateResource : null, log : logger); // Assert Assert.NotNull(sourceRequest); Assert.NotNull(symbolRequest); Assert.Equal(2, logger.WarningMessages.Count); Assert.Contains("You are running the 'push' operation with an 'HTTP' source, 'http://www.nuget.org/api/v2/'. Non-HTTPS access will be removed in a future version. Consider migrating to an 'HTTPS' source.", logger.WarningMessages.First()); Assert.Contains("You are running the 'push' operation with an 'HTTP' source, 'http://other.smbsrc.net/api/v2/package/'. Non-HTTPS access will be removed in a future version. Consider migrating to an 'HTTPS' source.", logger.WarningMessages.Last()); }
public async Task GetDependencyInfoAsync_GetsOriginalIdentityAsync() { // Arrange using (var workingDir = TestDirectory.Create()) { var source = "http://unit.test/v3-with-flat-container/index.json"; var package = await SimpleTestPackageUtility.CreateFullPackageAsync(workingDir, "DeepEqual", "1.4.0.1-rc"); var packageBytes = File.ReadAllBytes(package.FullName); var responses = new Dictionary <string, Func <HttpRequestMessage, Task <HttpResponseMessage> > > { { source, _ => Task.FromResult(new HttpResponseMessage(HttpStatusCode.OK) { Content = new TestContent(JsonData.IndexWithFlatContainer) }) }, { "https://api.nuget.org/v3-flatcontainer/deepequal/index.json", _ => Task.FromResult(new HttpResponseMessage(HttpStatusCode.OK) { Content = new TestContent(JsonData.DeepEqualFlatContainerIndex) }) }, { "https://api.nuget.org/v3-flatcontainer/deepequal/1.4.0.1-rc/deepequal.1.4.0.1-rc.nupkg", _ => Task.FromResult(new HttpResponseMessage(HttpStatusCode.OK) { Content = new ByteArrayContent(packageBytes) }) } }; var repo = StaticHttpHandler.CreateSource(source, Repository.Provider.GetCoreV3(), responses); var logger = new TestLogger(); using (var cacheContext = new SourceCacheContext()) { var resource = await repo.GetResourceAsync <FindPackageByIdResource>(); // Act var info = await resource.GetDependencyInfoAsync( "DEEPEQUAL", new NuGetVersion("1.4.0.1-RC"), cacheContext, logger, CancellationToken.None); // Assert Assert.IsType <HttpFileSystemBasedFindPackageByIdResource>(resource); Assert.Equal("DeepEqual", info.PackageIdentity.Id); Assert.Equal("1.4.0.1-rc", info.PackageIdentity.Version.ToNormalizedString()); } } }
public async Task GetDependencyInfoAsync_GetOriginalIdentity_IdNotInResponseAsync() { // Arrange using (var workingDir = TestDirectory.Create()) { var serviceAddress = ProtocolUtility.CreateServiceAddress(); var package = await SimpleTestPackageUtility.CreateFullPackageAsync(workingDir, "WindowsAzure.Storage", "6.2.2-preview"); var packageBytes = File.ReadAllBytes(package.FullName); var responses = new Dictionary <string, Func <HttpRequestMessage, Task <HttpResponseMessage> > > { { serviceAddress, _ => Task.FromResult(new HttpResponseMessage(HttpStatusCode.OK) { Content = new TestContent(string.Empty) }) }, { serviceAddress + "FindPackagesById()?id='WINDOWSAZURE.STORAGE'&semVerLevel=2.0.0", _ => Task.FromResult(new HttpResponseMessage(HttpStatusCode.OK) { Content = new TestContent(ProtocolUtility.GetResource("NuGet.Protocol.Tests.compiler.resources.WindowsAzureStorageFindPackagesById.xml", GetType())) }) }, { "https://www.nuget.org/api/v2/package/WindowsAzure.Storage/6.2.2-preview", _ => Task.FromResult(new HttpResponseMessage(HttpStatusCode.OK) { Content = new ByteArrayContent(packageBytes) }) } }; var repo = StaticHttpHandler.CreateSource(serviceAddress, Repository.Provider.GetCoreV3(), responses); var logger = new TestLogger(); using (var cacheContext = new SourceCacheContext()) { var resource = await repo.GetResourceAsync <FindPackageByIdResource>(); // Act var info = await resource.GetDependencyInfoAsync( "WINDOWSAZURE.STORAGE", new NuGetVersion("6.2.2-PREVIEW"), cacheContext, logger, CancellationToken.None); // Assert Assert.IsType <RemoteV2FindPackageByIdResource>(resource); Assert.Equal("WindowsAzure.Storage", info.PackageIdentity.Id); Assert.Equal("6.2.2-preview", info.PackageIdentity.Version.ToNormalizedString()); } } }