示例#1
0
            public TestableCuratedFeedService()
                : base()
            {
                StubCuratedFeed = new CuratedFeed {
                    Key = 0, Name = "aName"
                };
                StubPackageRegistration = new PackageRegistration {
                    Key = 1066, Id = "aPackageId"
                };

                StubCuratedPackage = new CuratedPackage
                {
                    Key                    = 0,
                    CuratedFeedKey         = StubCuratedFeed.Key,
                    CuratedFeed            = StubCuratedFeed,
                    PackageRegistration    = StubPackageRegistration,
                    PackageRegistrationKey = StubPackageRegistration.Key
                };
                StubCuratedFeed.Packages.Add(StubCuratedPackage);

                StubCuratedFeedRepository = new Mock <IEntityRepository <CuratedFeed> >();
                StubCuratedFeedRepository
                .Setup(repo => repo.GetAll())
                .Returns(new CuratedFeed[] { StubCuratedFeed }.AsQueryable());

                StubCuratedPackageRepository = new Mock <IEntityRepository <CuratedPackage> >();
                StubCuratedPackageRepository
                .Setup(repo => repo.GetAll())
                .Returns(new CuratedPackage[] { StubCuratedPackage }.AsQueryable());
            }
            public async Task WillNotIncludeThePackageWhenItDependsOnAPackageThatIsNotIncluded()
            {
                var stubFeed           = new CuratedFeed();
                var stubNuGetPackage   = CreateStubNuGetPackageReader();
                var stubGalleryPackage = CreateStubGalleryPackage();

                stubGalleryPackage.Dependencies.Add(
                    new PackageDependency {
                    Id = "NotACuratedPackage"
                });

                var curator = TestableWebMatrixPackageCurator.Create(stubCuratedFeedService =>
                {
                    stubCuratedFeedService.Setup(stub => stub.GetFeedByName(It.IsAny <string>(), It.IsAny <bool>())).Returns(stubFeed);
                });

                await curator.CurateAsync(stubGalleryPackage, stubNuGetPackage.Object, commitChanges : true);

                curator.StubCuratedFeedService.Verify(
                    stub => stub.CreatedCuratedPackageAsync(
                        It.IsAny <CuratedFeed>(),
                        It.IsAny <PackageRegistration>(),
                        It.IsAny <bool>(),
                        It.IsAny <bool>(),
                        It.IsAny <string>(),
                        It.IsAny <bool>()),
                    Times.Never());
            }
        protected override ODataV2CuratedFeedController CreateController(
            IEntityRepository <Package> packagesRepository,
            IGalleryConfigurationService configurationService,
            ISearchService searchService)
        {
            var curatedFeed = new CuratedFeed {
                Name = _curatedFeedName
            };

            var curatedFeedServiceMock = new Mock <ICuratedFeedService>(MockBehavior.Strict);

            curatedFeedServiceMock.Setup(m => m.GetPackages(_curatedFeedName)).Returns(AllPackages);
            curatedFeedServiceMock.Setup(m => m.GetFeedByName(_curatedFeedName, false)).Returns(curatedFeed);

            var entitiesContextMock = new Mock <IEntitiesContext>(MockBehavior.Strict);
            var curatedFeedDbSet    = GetQueryableMockDbSet(curatedFeed);

            entitiesContextMock.SetupGet(m => m.CuratedFeeds).Returns(curatedFeedDbSet);

            return(new ODataV2CuratedFeedController(
                       entitiesContextMock.Object,
                       configurationService,
                       searchService,
                       curatedFeedServiceMock.Object));
        }
            public void WillNotIncludeThePackageWhenItDependsOnAPackageThatIsExcludedInTheFeed()
            {
                var stubFeed          = new CuratedFeed();
                var dependencyPackage = new CuratedPackage
                {
                    AutomaticallyCurated = false,
                    Included             = false,
                    PackageRegistration  = new PackageRegistration {
                        Id = "ManuallyExcludedPackage"
                    }
                };

                stubFeed.Packages.Add(dependencyPackage);
                var stubNuGetPackage   = CreateStubNuGetPackage().Object;
                var stubGalleryPackage = CreateStubGalleryPackage();

                stubGalleryPackage.Dependencies.Add(
                    new PackageDependency {
                    Id = "ManuallyExcludedPackage"
                });

                bool result = WebMatrixPackageCurator.ShouldCuratePackage(
                    stubFeed,
                    stubGalleryPackage,
                    stubNuGetPackage);

                Assert.False(result);
            }
示例#5
0
        public static async Task <SearchAdaptorResult> SearchCore(
            ISearchService searchService,
            HttpRequestBase request,
            IQueryable <Package> packages,
            string searchTerm,
            string targetFramework,
            bool includePrerelease,
            CuratedFeed curatedFeed)
        {
            SearchFilter searchFilter;

            // We can only use Lucene if:
            //  a) We are looking for the latest version of a package OR the Index contains all versions of each package
            //  b) The sort order is something Lucene can handle
            if (TryReadSearchFilter(searchService.ContainsAllVersions, request.RawUrl, false, out searchFilter))
            {
                searchFilter.SearchTerm         = searchTerm;
                searchFilter.IncludePrerelease  = includePrerelease;
                searchFilter.CuratedFeed        = curatedFeed;
                searchFilter.SupportedFramework = targetFramework;

                var results = await GetResultsFromSearchService(searchService, searchFilter);

                return(new SearchAdaptorResult(true, results));
            }

            if (!includePrerelease)
            {
                packages = packages.Where(p => !p.IsPrerelease);
            }

            return(new SearchAdaptorResult(false, packages.Search(searchTerm)));
        }
            public TestableCuratedFeedService()
            {
                StubCuratedFeed = new CuratedFeed { Key = 0, Name = "aName" };
                StubPackageRegistration = new PackageRegistration { Key = 1066, Id = "aPackageId" };

                StubCuratedPackage = new CuratedPackage
                {
                    Key = 0,
                    CuratedFeedKey = StubCuratedFeed.Key,
                    CuratedFeed = StubCuratedFeed,
                    PackageRegistration = StubPackageRegistration,
                    PackageRegistrationKey = StubPackageRegistration.Key
                };
                StubCuratedFeed.Packages.Add(StubCuratedPackage);

                StubCuratedFeedRepository = new Mock<IEntityRepository<CuratedFeed>>();
                StubCuratedFeedRepository
                    .Setup(repo => repo.GetAll())
                    .Returns(new CuratedFeed[] { StubCuratedFeed }.AsQueryable());

                StubCuratedPackageRepository = new Mock<IEntityRepository<CuratedPackage>>();
                StubCuratedPackageRepository
                    .Setup(repo => repo.GetAll())
                    .Returns(new CuratedPackage[] { StubCuratedPackage }.AsQueryable());
            }
