Example #1
0
        public void RemovesWwwSubdomainFromPackageDetailsText(string url, string expected)
        {
            var packageSearchMetadata = new PackageSearchMetadataBuilder.ClonedPackageSearchMetadata()
            {
                Identity          = new PackageIdentity("NuGet.Versioning", NuGetVersion.Parse("4.3.0")),
                PackageDetailsUrl = new Uri(url)
            };

            var packageSearchMetadataContextInfo = PackageSearchMetadataContextInfo.Create(packageSearchMetadata);

            var target = new DetailedPackageMetadata(packageSearchMetadataContextInfo, deprecationMetadata: null, downloadCount: null);

            Assert.Equal(expected, target.PackageDetailsText);
        }
Example #2
0
        public async Task MultipleSourcesPrefixReserved_Works()
        {
            var solutionManager = Mock.Of <INuGetSolutionManagerService>();
            var uiContext       = new Mock <INuGetUIContext>();
            var searchService   = new Mock <INuGetSearchService>(MockBehavior.Strict);

            var packageSearchMetadata = new PackageSearchMetadataBuilder.ClonedPackageSearchMetadata()
            {
                Identity       = new PackageIdentity("NuGet.org", new NuGetVersion("1.0")),
                PrefixReserved = true
            };

            var packageSearchMetadataContextInfo = new List <PackageSearchMetadataContextInfo>()
            {
                PackageSearchMetadataContextInfo.Create(packageSearchMetadata)
            };

            var searchResult = new SearchResultContextInfo(packageSearchMetadataContextInfo, new Dictionary <string, LoadingStatus> {
                { "Completed", LoadingStatus.Ready }
            }, false);

            searchService.Setup(x =>
                                x.SearchAsync(
                                    It.IsAny <IReadOnlyCollection <IProjectContextInfo> >(),
                                    It.IsAny <IReadOnlyCollection <PackageSourceContextInfo> >(),
                                    It.IsAny <IReadOnlyCollection <string> >(),
                                    It.IsAny <string>(),
                                    It.IsAny <SearchFilter>(),
                                    It.IsAny <NuGet.VisualStudio.Internal.Contracts.ItemFilter>(),
                                    It.IsAny <bool>(),
                                    It.IsAny <CancellationToken>()))
            .Returns(new ValueTask <SearchResultContextInfo>(searchResult));

            searchService.Setup(x =>
                                x.RefreshSearchAsync(It.IsAny <CancellationToken>()))
            .Returns(new ValueTask <SearchResultContextInfo>(searchResult));

            uiContext.Setup(x => x.SolutionManagerService)
            .Returns(solutionManager);

            uiContext.Setup(x => x.ServiceBroker)
            .Returns(Mock.Of <IServiceBroker>());

            var source1 = new PackageSourceContextInfo("https://pkgs.dev.azure.com/dnceng/public/_packaging/nuget-build/nuget/v3/index.json", "NuGetBuild");
            var source2 = new PackageSourceContextInfo("https://api.nuget.org/v3/index.json", "NuGet.org");

            var context = new PackageLoadContext(false, uiContext.Object);
            var loader  = await PackageItemLoader.CreateAsync(
                Mock.Of <IServiceBroker>(),
                context,
                new List <PackageSourceContextInfo> {
                source1, source2
            },
                NuGet.VisualStudio.Internal.Contracts.ItemFilter.All,
                searchService.Object,
                TestSearchTerm);

            await loader.LoadNextAsync(null, CancellationToken.None);

            var items = loader.GetCurrent();

            Assert.NotEmpty(items);

            // All items should not have a prefix reserved because the feed is multisource
            foreach (var item in items)
            {
                Assert.False(item.PrefixReserved);
            }
        }
