public ExtractAsync() { _packageKey = 23; _token = CancellationToken.None; _savedCertificates = new List <X509Certificate2>(); _certificateStore = new Mock <ICertificateStore>(); _certificateStore .Setup(x => x.ExistsAsync(It.IsAny <string>(), It.IsAny <CancellationToken>())) .Returns <string, CancellationToken>((t, _) => Task.FromResult(_savedCertificates.Any(x => x.ComputeSHA256Thumbprint() == t))); _certificateStore .Setup(x => x.SaveAsync(It.IsAny <X509Certificate2>(), It.IsAny <CancellationToken>())) .Returns(Task.CompletedTask) .Callback <X509Certificate2, CancellationToken>((cert, _) => _savedCertificates.Add(new X509Certificate2(cert.RawData))); _entitiesContext = new Mock <IValidationEntitiesContext>(); _entitiesContext .Setup(x => x.ParentCertificates) .Returns(DbSetMockFactory.Create <ParentCertificate>()); _entitiesContext .Setup(x => x.EndCertificates) .Returns(DbSetMockFactory.Create <EndCertificate>()); _entitiesContext .Setup(x => x.CertificateChainLinks) .Returns(DbSetMockFactory.Create <CertificateChainLink>()); _entitiesContext .Setup(x => x.PackageSignatures) .Returns(DbSetMockFactory.Create <PackageSignature>()); _entitiesContext .Setup(x => x.TrustedTimestamps) .Returns(DbSetMockFactory.Create <TrustedTimestamp>()); _logger = new Mock <ILogger <SignaturePartsExtractor> >(); _target = new SignaturePartsExtractor( _certificateStore.Object, _entitiesContext.Object, _logger.Object); }
public SignatureValidatorIntegrationTests(CertificateIntegrationTestFixture fixture, ITestOutputHelper output) { _fixture = fixture ?? throw new ArgumentNullException(nameof(fixture)); _output = output ?? throw new ArgumentNullException(nameof(output)); _validationEntitiesContext = new Mock <IValidationEntitiesContext>(); _validationEntitiesContext .Setup(x => x.PackageSigningStates) .Returns(DbSetMockFactory.Create <PackageSigningState>()); _validationEntitiesContext .Setup(x => x.ParentCertificates) .Returns(DbSetMockFactory.Create <ParentCertificate>()); _validationEntitiesContext .Setup(x => x.EndCertificates) .Returns(DbSetMockFactory.Create <EndCertificate>()); _validationEntitiesContext .Setup(x => x.CertificateChainLinks) .Returns(DbSetMockFactory.Create <CertificateChainLink>()); _validationEntitiesContext .Setup(x => x.PackageSignatures) .Returns(DbSetMockFactory.Create <PackageSignature>()); _validationEntitiesContext .Setup(x => x.TrustedTimestamps) .Returns(DbSetMockFactory.Create <TrustedTimestamp>()); var loggerFactory = new LoggerFactory(); loggerFactory.AddXunit(output); _packageSigningStateService = new PackageSigningStateService( _validationEntitiesContext.Object, loggerFactory.CreateLogger <PackageSigningStateService>()); _certificateStore = new Mock <ICertificateStore>(); _signaturePartsExtractor = new SignaturePartsExtractor( _certificateStore.Object, _validationEntitiesContext.Object, loggerFactory.CreateLogger <SignaturePartsExtractor>()); _packageFileService = new Mock <IProcessorPackageFileService>(); _nupkgUri = new Uri("https://example-storage/TestProcessor/b777135f-1aac-4ec2-a3eb-1f64fe1880d5/nuget.versioning.4.3.0.nupkg"); _packageFileService .Setup(x => x.GetReadAndDeleteUriAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <Guid>())) .ReturnsAsync(() => _nupkgUri); _packageFileService .Setup(x => x.SaveAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <Guid>(), It.IsAny <Stream>())) .Returns(Task.CompletedTask) .Callback <string, string, Guid, Stream>((_, __, ___, s) => { using (var memoryStream = new MemoryStream()) { s.Position = 0; s.CopyTo(memoryStream); _savedPackageBytes = memoryStream.ToArray(); } }); _corePackageService = new Mock <ICorePackageService>(); // These dependencies are concrete. _minimalPackageSignatureVerifier = PackageSignatureVerifierFactory.CreateMinimal(); _fullPackageSignatureVerifier = PackageSignatureVerifierFactory.CreateFull(); _telemetryClient = new Mock <ITelemetryClient>(); _telemetryService = new TelemetryService(_telemetryClient.Object); _logger = new RecordingLogger <SignatureValidator>(loggerFactory.CreateLogger <SignatureValidator>()); // Initialize data. _packageKey = 23; _message = new SignatureValidationMessage( "SomePackageId", "1.2.3", new Uri("https://example/validation/somepackageid.1.2.3.nupkg"), new Guid("8eb5affc-2d0e-4315-9b79-5a194d39ebd1")); _token = CancellationToken.None; // Initialize the subject of testing. _target = new SignatureValidator( _packageSigningStateService, _minimalPackageSignatureVerifier, _fullPackageSignatureVerifier, _signaturePartsExtractor, _packageFileService.Object, _corePackageService.Object, _telemetryService, _logger); }