示例#7
0
        public void CompareSearchResultsForAdditions(string targetFramework, CuratedFeed feed)
        {
            // Get the list of packages that are added to the new search results
            List <IPackage> additions = GetChangesInSearchResults(targetFramework, feed).Item2;

            // Assert packages from the additions list are compatible with the project's targetframework
            AssertPackageListOutcome(targetFramework, additions, true);
        }
        public void CompareSearchResultsForReductions(string targetFramework, CuratedFeed feed)
        {
            // Get the list of packages that are missing from the new search results
            List<IPackage> reductions = GetChangesInSearchResults(targetFramework, feed).Item1;

            // Assert packages from the redutions list are not compatible with the project's targetframework 
            AssertPackageListOutcome(targetFramework, reductions, false);
        }
示例#9
0
        public void CompareSearchResultsForVersionUpdates(string targetFramework, CuratedFeed feed)
        {
            // Get the list of packages that have different versions in the new result results
            List <IPackage> versionUpdates = GetChangesInSearchResults(targetFramework, feed).Item3;

            // Assert packages from the versionUpdates list are compatible with the project's targetframework
            AssertPackageListOutcome(targetFramework, versionUpdates, true);
        }
示例#10
0
        public void CompareSearchResultsForReductions(string targetFramework, CuratedFeed feed)
        {
            // Get the list of packages that are missing from the new search results
            List <IPackage> reductions = GetChangesInSearchResults(targetFramework, feed).Item1;

            // Assert packages from the redutions list are not compatible with the project's targetframework
            AssertPackageListOutcome(targetFramework, reductions, false);
        }
示例#11
0
            public TheGetMethod()
            {
                _curatedFeed = new CuratedFeed {
                    Name = _curatedFeedName
                };
                _curatedFeedPackage = new Package
                {
                    PackageRegistration = new PackageRegistration
                    {
                        Id = "NuGet.Core",
                    },
                };
                _mainFeedPackage = new Package
                {
                    PackageRegistration = new PackageRegistration
                    {
                        Id = "NuGet.Versioning",
                    },
                };
                _featureConfiguration = new FeatureConfiguration();
                _appConfig            = new Mock <IAppConfiguration>();

                _config             = new Mock <IGalleryConfigurationService>();
                _searchService      = new Mock <ISearchService>();
                _curatedFeedService = new Mock <ICuratedFeedService>();
                _packages           = new Mock <IEntityRepository <Package> >();
                _telemetryService   = new Mock <ITelemetryService>();

                _config
                .Setup(x => x.Current)
                .Returns(() => _appConfig.Object);
                _config
                .Setup(x => x.Features)
                .Returns(() => _featureConfiguration);
                _config
                .Setup(x => x.GetSiteRoot(It.IsAny <bool>()))
                .Returns(() => _siteRoot);
                _curatedFeedService
                .Setup(x => x.GetFeedByName(_curatedFeedName))
                .Returns(() => _curatedFeed);
                _curatedFeedService
                .Setup(x => x.GetPackages(_curatedFeedName))
                .Returns(() => new[] { _curatedFeedPackage }.AsQueryable());
                _packages
                .Setup(x => x.GetAll())
                .Returns(() => new[] { _mainFeedPackage }.AsQueryable());

                _target = new ODataV2CuratedFeedController(
                    _config.Object,
                    _searchService.Object,
                    _curatedFeedService.Object,
                    _packages.Object,
                    _telemetryService.Object);

                _request = new HttpRequestMessage(HttpMethod.Get, $"{_siteRoot}/api/v2/curated-feed/{_curatedFeedName}/Packages");
                _options = new ODataQueryOptions <V2FeedPackage>(CreateODataQueryContext <V2FeedPackage>(), _request);
                AddRequestToController(_request, _target);
            }
