Ejemplo n.º 1
0
            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);
            }
Ejemplo n.º 2
0
        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);
        }