public BaseFacts()
            {
                Package = new Package
                {
                    PackageRegistration = new PackageRegistration(),
                    PackageStatusKey    = PackageStatus.Validating,
                };
                ValidationSet = new PackageValidationSet
                {
                    PackageValidations = new List <PackageValidation>
                    {
                        new PackageValidation {
                            Type = "SomeValidator"
                        },
                    }
                };

                PackageServiceMock         = new Mock <IEntityService <Package> >();
                PackageFileServiceMock     = new Mock <IValidationFileService>();
                ValidatorProviderMock      = new Mock <IValidatorProvider>();
                TelemetryServiceMock       = new Mock <ITelemetryService>();
                LoggerMock                 = new Mock <ILogger <EntityStatusProcessor <Package> > >();
                CoreLicenseFileServiceMock = new Mock <ICoreLicenseFileService>();
                CoreReadmeFileServiceMock  = new Mock <ICoreReadmeFileService>();

                var streamMetadata = new PackageStreamMetadata()
                {
                    Size          = 1,
                    Hash          = "hash",
                    HashAlgorithm = CoreConstants.Sha512HashAlgorithmId
                };

                SasDefinitionConfiguration = new SasDefinitionConfiguration()
                {
                    PackageStatusProcessorSasDefinition = "PackageStatusProcessorSasDefinition"
                };
                SasDefinitionConfigurationMock = new Mock <IOptionsSnapshot <SasDefinitionConfiguration> >();
                SasDefinitionConfigurationMock.Setup(x => x.Value).Returns(() => SasDefinitionConfiguration);

                Target = new PackageStatusProcessor(
                    PackageServiceMock.Object,
                    PackageFileServiceMock.Object,
                    ValidatorProviderMock.Object,
                    TelemetryServiceMock.Object,
                    SasDefinitionConfigurationMock.Object,
                    LoggerMock.Object,
                    CoreLicenseFileServiceMock.Object,
                    CoreReadmeFileServiceMock.Object);

                PackageValidatingEntity = new PackageValidatingEntity(Package);
            }