示例#12
0
        public string GetPackageSourceURL(FeedSource source, CuratedFeed type)
        {
            string rootURL    = string.Empty;
            string curatedURL = string.Empty;

            switch (source)
            {
            case FeedSource.Prod:
            {
                rootURL = "https://www.nuget.org/api/v2/";
                break;
            }

            case FeedSource.Int:
            {
                rootURL = "https://int.nugettest.org/api/v2/";
                break;
            }

            default:
                break;
            }

            switch (type)
            {
            case CuratedFeed.None:
            {
                curatedURL = "";
                break;
            }

            case CuratedFeed.Win8Express:
            {
                curatedURL = "curated-feeds/windows8-packages/";
                break;
            }

            case CuratedFeed.WebMatrix:
            {
                curatedURL = "curated-feeds/webmatrix/";
                break;
            }

            case CuratedFeed.DotNet:
            {
                curatedURL = "curated-feeds/microsoftdotnet/";
                break;
            }

            default:
                break;
            }

            return(rootURL + curatedURL);
        }
            public TestableCuratedFeedService()
            {
                StubCuratedFeed = new CuratedFeed { Key = 0, Name = "aName" };
                StubCuratedFeed2 = new CuratedFeed {Key = 1, Name = "AnotherFeed"};
                StubPackageRegistration_ForFeed1 = new PackageRegistration { Key = 1066, Id = "aPackageId" };
                StubPackageRegistration_ForFeed2 = new PackageRegistration { Key = 1067, Id = "aPackageId2" };
                StubPackageRegistration_ForFeed1_NotIncluded = new PackageRegistration { Key = 1068, Id = "aPackageId2" };
                StubPackage = new Package { PackageRegistration = StubPackageRegistration_ForFeed1, PackageRegistrationKey = StubPackageRegistration_ForFeed1.Key, Version = "1.0.0" };
                StubPackage_IncompatibleVersion = new Package { PackageRegistration = StubPackageRegistration_ForFeed1, PackageRegistrationKey = StubPackageRegistration_ForFeed1.Key, Version = "2.0.0" };
                StubPackage_ForFeed1_NotIncluded = new Package { PackageRegistration = StubPackageRegistration_ForFeed1_NotIncluded, PackageRegistrationKey = StubPackageRegistration_ForFeed1_NotIncluded.Key };

                StubCuratedPackageRegistration_ForFeed1 = new CuratedPackage
                {
                    Key = 1, 
                    CuratedFeedKey = StubCuratedFeed.Key, 
                    CuratedFeed = StubCuratedFeed, 
                    PackageRegistration = StubPackageRegistration_ForFeed1,
                    PackageRegistrationKey = StubPackageRegistration_ForFeed1.Key,
                    Included = true
                };
                StubCuratedFeed.Packages.Add(StubCuratedPackageRegistration_ForFeed1);

                StubCuratedPackageRegistration_ForFeed2 = new CuratedPackage
                {
                    Key = 2,
                    CuratedFeedKey = StubCuratedFeed2.Key,
                    CuratedFeed = StubCuratedFeed2,
                    PackageRegistration = StubPackageRegistration_ForFeed2,
                    PackageRegistrationKey = StubPackageRegistration_ForFeed2.Key,
                    Included = true
                };
                StubCuratedFeed2.Packages.Add(StubCuratedPackageRegistration_ForFeed2);

                StubCuratedPackageRegistration_ForFeed1_NotIncluded = new CuratedPackage
                {
                    Key = 3,
                    CuratedFeedKey = StubCuratedFeed.Key,
                    CuratedFeed = StubCuratedFeed,
                    PackageRegistration = StubPackageRegistration_ForFeed1_NotIncluded,
                    PackageRegistrationKey = StubPackageRegistration_ForFeed1_NotIncluded.Key,
                    Included = false
                };
                StubCuratedFeed.Packages.Add(StubCuratedPackageRegistration_ForFeed1_NotIncluded);

                StubCuratedFeedRepository = new Mock<IEntityRepository<CuratedFeed>>();
                StubCuratedFeedRepository
                    .Setup(repo => repo.GetAll())
                    .Returns(new CuratedFeed[] { StubCuratedFeed, StubCuratedFeed2 }.AsQueryable());

                StubCuratedPackageRepository = new Mock<IEntityRepository<CuratedPackage>>();
                StubCuratedPackageRepository
                    .Setup(repo => repo.GetAll())
                    .Returns(new CuratedPackage[] { StubCuratedPackageRegistration_ForFeed1, StubCuratedPackageRegistration_ForFeed2, StubCuratedPackageRegistration_ForFeed1_NotIncluded }.AsQueryable());
            }
            public TestableWebMatrixPackageCurator()
            {
                StubCuratedFeed = new CuratedFeed {
                    Key = 0
                };
                StubCuratedFeedService = new Mock <ICuratedFeedService>();

                StubCuratedFeedService
                .Setup(stub => stub.GetFeedByName(It.IsAny <string>(), It.IsAny <bool>()))
                .Returns(StubCuratedFeed);
            }
示例#15
0
            public TestableWindows8PackageCurator()
            {
                StubCreatedCuratedPackageCmd = new Mock <ICreateCuratedPackageCommand>();
                StubCuratedFeed = new CuratedFeed {
                    Key = 0
                };
                StubCuratedFeedByNameQry = new Mock <ICuratedFeedByNameQuery>();

                StubCuratedFeedByNameQry
                .Setup(stub => stub.Execute(It.IsAny <string>(), It.IsAny <bool>()))
                .Returns(StubCuratedFeed);
            }
