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)); }
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)); }