示例#2
0
 public SignatureValidator(
     IPackageSigningStateService packageSigningStateService,
     ISignatureFormatValidator formatValidator,
     ISignaturePartsExtractor signaturePartsExtractor,
     IProcessorPackageFileService packageFileService,
     ICorePackageService corePackageService,
     IOptionsSnapshot <ProcessSignatureConfiguration> configuration,
     IOptionsSnapshot <SasDefinitionConfiguration> sasDefinitionConfigurationAccessor,
     ITelemetryService telemetryService,
     ILogger <SignatureValidator> logger)
 {
     _packageSigningStateService = packageSigningStateService ?? throw new ArgumentNullException(nameof(packageSigningStateService));
     _formatValidator            = formatValidator ?? throw new ArgumentNullException(nameof(formatValidator));
     _signaturePartsExtractor    = signaturePartsExtractor ?? throw new ArgumentNullException(nameof(signaturePartsExtractor));
     _packageFileService         = packageFileService ?? throw new ArgumentNullException(nameof(packageFileService));
     _corePackageService         = corePackageService ?? throw new ArgumentNullException(nameof(corePackageService));
     _configuration = configuration ?? throw new ArgumentNullException(nameof(configuration));
     _sasDefinitionConfiguration = (sasDefinitionConfigurationAccessor == null || sasDefinitionConfigurationAccessor.Value == null) ? new SasDefinitionConfiguration() : sasDefinitionConfigurationAccessor.Value;
     _telemetryService           = telemetryService ?? throw new ArgumentNullException(nameof(telemetryService));
     _logger = logger ?? throw new ArgumentNullException(nameof(logger));
 }
        protected ValidationSetProcessorFactsBase(
            MockBehavior validatorProviderMockBehavior     = MockBehavior.Default,
            MockBehavior validationStorageMockBehavior     = MockBehavior.Default,
            MockBehavior configurationAccessorMockBehavior = MockBehavior.Default,
            MockBehavior sasDefinitionConfigurationAccessorMockBehavior = MockBehavior.Default,
            MockBehavior packageFileServiceMockBehavior = MockBehavior.Default,
            MockBehavior telemetryServiceMockBehavior   = MockBehavior.Default,
            MockBehavior loggerMockBehavior             = MockBehavior.Default)
        {
            ValidatorProviderMock     = new Mock <IValidatorProvider>(validatorProviderMockBehavior);
            ValidationStorageMock     = new Mock <IValidationStorageService>(validationStorageMockBehavior);
            ConfigurationAccessorMock = new Mock <IOptionsSnapshot <ValidationConfiguration> >(configurationAccessorMockBehavior);
            SasDefinitionConfigurationAccessorMock = new Mock <IOptionsSnapshot <SasDefinitionConfiguration> >(sasDefinitionConfigurationAccessorMockBehavior);
            PackageFileServiceMock = new Mock <IValidationFileService>(packageFileServiceMockBehavior);
            LoggerMock             = new Mock <ILogger <ValidationSetProcessor> >(loggerMockBehavior);
            TelemetryServiceMock   = new Mock <ITelemetryService>(telemetryServiceMockBehavior);
            Configuration          = new ValidationConfiguration
            {
                Validations = new List <ValidationConfigurationItem>
                {
                },
                TimeoutValidationSetAfter = TimeSpan.FromDays(5),
            };
            ConfigurationAccessorMock
            .SetupGet(ca => ca.Value)
            .Returns(Configuration);

            SasDefinitionConfiguration = new SasDefinitionConfiguration();
            SasDefinitionConfigurationAccessorMock
            .SetupGet(sca => sca.Value)
            .Returns(SasDefinitionConfiguration);

            Package = new Package
            {
                PackageRegistration = new PackageRegistration {
                    Id = "packageId"
                },
                Version           = "1.2.3.456",
                NormalizedVersion = "1.2.3"
            };

            Package.PackageRegistration.Packages.Add(Package);

            ValidationSet = new PackageValidationSet
            {
                Key        = 238423,
                PackageKey = 9999,
                PackageId  = Package.PackageRegistration.Id,
                PackageNormalizedVersion = Package.NormalizedVersion,
                PackageValidations       = new List <PackageValidation>
                {
                }
            };
            ValidationSet.PackageValidations.ToList().ForEach(v => v.PackageValidationSet = ValidationSet);
            Validators = new Dictionary <string, Mock <INuGetValidator> >();

            PackageFileServiceMock
            .Setup(pfs => pfs.GetPackageForValidationSetReadUriAsync(It.IsAny <PackageValidationSet>(), It.IsAny <string>(), It.IsAny <DateTimeOffset>()))
            .Returns <PackageValidationSet, string, DateTimeOffset>(
                (p, s, e) => Task.FromResult(new Uri($"https://example.com/{ValidationContainerName}/{p.ValidationTrackingId}/{p.PackageId}.{p.PackageNormalizedVersion}?e={e:yyyy-MM-dd-hh-mm-ss}")));
        }
        public ValidationSetProviderFacts()
        {
            ValidationStorageMock     = new Mock <IValidationStorageService>(MockBehavior.Strict);
            PackageFileServiceMock    = new Mock <IValidationFileService>(MockBehavior.Strict);
            ValidatorProvider         = new Mock <IValidatorProvider>(MockBehavior.Strict);
            ConfigurationAccessorMock = new Mock <IOptionsSnapshot <ValidationConfiguration> >();
            SasDefinitionConfigurationAccessorMock = new Mock <IOptionsSnapshot <SasDefinitionConfiguration> >();
            TelemetryServiceMock = new Mock <ITelemetryService>();
            LoggerMock           = new Mock <ILogger <ValidationSetProvider <Package> > >();

            PackageFileServiceMock
            .Setup(x => x.CopyPackageFileForValidationSetAsync(It.IsAny <PackageValidationSet>()))
            .ReturnsAsync(() => ETag);

            PackageFileServiceMock
            .Setup(x => x.CopyValidationPackageForValidationSetAsync(It.IsAny <PackageValidationSet>()))
            .Returns(Task.CompletedTask);

            PackageFileServiceMock
            .Setup(x => x.BackupPackageFileFromValidationSetPackageAsync(It.IsAny <PackageValidationSet>(), It.IsAny <string>()))
            .Returns(Task.CompletedTask);

            ValidatorProvider
            .Setup(x => x.IsNuGetProcessor(It.IsAny <string>()))
            .Returns(true);

            Configuration = new ValidationConfiguration();
            ConfigurationAccessorMock
            .SetupGet(ca => ca.Value)
            .Returns(() => Configuration);

            SasDefinitionConfiguration = new SasDefinitionConfiguration()
            {
                ValidationSetProviderSasDefinition = "ValidationSetProviderSasDefinition"
            };
            SasDefinitionConfigurationAccessorMock
            .SetupGet(sca => sca.Value)
            .Returns(() => SasDefinitionConfiguration);

            ETag    = "\"some-etag\"";
            Package = new Package
            {
                PackageRegistration = new PackageRegistration {
                    Id = "package1"
                },
                Version           = "1.2.3.456",
                NormalizedVersion = "1.2.3",
                Key              = 42,
                Created          = new DateTime(2010, 1, 2, 8, 30, 0, DateTimeKind.Utc),
                PackageStatusKey = PackageStatus.Validating,
            };
            Package.PackageRegistration.Packages = new List <Package> {
                Package
            };

            ValidationSet = new PackageValidationSet
            {
                PackageId = Package.PackageRegistration.Id,
                PackageNormalizedVersion = Package.NormalizedVersion,
                PackageKey           = Package.Key,
                ValidationTrackingId = Guid.NewGuid(),
            };

            PackageValidationMessageData = new ProcessValidationSetData(
                Package.PackageRegistration.Id,
                Package.NormalizedVersion,
                ValidationSet.ValidationTrackingId,
                ValidatingType.Package,
                Package.Key);

            PackageValidatingEntity = new PackageValidatingEntity(Package);
        }