示例#16
0
            public void WillNotIncludeThePackageWhenMinClientVersionIsTooHigh()
            {
                var stubFeed           = new CuratedFeed();
                var stubGalleryPackage = CreateStubGalleryPackage();
                var stubNuGetPackage   = CreateStubNuGetPackage(minClientVersion: "3.0.0");

                bool result = WebMatrixPackageCurator.ShouldCuratePackage(
                    stubFeed,
                    stubGalleryPackage,
                    new PackageArchiveReader(stubNuGetPackage));

                Assert.False(result);
            }
            public void WillIncludeThePackageWhenItIsTaggedWithAspNetWebPages()
            {
                var stubFeed           = new CuratedFeed();
                var stubGalleryPackage = CreateStubGalleryPackage();
                var stubNuGetPackage   = CreateStubNuGetPackage();

                bool result = WebMatrixPackageCurator.ShouldCuratePackage(
                    stubFeed,
                    stubGalleryPackage,
                    stubNuGetPackage.Object);

                Assert.True(result);
            }
            public void WillIncludeThePackageWhenItIsTaggedWithAspNetWebPages()
            {
                var stubFeed = new CuratedFeed();
                var stubGalleryPackage = CreateStubGalleryPackage();
                var stubNuGetPackage = CreateStubNuGetPackage();
                stubGalleryPackage.Tags = "aspnetwebpages";

                bool result = WebMatrixPackageCurator.ShouldCuratePackage(
                    stubFeed,
                    stubGalleryPackage,
                    stubNuGetPackage.Object);

                Assert.True(result);
            }
            public void WillNotIncludeThePackageWhenItIsNotTheLatestStable()
            {
                var stubFeed = new CuratedFeed();
                var stubGalleryPackage = CreateStubGalleryPackage();
                stubGalleryPackage.IsLatestStable = false;
                var stubNuGetPackage = CreateStubNuGetPackage();

                bool result = WebMatrixPackageCurator.ShouldCuratePackage(
                    stubFeed,
                    stubGalleryPackage,
                    stubNuGetPackage.Object);

                Assert.False(result);
            }
            public TestableModifyCuratedPackageCommand()
                : base(null)
            {
                StubCuratedFeed = new CuratedFeed {
                    Key = 0, Name = "aName",
                };
                StubCuratedFeedByKeyQry = new Mock <ICuratedFeedByKeyQuery>();
                StubEntitiesContext     = new Mock <IEntitiesContext>();

                StubCuratedFeedByKeyQry
                .Setup(stub => stub.Execute(It.IsAny <int>(), It.IsAny <bool>()))
                .Returns(StubCuratedFeed);

                Entities = StubEntitiesContext.Object;
            }
            public void WillNotIncludeThePackageWhenMinClientVersionIsTooHigh()
            {
                var stubFeed           = new CuratedFeed();
                var stubGalleryPackage = CreateStubGalleryPackage();
                var stubNuGetPackage   = CreateStubNuGetPackage();

                stubNuGetPackage.Setup(n => n.Metadata.MinClientVersion).Returns(new Version(3, 0));

                bool result = WebMatrixPackageCurator.ShouldCuratePackage(
                    stubFeed,
                    stubGalleryPackage,
                    stubNuGetPackage.Object);

                Assert.False(result);
            }
            public void WillNotIncludeThePackageWhenItIsNotTheLatestStable()
            {
                var stubFeed           = new CuratedFeed();
                var stubGalleryPackage = CreateStubGalleryPackage();

                stubGalleryPackage.IsLatestStable = false;
                var stubNuGetPackage = CreateStubNuGetPackage();

                bool result = WebMatrixPackageCurator.ShouldCuratePackage(
                    stubFeed,
                    stubGalleryPackage,
                    stubNuGetPackage.Object);

                Assert.False(result);
            }
示例#23
0
 public List <IPackage> ReturnSearchResults(FeedSource source, CuratedFeed subFeed, string searchTerm, List <string> targetFrameworks, bool allowPrerelease, int count)
 {
     try
     {
         string                packageSource = GetPackageSourceURL(source, subFeed);
         IPackageRepository    repo          = PackageRepositoryFactory.Default.CreateRepository(packageSource);
         IQueryable <IPackage> packages      = repo.Search(searchTerm, targetFrameworks, allowPrerelease);
         var query = packages.OrderBy(p => p.DownloadCount).Take(count);
         return(query.ToList().Take(count).ToList());
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
         return(null);
     }
 }
            public static TestableWebMatrixPackageCurator Create(Action<Mock<ICuratedFeedService>> setupCuratedFeedServiceStub)
            {
                var stubCuratedFeed = new CuratedFeed { Key = 0 };
                var stubCuratedFeedService = new Mock<ICuratedFeedService>();

                stubCuratedFeedService
                    .Setup(stub => stub.GetFeedByName(It.IsAny<string>(), It.IsAny<bool>()))
                    .Returns(stubCuratedFeed);

                if (setupCuratedFeedServiceStub != null)
                {
                    setupCuratedFeedServiceStub(stubCuratedFeedService);
                }

                return new TestableWebMatrixPackageCurator(stubCuratedFeed, stubCuratedFeedService);
            }
示例#25
0
            public void WillIncludeThePackageWhenThereIsNotPowerShellOrT4File()
            {
                var stubFeed           = new CuratedFeed();
                var stubGalleryPackage = CreateStubGalleryPackage();
                var stubNuGetPackage   = CreateStubNuGetPackage(populatePackage: p =>
                {
                    p.CreateEntry("foo.txt", CompressionLevel.Fastest);
                    p.CreateEntry("foo.cs", CompressionLevel.Fastest);
                });

                bool result = WebMatrixPackageCurator.ShouldCuratePackage(
                    stubFeed,
                    stubGalleryPackage,
                    new PackageArchiveReader(stubNuGetPackage));

                Assert.True(result);
            }
            public void WillNotIncludeThePackageWhenItDependsOnAPackageThatIsNotIncluded()
            {
                var stubFeed           = new CuratedFeed();
                var stubNuGetPackage   = CreateStubNuGetPackage().Object;
                var stubGalleryPackage = CreateStubGalleryPackage();

                stubGalleryPackage.Dependencies.Add(
                    new PackageDependency {
                    Id = "NotACuratedPackage"
                });

                bool result = WebMatrixPackageCurator.ShouldCuratePackage(
                    stubFeed,
                    stubGalleryPackage,
                    stubNuGetPackage);

                Assert.False(result);
            }
