Example #1
0
        private static void VerifyNU3008(SignatureValidatorResult result)
        {
            var issue = Assert.Single(result.Issues);

            Assert.Equal(ValidationIssueCode.ClientSigningVerificationFailure, issue.IssueCode);
            var typedIssue = Assert.IsType <ClientSigningVerificationFailure>(issue);

            Assert.Equal("NU3008", typedIssue.ClientCode);
            Assert.Equal("The package integrity check failed.", typedIssue.ClientMessage);
        }
            public async Task SetsNupkgUrlIfValidationSucceeds()
            {
                // Arrange
                _validatorResult = new SignatureValidatorResult(ValidationStatus.Succeeded, _outputNupkgUri);

                // Act
                var success = await _target.HandleAsync(_message);

                // Assert
                Assert.True(success, "The handler should have succeeded processing the message.");
                Assert.Equal(_outputNupkgUri.AbsoluteUri, _validation.NupkgUrl);
            }
Example #3
0
        private void VerifyPackageSigningStatus(SignatureValidatorResult result, ValidationStatus validationStatus, PackageSigningStatus packageSigningStatus)
        {
            Assert.Equal(validationStatus, result.State);
            var state = _validationEntitiesContext
                        .Object
                        .PackageSigningStates
                        .Where(x => x.PackageKey == _packageKey)
                        .SingleOrDefault();

            Assert.Equal(state.PackageId, _message.PackageId);
            Assert.Equal(state.PackageNormalizedVersion, _message.PackageVersion);
            Assert.Equal(state.SigningStatus, packageSigningStatus);
        }
            public HandleAsync()
            {
                _message = new SignatureValidationMessage(
                    "NuGet.Versioning",
                    "4.3.0",
                    TestPackageUri,
                    new Guid("18e83aca-953a-4484-a698-a8fb8619e0bd"));
                _outputNupkgUri = new Uri("https://example/processor/18e83aca-953a-4484-a698-a8fb8619e0bd/nuget.versioning.4.3.0.nupkg");

                _validation = new ValidatorStatus
                {
                    PackageKey = 42,
                    State      = ValidationStatus.Incomplete,
                };
                _validationIssue = new Mock <IValidationIssue>();
                _validatorResult = new SignatureValidatorResult(ValidationStatus.Succeeded, nupkgUri: null);

                _packageDownloader     = new Mock <IFileDownloader>();
                _validatorStateService = new Mock <IValidatorStateService>();
                _signatureValidator    = new Mock <ISignatureValidator>();
                _validationEnqueuer    = new Mock <IPackageValidationEnqueuer>();
                _featureFlagService    = new Mock <IFeatureFlagService>();
                _logger = new Mock <ILogger <SignatureValidationMessageHandler> >();

                _packageDownloader
                .Setup(x => x.DownloadAsync(_message.NupkgUri, It.IsAny <CancellationToken>()))
                .ReturnsAsync(() => FileDownloadResult.Ok(TestResources.GetResourceStream(TestResources.UnsignedPackage)));
                _validatorStateService
                .Setup(x => x.GetStatusAsync(It.IsAny <Guid>()))
                .ReturnsAsync(() => _validation);

                _signatureValidator
                .Setup(x => x.ValidateAsync(
                           It.IsAny <int>(),
                           It.IsAny <Stream>(),
                           It.IsAny <SignatureValidationMessage>(),
                           It.IsAny <CancellationToken>()))
                .ReturnsAsync(() => _validatorResult);

                _featureFlagService.SetReturnsDefault(true);

                _target = new SignatureValidationMessageHandler(
                    _packageDownloader.Object,
                    _validatorStateService.Object,
                    _signatureValidator.Object,
                    _validationEnqueuer.Object,
                    _featureFlagService.Object,
                    _logger.Object);
            }
Example #5
0
            private void Validate(
                SignatureValidatorResult result,
                ValidationStatus validationStatus,
                PackageSigningStatus packageSigningStatus,
                Uri nupkgUri       = null,
                bool?shouldExtract = null)
            {
                Assert.Equal(validationStatus, result.State);
                Assert.Equal(nupkgUri, result.NupkgUri);
                _packageSigningStateService.Verify(
                    x => x.SetPackageSigningState(
                        _packageKey,
                        _message.PackageId,
                        _message.PackageVersion,
                        packageSigningStatus),
                    Times.Once);
                _packageSigningStateService.Verify(
                    x => x.SetPackageSigningState(
                        It.IsAny <int>(),
                        It.IsAny <string>(),
                        It.IsAny <string>(),
                        It.IsAny <PackageSigningStatus>()),
                    Times.Once);

                if ((shouldExtract.HasValue && shouldExtract.Value) ||
                    (validationStatus == ValidationStatus.Succeeded && packageSigningStatus == PackageSigningStatus.Valid))
                {
                    _signaturePartsExtractor.Verify(
                        x => x.ExtractAsync(_packageKey, It.Is <PrimarySignature>(y => y != null), It.IsAny <CancellationToken>()),
                        Times.Once);
                    _signaturePartsExtractor.Verify(
                        x => x.ExtractAsync(It.IsAny <int>(), It.IsAny <PrimarySignature>(), It.IsAny <CancellationToken>()),
                        Times.Once);
                }
                else
                {
                    _signaturePartsExtractor.Verify(
                        x => x.ExtractAsync(It.IsAny <int>(), It.IsAny <PrimarySignature>(), It.IsAny <CancellationToken>()),
                        Times.Never);
                }

                _corePackageService.VerifyAll();
            }