示例#5
0
            public ValidateAsync(ITestOutputHelper output)
            {
                _packageStream = TestResources.GetResourceStream(TestResources.UnsignedPackage);
                _packageKey    = 42;
                _message       = new SignatureValidationMessage(
                    "NuGet.Versioning",
                    "4.3.0",
                    new Uri("https://example/nuget.versioning.4.3.0.nupkg"),
                    new Guid("b777135f-1aac-4ec2-a3eb-1f64fe1880d5"));
                _cancellationToken = CancellationToken.None;

                _packageSigningStateService = new Mock <IPackageSigningStateService>();
                _formatValidator            = new Mock <ISignatureFormatValidator>();

                _minimalVerifyResult = new VerifySignaturesResult(isValid: true, isSigned: true);
                _formatValidator
                .Setup(x => x.ValidateMinimalAsync(It.IsAny <ISignedPackageReader>(), It.IsAny <CancellationToken>()))
                .ReturnsAsync(() => _minimalVerifyResult);

                _fullVerifyResult = new VerifySignaturesResult(isValid: true, isSigned: true);
                _formatValidator
                .Setup(x => x.ValidateAllSignaturesAsync(It.IsAny <ISignedPackageReader>(), It.IsAny <bool>(), It.IsAny <CancellationToken>()))
                .ReturnsAsync(() => _fullVerifyResult);

                _authorSignatureVerifyResult = new VerifySignaturesResult(isValid: true, isSigned: true);
                _formatValidator
                .Setup(x => x.ValidateAuthorSignatureAsync(It.IsAny <ISignedPackageReader>(), It.IsAny <CancellationToken>()))
                .ReturnsAsync(() => _authorSignatureVerifyResult);

                _repositorySignatureVerifyResult = new VerifySignaturesResult(isValid: true, isSigned: true);
                _formatValidator
                .Setup(x => x.ValidateRepositorySignatureAsync(It.IsAny <ISignedPackageReader>(), It.IsAny <CancellationToken>()))
                .ReturnsAsync(() => _repositorySignatureVerifyResult);

                _signaturePartsExtractor = new Mock <ISignaturePartsExtractor>();
                _corePackageService      = new Mock <ICorePackageService>();
                var loggerFactory = new LoggerFactory().AddXunit(output);

                _logger = loggerFactory.CreateLogger <SignatureValidator>();

                _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>(), It.IsAny <string>()))
                .ReturnsAsync(() => _nupkgUri);

                _optionsSnapshot = new Mock <IOptionsSnapshot <ProcessSignatureConfiguration> >();
                _configuration   = new ProcessSignatureConfiguration
                {
                    AllowedRepositorySigningCertificates = new List <string> {
                        "fake-thumbprint"
                    },
                    V3ServiceIndexUrl = TestResources.V3ServiceIndexUrl,
                    StripValidRepositorySignatures = false,
                };
                _optionsSnapshot.Setup(x => x.Value).Returns(() => _configuration);

                _sasDefinitionConfiguration     = new SasDefinitionConfiguration();
                _sasDefinitionConfigurationMock = new Mock <IOptionsSnapshot <SasDefinitionConfiguration> >();
                _sasDefinitionConfigurationMock.Setup(x => x.Value).Returns(() => _sasDefinitionConfiguration);


                _telemetryService = new Mock <ITelemetryService>();

                _target = new SignatureValidator(
                    _packageSigningStateService.Object,
                    _formatValidator.Object,
                    _signaturePartsExtractor.Object,
                    _packageFileService.Object,
                    _corePackageService.Object,
                    _optionsSnapshot.Object,
                    _sasDefinitionConfigurationMock.Object,
                    _telemetryService.Object,
                    _logger);
            }