示例#27
0
            public void WillNotIncludeThePackageWhenNotTaggedAndThereIsT4Template()
            {
                var stubFeed           = new CuratedFeed();
                var stubGalleryPackage = CreateStubGalleryPackage();
                var stubNuGetPackage   = CreateStubNuGetPackage(populatePackage: p =>
                {
                    p.CreateEntry("foo.txt", CompressionLevel.Fastest);
                    p.CreateEntry("foo.t4", CompressionLevel.Fastest);
                    p.CreateEntry("foo.cs", CompressionLevel.Fastest);
                });

                bool result = WebMatrixPackageCurator.ShouldCuratePackage(
                    stubFeed,
                    stubGalleryPackage,
                    new PackageArchiveReader(stubNuGetPackage));

                Assert.False(result);
            }
示例#28
0
        public static TestableWindows8PackageCurator Create(Action <Mock <ICuratedFeedService> > setupCuratedFeedServiceStub)
        {
            var stubCuratedFeed = new CuratedFeed {
                Key = 0
            };
            var stubCuratedFeedService = new Mock <ICuratedFeedService>();

            stubCuratedFeedService
            .Setup(stub => stub.GetFeedByName(It.IsAny <string>(), It.IsAny <bool>()))
            .Returns(stubCuratedFeed);

            if (setupCuratedFeedServiceStub != null)
            {
                setupCuratedFeedServiceStub(stubCuratedFeedService);
            }

            return(new TestableWindows8PackageCurator(stubCuratedFeed, stubCuratedFeedService));
        }
示例#29
0
            public void WillNotIncludeThePackageWhenPackageDoesNotSupportNet40()
            {
                var stubFeed           = new CuratedFeed();
                var stubGalleryPackage = CreateStubGalleryPackage();
                var stubNuGetPackage   = CreateStubNuGetPackageReader();

                stubGalleryPackage.Tags = "aspnetwebpages";
                stubGalleryPackage.SupportedFrameworks.Add(new PackageFramework()
                {
                    TargetFramework = "net45"
                });

                bool result = WebMatrixPackageCurator.ShouldCuratePackage(
                    stubFeed,
                    stubGalleryPackage,
                    stubNuGetPackage.Object);

                Assert.False(result);
            }
        protected override ODataV2CuratedFeedController CreateController(
            IEntityRepository <Package> packagesRepository,
            IGalleryConfigurationService configurationService,
            ISearchService searchService)
        {
            var curatedFeed = new CuratedFeed {
                Name = _curatedFeedName
            };

            var curatedFeedServiceMock = new Mock <ICuratedFeedService>(MockBehavior.Strict);

            curatedFeedServiceMock.Setup(m => m.GetPackages(_curatedFeedName)).Returns(AllPackages);
            curatedFeedServiceMock.Setup(m => m.GetFeedByName(_curatedFeedName)).Returns(curatedFeed);

            return(new ODataV2CuratedFeedController(
                       configurationService,
                       searchService,
                       curatedFeedServiceMock.Object,
                       packagesRepository));
        }
            public void WillIncludeThePackageWhenThereIsNotPowerShellOrT4File()
            {
                var stubFeed           = new CuratedFeed();
                var stubGalleryPackage = CreateStubGalleryPackage();
                var stubNuGetPackage   = CreateStubNuGetPackage();

                stubNuGetPackage.Setup(stub => stub.GetFiles()).Returns(
                    new[]
                {
                    "foo.txt",
                    "foo.cs",
                });

                bool result = WebMatrixPackageCurator.ShouldCuratePackage(
                    stubFeed,
                    stubGalleryPackage,
                    stubNuGetPackage.Object);

                Assert.True(result);
            }
            public void WillNotIncludeThePackageWhenNotTaggedAndThereIsT4Template()
            {
                var stubFeed           = new CuratedFeed();
                var stubGalleryPackage = CreateStubGalleryPackage();
                var stubNuGetPackage   = CreateStubNuGetPackage();

                stubNuGetPackage.Setup(stub => stub.GetFiles()).Returns(
                    new[]
                {
                    "foo.txt",
                    "foo.t4",
                    "foo.cs",
                });

                bool result = WebMatrixPackageCurator.ShouldCuratePackage(
                    stubFeed,
                    stubGalleryPackage,
                    stubNuGetPackage.Object);

                Assert.False(result);
            }
