Example #1
0
            protected ValidationContext CreateValidationContext(string packageResource = null)
            {
                // Add the package
                if (packageResource != null)
                {
                    var resourceStream = File.OpenRead(packageResource);

                    _mockServer.SetAction(
                        $"/packages/testpackage/1.0.0/testpackage.1.0.0.nupkg",
                        request => Task.FromResult(new HttpResponseMessage(HttpStatusCode.OK)
                    {
                        Content = new StreamContent(resourceStream)
                    }));
                }

                var httpClient = new CollectorHttpClient(_mockServer);

                // Mock V2 feed response for the package's Created/LastEdited timestamps. These timestamps must match
                // the mocked catalog entry's timestamps.
                var timestamp = PackageTimestampMetadata.CreateForPackageExistingOnFeed(created: PackageCreationTime, lastEdited: PackageCreationTime);
                var timestampMetadataResource = new Mock <IPackageTimestampMetadataResource>();

                timestampMetadataResource.Setup(t => t.GetAsync(It.IsAny <ValidationContext>()))
                .ReturnsAsync(timestamp);

                return(ValidationContextStub.Create(
                           PackageIdentity,
                           _catalogEntries,
                           client: httpClient,
                           timestampMetadataResource: timestampMetadataResource.Object));
            }
Example #2
0
        static TestableValidator()
        {
            var sourceRepository = new Mock <SourceRepository>();
            var metadataResource = new Mock <IPackageTimestampMetadataResource>();

            metadataResource.Setup(x => x.GetAsync(It.IsAny <ValidationContext>()))
            .ReturnsAsync(PackageTimestampMetadata.CreateForPackageExistingOnFeed(DateTime.Now, DateTime.Now));

            sourceRepository.Setup(x => x.GetResource <IPackageTimestampMetadataResource>())
            .Returns(metadataResource.Object);

            var feedToSource = new Mock <IDictionary <FeedType, SourceRepository> >();

            feedToSource.Setup(x => x[It.IsAny <FeedType>()]).Returns(sourceRepository.Object);

            _feedToSource           = feedToSource.Object;
            _validatorConfiguration = new ValidatorConfiguration(packageBaseAddress: "a", requirePackageSignature: true);
            _logger = Mock.Of <ILogger <Validator> >();
        }
            public FactsBase()
            {
                var feedToSource      = new Mock <IDictionary <FeedType, SourceRepository> >();
                var timestampResource = new Mock <IPackageTimestampMetadataResource>();
                var logger            = Mock.Of <ILogger <PackageIsRepositorySignedValidator> >();

                _source     = new Mock <SourceRepository>();
                _mockServer = new MockServerHttpClientHandler();

                feedToSource.Setup(x => x[It.IsAny <FeedType>()]).Returns(_source.Object);

                // Mock a catalog entry and leaf for the package we are validating.
                _catalogEntries = new[]
                {
                    new CatalogIndexEntry(
                        new Uri("https://localhost/catalog/leaf.json"),
                        string.Empty,
                        string.Empty,
                        DateTime.UtcNow,
                        PackageId,
                        PackageNuGetVersion)
                };

                AddCatalogLeafToMockServer("/catalog/leaf.json", new CatalogLeaf
                {
                    Created    = PackageCreationTime,
                    LastEdited = PackageCreationTime,
                });

                // Mock V2 feed response for the package's Created/LastEdited timestamps. These timestamps must match
                // the mocked catalog entry's timestamps.
                var timestamp = PackageTimestampMetadata.CreateForPackageExistingOnFeed(created: PackageCreationTime, lastEdited: PackageCreationTime);

                timestampResource.Setup(t => t.GetAsync(It.IsAny <ValidationContext>())).ReturnsAsync(timestamp);
                _source.Setup(s => s.GetResource <IPackageTimestampMetadataResource>()).Returns(timestampResource.Object);

                // Add the package base address resource
                var resource = new PackageBaseAddressResource("https://localhost/packages/");

                _source.Setup(s => s.GetResource <PackageBaseAddressResource>()).Returns(resource);

                _target = new PackageIsRepositorySignedValidator(feedToSource.Object, logger);
            }
        public void Last_PicksLatest(bool exists, DateTime?created, DateTime?lastEdited, DateTime?deleted)
        {
            // Act
            PackageTimestampMetadata package;

            if (exists)
            {
                package = PackageTimestampMetadata.CreateForPackageExistingOnFeed(created.Value, lastEdited.Value);
            }
            else
            {
                package = PackageTimestampMetadata.CreateForPackageMissingFromFeed(deleted);
            }

            // Assert
            Assert.True(created == null || package.Last >= created);
            Assert.True(lastEdited == null || package.Last >= lastEdited);
            Assert.True(deleted == null || package.Last >= deleted);
        }
        private static ValidationContext CreateContext(CollectorHttpClient client, DateTime commitTimeStamp)
        {
            var catalogEntries = new[]
            {
                new CatalogIndexEntry(
                    _packageDetailsUri,
                    CatalogConstants.NuGetPackageDetails,
                    Guid.NewGuid().ToString(),
                    commitTimeStamp,
                    _packageIdentity)
            };

            var metadataResource = new Mock <IPackageTimestampMetadataResource>();

            metadataResource.Setup(x => x.GetAsync(It.IsAny <ValidationContext>()))
            .ReturnsAsync(PackageTimestampMetadata.CreateForPackageExistingOnFeed(commitTimeStamp, commitTimeStamp));

            return(ValidationContextStub.Create(
                       _packageIdentity,
                       catalogEntries,
                       client: client,
                       timestampMetadataResource: metadataResource.Object));
        }