Example #3
0
        public async Task PackageReader_NotNull()
        {
            // Prepare
            var solutionManager = Mock.Of <INuGetSolutionManagerService>();
            var uiContext       = new Mock <INuGetUIContext>();

            uiContext.Setup(x => x.SolutionManagerService)
            .Returns(solutionManager);
            var searchService = new Mock <INuGetSearchService>(MockBehavior.Strict);

            var packageSearchMetadata = new PackageSearchMetadataBuilder.ClonedPackageSearchMetadata()
            {
                Identity       = new PackageIdentity("NuGet.org", new NuGetVersion("1.0")),
                PrefixReserved = true
            };

            var packageSearchMetadataContextInfo = new List <PackageSearchMetadataContextInfo>()
            {
                PackageSearchMetadataContextInfo.Create(packageSearchMetadata)
            };

            var searchResult = new SearchResultContextInfo(packageSearchMetadataContextInfo, new Dictionary <string, LoadingStatus> {
                { "Search", LoadingStatus.Loading }
            }, false);

            searchService.Setup(x =>
                                x.SearchAsync(
                                    It.IsAny <IReadOnlyCollection <IProjectContextInfo> >(),
                                    It.IsAny <IReadOnlyCollection <PackageSourceContextInfo> >(),
                                    It.IsAny <IReadOnlyCollection <string> >(),
                                    It.IsAny <string>(),
                                    It.IsAny <SearchFilter>(),
                                    It.IsAny <NuGet.VisualStudio.Internal.Contracts.ItemFilter>(),
                                    It.IsAny <bool>(),
                                    It.IsAny <CancellationToken>()))
            .Returns(new ValueTask <SearchResultContextInfo>(searchResult));

            uiContext.Setup(x => x.ServiceBroker)
            .Returns(Mock.Of <IServiceBroker>());

            using (var localFeedDir = TestDirectory.Create()) // local feed
            {
                // create test package
                var pkgId = new PackageIdentity("nuget.lpsm.test", new NuGetVersion(0, 0, 1));
                var pkg   = new SimpleTestPackageContext(pkgId.Id, pkgId.Version.ToNormalizedString());
                await SimpleTestPackageUtility.CreatePackagesAsync(localFeedDir.Path, pkg);

                // local test source
                var localUri    = new Uri(localFeedDir.Path, UriKind.Absolute);
                var localSource = new PackageSource(localUri.ToString(), "LocalSource");

                var sourceRepositoryProvider = TestSourceRepositoryUtility.CreateSourceRepositoryProvider(new[] { localSource });
                var repositories             = sourceRepositoryProvider.GetRepositories();

                var context = new PackageLoadContext(isSolution: false, uiContext.Object);

                var packageFeed = new MultiSourcePackageFeed(repositories, logger: null, telemetryService: null);
                var loader      = await PackageItemLoader.CreateAsync(
                    Mock.Of <IServiceBroker>(),
                    context,
                    new List <PackageSourceContextInfo> {
                    PackageSourceContextInfo.Create(localSource)
                },
                    NuGet.VisualStudio.Internal.Contracts.ItemFilter.All,
                    searchService.Object,
                    TestSearchTerm);

                // Act
                await loader.LoadNextAsync(progress : null, CancellationToken.None);

                var results = loader.GetCurrent();

                // Assert
                Assert.Single(results);
                Assert.NotNull(results.First().PackageReader);
            }
        }
Example #4
0
        public async Task PackagePrefixReservation_FromMultiSource()
        {
            var solutionManager    = Mock.Of <INuGetSolutionManagerService>();
            var uiContext          = new Mock <INuGetUIContext>();
            var searchService      = Mock.Of <INuGetSearchService>();
            var packageFileService = Mock.Of <INuGetPackageFileService>();

            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 },
                { "http://othersource.com/v3/index.json", JsonData.IndexWithoutFlatContainer }
            };

            var repo  = StaticHttpHandler.CreateSource("http://testsource.com/v3/index.json", Repository.Provider.GetCoreV3(), responses);
            var repo1 = StaticHttpHandler.CreateSource("http://othersource.com/v3/index.json", Repository.Provider.GetCoreV3(), responses);

            var context = new PackageLoadContext(isSolution: false, uiContext.Object);

            var loader = await PackageItemLoader.CreateAsync(
                Mock.Of <IServiceBroker>(),
                context,
                new List <PackageSourceContextInfo>
            {
                PackageSourceContextInfo.Create(repo.PackageSource),
                PackageSourceContextInfo.Create(repo1.PackageSource)
            },
                NuGet.VisualStudio.Internal.Contracts.ItemFilter.All,
                searchService,
                packageFileService,
                "EntityFramework",
                includePrerelease : false);

            var packageSearchMetadata = new PackageSearchMetadataBuilder.ClonedPackageSearchMetadata()
            {
                Identity       = new PackageIdentity("NuGet.org", new NuGetVersion("1.0")),
                PrefixReserved = true
            };

            var packageSearchMetadataContextInfo = new List <PackageSearchMetadataContextInfo>()
            {
                PackageSearchMetadataContextInfo.Create(packageSearchMetadata)
            };

            var searchResult = new SearchResultContextInfo(
                packageSearchMetadataContextInfo,
                new Dictionary <string, LoadingStatus> {
                { "Completed", LoadingStatus.Ready }
            },
                hasMoreItems: false);

            await loader.UpdateStateAndReportAsync(searchResult, progress : null, CancellationToken.None);

            var items = loader.GetCurrent();

            // Resource only has one item
            var item = items.First();

            // Assert that a multisource always has prefixreserved set to false
            Assert.False(item.PrefixReserved);
        }