示例#33
0
        public static async Task <SearchAdaptorResult> FindByIdAndVersionCore(
            ISearchService searchService,
            HttpRequestBase request,
            IQueryable <Package> packages,
            string id,
            string version,
            CuratedFeed curatedFeed,
            string semVerLevel)
        {
            SearchFilter searchFilter;

            // We can only use Lucene if:
            //  a) The Index contains all versions of each package
            //  b) The sort order is something Lucene can handle
            if (TryReadSearchFilter(searchService.ContainsAllVersions, UrlExtensions.MakeSecure(request.RawUrl), searchService.ContainsAllVersions, out searchFilter) && !string.IsNullOrWhiteSpace(id))
            {
                var normalizedRegistrationId = id.Normalize(NormalizationForm.FormC);

                var searchTerm = string.Format(CultureInfo.CurrentCulture, "Id:\"{0}\"", normalizedRegistrationId);
                if (!string.IsNullOrEmpty(version))
                {
                    searchTerm = string.Format(CultureInfo.CurrentCulture, "Id:\"{0}\" AND Version:\"{1}\"", normalizedRegistrationId, version);

                    searchFilter.Take = 1; // only one result is needed in this case
                }

                searchFilter.SearchTerm         = searchTerm;
                searchFilter.SemVerLevel        = semVerLevel;
                searchFilter.IncludePrerelease  = true;
                searchFilter.CuratedFeed        = curatedFeed;
                searchFilter.SupportedFramework = null;
                searchFilter.IncludeAllVersions = true;

                var results = await GetRawResultsFromSearchService(searchService, searchFilter);

                return(new SearchAdaptorResult(true, results));
            }

            return(new SearchAdaptorResult(false, packages));
        }
            public TestableRequiredDependencyPackageCurator()
            {
                StubCuratedFeed = new CuratedFeed
                {
                    Key  = 0,
                    Name = RequiredDependencyPackageId + "_v3.0"
                };

                FakeEntitiesContext = new FakeEntitiesContext();
                FakeEntitiesContext.CuratedFeeds.Add(StubCuratedFeed);

                StubCuratedFeedService = new Mock <ICuratedFeedService>();
                StubCuratedFeedService
                .Setup(stub => stub.GetFeedByName(It.IsAny <string>(), It.IsAny <bool>()))
                .Returns(StubCuratedFeed);

                var packageRegistration = new PackageRegistration
                {
                    Key = 23,
                    Id  = PackageDependencyPackageId,
                };
                var package = new Package
                {
                    Key = 14,
                    PackageRegistrationKey = packageRegistration.Key,
                    PackageRegistration    = packageRegistration,
                    Version = "3.0.0"
                };

                packageRegistration.Packages.Add(package);

                StubPackageRegistrationRepository = new Mock <IEntityRepository <PackageRegistration> >();
                StubPackageRegistrationRepository
                .Setup(stub => stub.GetAll())
                .Returns(new[] { packageRegistration }.AsQueryable());
            }
 public TestableWebMatrixPackageCurator(CuratedFeed stubCuratedFeed, Mock<ICuratedFeedService> stubCuratedFeedService)
     : base(stubCuratedFeedService.Object)
 {
     StubCuratedFeed = stubCuratedFeed;
     StubCuratedFeedService = stubCuratedFeedService;
 }
            public void WillNotIncludeThePackageWhenPackageDoesNotSupportNet40()
            {
                var stubFeed = new CuratedFeed();
                var stubGalleryPackage = CreateStubGalleryPackage();
                var stubNuGetPackage = CreateStubNuGetPackage();
                stubGalleryPackage.Tags = "aspnetwebpages";
                stubGalleryPackage.SupportedFrameworks.Add(new PackageFramework()
                {
                    TargetFramework = "net45"
                });

                bool result = WebMatrixPackageCurator.ShouldCuratePackage(
                    stubFeed,
                    stubGalleryPackage,
                    stubNuGetPackage.Object);

                Assert.False(result);
            }
            public void WillNotIncludeThePackageWhenMinClientVersionIsTooHigh()
            {
                var stubFeed = new CuratedFeed();
                var stubGalleryPackage = CreateStubGalleryPackage();
                var stubNuGetPackage = CreateStubNuGetPackage();
                stubNuGetPackage.Setup(n => n.Metadata.MinClientVersion).Returns(new Version(3, 0));
                
                bool result = WebMatrixPackageCurator.ShouldCuratePackage(
                    stubFeed,
                    stubGalleryPackage,
                    stubNuGetPackage.Object);

                Assert.False(result);
            }
            public void WillIncludeThePackageWhenThereIsNotPowerShellOrT4File()
            {
                var stubFeed = new CuratedFeed();
                var stubGalleryPackage = CreateStubGalleryPackage();
                var stubNuGetPackage = CreateStubNuGetPackage();
                stubNuGetPackage.Setup(stub => stub.GetFiles()).Returns(
                    new[]
                        {
                            "foo.txt",
                            "foo.cs",
                        });

                bool result = WebMatrixPackageCurator.ShouldCuratePackage(
                    stubFeed,
                    stubGalleryPackage,
                    stubNuGetPackage.Object);

                Assert.True(result);
            }
            public void WillNotIncludeThePackageWhenItDependsOnAPackageThatIsExcludedInTheFeed()
            {
                var stubFeed = new CuratedFeed();
                var dependencyPackage = new CuratedPackage
                {
                    AutomaticallyCurated = false, 
                    Included = false, 
                    PackageRegistration = new PackageRegistration { Id = "ManuallyExcludedPackage" }
                };
                stubFeed.Packages.Add(dependencyPackage);
                var stubNuGetPackage = CreateStubNuGetPackage().Object;
                var stubGalleryPackage = CreateStubGalleryPackage();
                stubGalleryPackage.Dependencies.Add(
                    new PackageDependency { Id = "ManuallyExcludedPackage" });

                bool result = WebMatrixPackageCurator.ShouldCuratePackage(
                    stubFeed,
                    stubGalleryPackage,
                    stubNuGetPackage);

                Assert.False(result);
            }
            public void WillNotIncludeThePackageWhenItDependsOnAPackageThatIsNotIncluded()
            {
                var stubFeed = new CuratedFeed();
                var stubNuGetPackage = CreateStubNuGetPackage().Object;
                var stubGalleryPackage = CreateStubGalleryPackage();
                stubGalleryPackage.Dependencies.Add(
                    new PackageDependency { Id = "NotACuratedPackage" });

                bool result = WebMatrixPackageCurator.ShouldCuratePackage(
                    stubFeed,
                    stubGalleryPackage,
                    stubNuGetPackage);

                Assert.False(result);
            }
            public void WillIncludeThePackageWhenThereIsNotPowerShellOrT4File()
            {
                var stubFeed = new CuratedFeed();
                var stubGalleryPackage = CreateStubGalleryPackage();
                var stubNuGetPackage = CreateStubNuGetPackage(populatePackage: p =>
                {
                    p.CreateEntry("foo.txt", CompressionLevel.Fastest);
                    p.CreateEntry("foo.cs", CompressionLevel.Fastest);
                });

                bool result = WebMatrixPackageCurator.ShouldCuratePackage(
                    stubFeed,
                    stubGalleryPackage,
                    new PackageArchiveReader(stubNuGetPackage));

                Assert.True(result);
            }
            public void WillNotIncludeThePackageWhenNotTaggedAndThereIsT4Template()
            {
                var stubFeed = new CuratedFeed();
                var stubGalleryPackage = CreateStubGalleryPackage();
                var stubNuGetPackage = CreateStubNuGetPackage();
                stubNuGetPackage.Setup(stub => stub.GetFiles()).Returns(
                    new[]
                        {
                            "foo.txt",
                            "foo.t4",
                            "foo.cs",
                        });

                bool result = WebMatrixPackageCurator.ShouldCuratePackage(
                    stubFeed,
                    stubGalleryPackage,
                    stubNuGetPackage.Object);

                Assert.False(result);
            }
 public List<IPackage> ReturnSearchResults(FeedSource source, CuratedFeed subFeed, string searchTerm, List<string> targetFrameworks, bool allowPrerelease, int count)
 {
     try
     {
         string packageSource = GetPackageSourceURL(source, subFeed);
         IPackageRepository repo = PackageRepositoryFactory.Default.CreateRepository(packageSource);
         IQueryable<IPackage> packages = repo.Search(searchTerm, targetFrameworks, allowPrerelease);
         var query = packages.OrderBy(p => p.DownloadCount).Take(count);
         return query.ToList().Take(count).ToList();
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
         return null;
     }
 }
        public string GetPackageSourceURL(FeedSource source, CuratedFeed type)
        {
            string rootURL = string.Empty;
            string curatedURL = string.Empty;
            switch (source)
            {
                case FeedSource.Prod:
                    {
                        rootURL = "https://www.nuget.org/api/v2/";
                        break;
                    }
                case FeedSource.Int:
                    {
                        rootURL = "https://int.nugettest.org/api/v2/";
                        break;
                    }
                default:
                    break;
            }

            switch (type)
            {
                case CuratedFeed.None:
                    {
                        curatedURL = "";
                        break;
                    }
                case CuratedFeed.Win8Express:
                    {
                        curatedURL = "curated-feeds/windows8-packages/";
                        break;
                    }
                case CuratedFeed.WebMatrix:
                    {
                        curatedURL = "curated-feeds/webmatrix/";
                        break;
                    }
                case CuratedFeed.DotNet:
                    {
                        curatedURL = "curated-feeds/microsoftdotnet/";
                        break;
                    }
                default:
                    break;
            }

            return rootURL + curatedURL;
        }
