public async Task DropsMessageOnDuplicateValidationRequest()
        {
            var messageData             = new PackageValidationMessageData("packageId", "1.2.3", Guid.NewGuid());
            var validationConfiguration = new ValidationConfiguration();
            var package = new Package();
            var packageValidatingEntity = new PackageValidatingEntity(package);

            CorePackageServiceMock
            .Setup(ps => ps.FindPackageByIdAndVersionStrict(messageData.PackageId, messageData.PackageVersion))
            .Returns(packageValidatingEntity)
            .Verifiable();

            ValidationSetProviderMock
            .Setup(vsp => vsp.TryGetOrCreateValidationSetAsync(messageData, packageValidatingEntity))
            .ReturnsAsync((PackageValidationSet)null)
            .Verifiable();

            var handler = CreateHandler();

            var result = await handler.HandleAsync(messageData);

            Assert.True(result);
            CorePackageServiceMock
            .Verify(ps => ps.FindPackageByIdAndVersionStrict(messageData.PackageId, messageData.PackageVersion), Times.Once());
            ValidationSetProviderMock
            .Verify(vsp => vsp.TryGetOrCreateValidationSetAsync(messageData, packageValidatingEntity), Times.Once());
        }
Example #2
0
        public async Task DropsMessageIfPackageIsSoftDeletedForProcessValidationSet()
        {
            var messageData = PackageValidationMessageData.NewProcessValidationSet(
                "packageId",
                "1.2.3",
                Guid.NewGuid(),
                ValidatingType.Package,
                entityKey: null);
            var validationConfiguration = new ValidationConfiguration();
            var package = new Package {
                PackageStatusKey = PackageStatus.Deleted
            };
            var packageValidatingEntity = new PackageValidatingEntity(package);

            CorePackageServiceMock
            .Setup(ps => ps.FindPackageByIdAndVersionStrict(
                       messageData.ProcessValidationSet.PackageId,
                       messageData.ProcessValidationSet.PackageVersion))
            .Returns(packageValidatingEntity);

            var handler = CreateHandler();

            var result = await handler.HandleAsync(messageData);

            Assert.True(result);
            CorePackageServiceMock.Verify(
                ps => ps.FindPackageByIdAndVersionStrict(
                    messageData.ProcessValidationSet.PackageId,
                    messageData.ProcessValidationSet.PackageVersion),
                Times.Once);
        }
Example #3
0
        public async Task DropsMessageIfPackageIsSoftDeletedForCheckValidator()
        {
            var messageData             = PackageValidationMessageData.NewCheckValidator(Guid.NewGuid());
            var validationConfiguration = new ValidationConfiguration();
            var package = new Package {
                Key = 42, PackageStatusKey = PackageStatus.Deleted
            };
            var packageValidatingEntity = new PackageValidatingEntity(package);
            var validationSet           = new PackageValidationSet {
                PackageKey = package.Key, ValidatingType = ValidatingType.Package
            };

            ValidationSetProviderMock
            .Setup(ps => ps.TryGetParentValidationSetAsync(messageData.CheckValidator.ValidationId))
            .ReturnsAsync(validationSet)
            .Verifiable();
            CorePackageServiceMock
            .Setup(ps => ps.FindPackageByKey(package.Key))
            .Returns(packageValidatingEntity);

            var handler = CreateHandler();

            var result = await handler.HandleAsync(messageData);

            Assert.True(result);
            ValidationSetProviderMock.Verify(
                vsp => vsp.TryGetParentValidationSetAsync(messageData.CheckValidator.ValidationId),
                Times.Once);
            CorePackageServiceMock.Verify(
                ps => ps.FindPackageByKey(package.Key),
                Times.Once);
        }
            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);
            }
        public void PropertiesValidation()
        {
            // Arrange
            var package = CreatePackage();

            // Act & Assert
            var validatingEntity = new PackageValidatingEntity(package);

            Assert.Equal(PackageCreated, validatingEntity.Created);
            Assert.Equal(PackageKey, validatingEntity.Key);
            Assert.Equal(PackageId, validatingEntity.EntityRecord.PackageRegistration.Id);
            Assert.Equal(PackageNormalizedVersion, validatingEntity.EntityRecord.NormalizedVersion);
            Assert.Equal(ValidatingType.Package, validatingEntity.ValidatingType);
        }
Example #6
0
        public ValidationMessageHandlerLooseFacts()
            : base(MockBehavior.Loose)
        {
            Package                 = new Package();
            MessageData             = new PackageValidationMessageData("packageId", "1.2.3", Guid.NewGuid());
            ValidationSet           = new PackageValidationSet();
            PackageValidatingEntity = new PackageValidatingEntity(Package);

            CorePackageServiceMock
            .Setup(ps => ps.FindPackageByIdAndVersionStrict(MessageData.PackageId, MessageData.PackageVersion))
            .Returns(PackageValidatingEntity);

            ValidationSetProviderMock
            .Setup(vsp => vsp.TryGetOrCreateValidationSetAsync(MessageData, PackageValidatingEntity))
            .ReturnsAsync(ValidationSet);
        }
            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>();

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

                PackageFileServiceMock
                .Setup(x => x.UpdatePackageBlobMetadataAsync(It.IsAny <PackageValidationSet>()))
                .ReturnsAsync(streamMetadata);

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

                PackageValidatingEntity = new PackageValidatingEntity(Package);
            }
Example #8
0
        public ValidationOutcomeProcessorFacts()
        {
            ValidationStorageServiceMock = new Mock <IValidationStorageService>();
            ValidationEnqueuerMock       = new Mock <IPackageValidationEnqueuer>();
            PackageStateProcessorMock    = new Mock <IStatusProcessor <Package> >();
            PackageFileServiceMock       = new Mock <IValidationFileService>();
            ConfigurationAccessorMock    = new Mock <IOptionsSnapshot <ValidationConfiguration> >();
            MessageServiceMock           = new Mock <IMessageService <Package> >();
            TelemetryServiceMock         = new Mock <ITelemetryService>();
            LoggerMock = new Mock <ILogger <ValidationOutcomeProcessor <Package> > >();

            Configuration             = new ValidationConfiguration();
            Configuration.Validations = new List <ValidationConfigurationItem>();
            Package = new Package
            {
                PackageRegistration = new PackageRegistration {
                    Id = "package"
                },
                Version           = "1.2.3.456",
                NormalizedVersion = "1.2.3",
                PackageStatusKey  = PackageStatus.Validating
            };
            Package.PackageRegistration.Packages.Add(Package);
            ScheduleNextCheck = true;

            ValidationSet = new PackageValidationSet();
            ValidationSet.PackageValidations = new List <PackageValidation>();

            ValidationSet.PackageId = Package.PackageRegistration.Id;
            ValidationSet.PackageNormalizedVersion = Package.NormalizedVersion;
            ValidationSet.ValidationTrackingId     = Guid.NewGuid();
            ValidationSet.Created             = DateTime.UtcNow - TimeSpan.FromHours(3);
            ValidationSet.Updated             = ValidationSet.Created + TimeSpan.FromHours(1);
            ValidationSet.ValidationSetStatus = ValidationSetStatus.InProgress;

            ProcessorStats = new ValidationSetProcessorResult();

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

            PackageValidatingEntity = new PackageValidatingEntity(Package);
        }
        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> >();
            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>()))
            .Returns(Task.CompletedTask);

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

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

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