示例#45
0
        public static async Task<SearchAdaptorResult> FindByIdAndVersionCore(
                   ISearchService searchService,
                   HttpRequestBase request,
                   IQueryable<Package> packages,
                   string id,
                   string version,
                   CuratedFeed curatedFeed)
        {
            SearchFilter searchFilter;
            // We can only use Lucene if:
            //  a) The Index contains all versions of each package
            //  b) The sort order is something Lucene can handle
            if (TryReadSearchFilter(searchService.ContainsAllVersions, request.RawUrl, searchService.ContainsAllVersions, out searchFilter))
            {
                var searchTerm = string.Format(CultureInfo.CurrentCulture, "Id:\"{0}\"", id);
                if (!string.IsNullOrEmpty(version))
                {
                    searchTerm = string.Format(CultureInfo.CurrentCulture, "Id:\"{0}\" AND Version:\"{1}\"", id, version);

                    searchFilter.Take = 1; // only one result is needed in this case
                }

                searchFilter.SearchTerm = searchTerm;
                searchFilter.IncludePrerelease = true;
                searchFilter.CuratedFeed = curatedFeed;
                searchFilter.SupportedFramework = null;
                searchFilter.IncludeAllVersions = true;

                var results = await GetRawResultsFromSearchService(searchService, searchFilter);

                return new SearchAdaptorResult(true, results);
            }

            return new SearchAdaptorResult(false, packages);
        }
示例#46
0
        private Tuple <List <IPackage>, List <IPackage>, List <IPackage> > GetChangesInSearchResults(string targetFramework, CuratedFeed feed)
        {
            List <string> frameworks = new List <string>();

            frameworks.Add(targetFramework);
            // Get prod search results
            List <IPackage> prodResults = ReturnSearchResults(FeedSource.Prod, feed, "", frameworks, false, Count);
            // Get Int search results
            List <IPackage> intResults = ReturnSearchResults(FeedSource.Int, feed, "", frameworks, false, Count);

            List <IPackage> reductions     = new List <IPackage>();
            List <IPackage> additions      = new List <IPackage>();
            List <IPackage> versionUpdates = new List <IPackage>();

            for (int i = 0; i < prodResults.Count(); i++)
            {
                IPackage package = intResults.Where(p => p.Id == prodResults[i].Id).FirstOrDefault();
                if (package == null)
                {
                    reductions.Add(prodResults[i]);
                }
            }

            for (int i = 0; i < intResults.Count(); i++)
            {
                IPackage package = prodResults.Where(p => p.Id == intResults[i].Id).FirstOrDefault();
                if (package == null)
                {
                    additions.Add(intResults[i]);
                }
            }

            for (int i = 0; i < prodResults.Count(); i++)
            {
                IPackage packageA = prodResults[i];
                IPackage packageB = intResults.Where(p => p.Id == packageA.Id).FirstOrDefault();
                if (packageB != null && packageA.Version != packageB.Version)
                {
                    versionUpdates.Add(packageB);
                }
            }

            var resultTuple = new Tuple <List <IPackage>, List <IPackage>, List <IPackage> >(reductions, additions, versionUpdates);

            return(resultTuple);
        }
示例#47
0
        public static async Task<SearchAdaptorResult> SearchCore(
            ISearchService searchService,
            HttpRequestBase request,
            IQueryable<Package> packages, 
            string searchTerm, 
            string targetFramework, 
            bool includePrerelease,
            CuratedFeed curatedFeed)
        {
            SearchFilter searchFilter;
            // We can only use Lucene if:
            //  a) We are looking for the latest version of a package OR the Index contains all versions of each package
            //  b) The sort order is something Lucene can handle
            if (TryReadSearchFilter(searchService.ContainsAllVersions, request.RawUrl, false, out searchFilter))
            {
                searchFilter.SearchTerm = searchTerm;
                searchFilter.IncludePrerelease = includePrerelease;
                searchFilter.CuratedFeed = curatedFeed;
                searchFilter.SupportedFramework = targetFramework;

                var results = await GetResultsFromSearchService(searchService, searchFilter);

                return new SearchAdaptorResult(true, results);
            }

            if (!includePrerelease)
            {
                packages = packages.Where(p => !p.IsPrerelease);
            }
    
            return new SearchAdaptorResult(false, packages.Search(searchTerm));
        }
            public void WillNotIncludeThePackageWhenNotTaggedAndThereIsT4Template()
            {
                var stubFeed = new CuratedFeed();
                var stubGalleryPackage = CreateStubGalleryPackage();
                var stubNuGetPackage = CreateStubNuGetPackage(populatePackage: p =>
                {
                    p.CreateEntry("foo.txt", CompressionLevel.Fastest);
                    p.CreateEntry("foo.t4", CompressionLevel.Fastest);
                    p.CreateEntry("foo.cs", CompressionLevel.Fastest);
                });

                bool result = WebMatrixPackageCurator.ShouldCuratePackage(
                    stubFeed,
                    stubGalleryPackage,
                    new PackageArchiveReader(stubNuGetPackage));

                Assert.False(result);
            }
        private Tuple<List<IPackage>, List<IPackage>, List<IPackage>> GetChangesInSearchResults(string targetFramework, CuratedFeed feed)
        {
            List<string> frameworks = new List<string>();
            frameworks.Add(targetFramework);
            // Get prod search results
            List<IPackage> prodResults = ReturnSearchResults(FeedSource.Prod, feed, "", frameworks, false, Count);
            // Get Int search results
            List<IPackage> intResults = ReturnSearchResults(FeedSource.Int, feed, "", frameworks, false, Count);

            List<IPackage> reductions = new List<IPackage>();
            List<IPackage> additions = new List<IPackage>();
            List<IPackage> versionUpdates = new List<IPackage>();

            for (int i = 0; i < prodResults.Count(); i++)
            {
                IPackage package = intResults.Where(p => p.Id == prodResults[i].Id).FirstOrDefault();
                if (package == null)
                {
                    reductions.Add(prodResults[i]);
                }
            }

            for (int i = 0; i < intResults.Count(); i++)
            {
                IPackage package = prodResults.Where(p => p.Id == intResults[i].Id).FirstOrDefault();
                if (package == null)
                {
                    additions.Add(intResults[i]);
                }
            }

            for (int i = 0; i < prodResults.Count(); i++)
            {
                IPackage packageA = prodResults[i];
                IPackage packageB = intResults.Where(p => p.Id == packageA.Id).FirstOrDefault();
                if (packageB != null && packageA.Version != packageB.Version)
                {
                    versionUpdates.Add(packageB);
                }
            }

            var resultTuple = new Tuple<List<IPackage>, List<IPackage>, List<IPackage>>(reductions, additions, versionUpdates);
            return resultTuple;
        }
        public void CompareSearchResultsForVersionUpdates(string targetFramework, CuratedFeed feed)
        {
            // Get the list of packages that have different versions in the new result results
            List<IPackage> versionUpdates = GetChangesInSearchResults(targetFramework, feed).Item3;

            // Assert packages from the versionUpdates list are compatible with the project's targetframework 
            AssertPackageListOutcome(targetFramework, versionUpdates, true);
        }
            public void WillNotIncludeThePackageWhenMinClientVersionIsTooHigh()
            {
                var stubFeed = new CuratedFeed();
                var stubGalleryPackage = CreateStubGalleryPackage();
                var stubNuGetPackage = CreateStubNuGetPackage(minClientVersion: "3.0.0");

                bool result = WebMatrixPackageCurator.ShouldCuratePackage(
                    stubFeed,
                    stubGalleryPackage,
                    new PackageArchiveReader(stubNuGetPackage));

                Assert.False(result);
            }
示例#52
0
 public TestableWindows8PackageCurator(CuratedFeed stubCuratedFeed, Mock <ICuratedFeedService> stubCuratedFeedService)
     : base(stubCuratedFeedService.Object)
 {
     StubCuratedFeed        = stubCuratedFeed;
     StubCuratedFeedService = stubCuratedFeedService;
 }
        public void CompareSearchResultsForAdditions(string targetFramework, CuratedFeed feed)
        {
            // Get the list of packages that are added to the new search results
            List<IPackage> additions = GetChangesInSearchResults(targetFramework, feed).Item2;

            // Assert packages from the additions list are compatible with the project's targetframework 
            AssertPackageListOutcome(targetFramework, additions, true);
        }