public async Task ValidateAsync_WhenRequirePackageSignatureIsTrue_RequiresPackageSignatureFile(
            bool includePackageSignatureFile)
        {
            var storage        = new MemoryStorage(_baseUri);
            var now            = GetDateTime();
            var storageContent = CreateStorageContent(now, includePackageSignatureFile);

            storage.Content.TryAdd(_packageDetailsUri, storageContent);

            using (var clientHandler = new MockServerHttpClientHandler())
                using (CollectorHttpClient client = await CreateCollectorHttpClientStubAsync(clientHandler, storage))
                {
                    ValidationContext         context   = CreateContext(client, now);
                    CatalogAggregateValidator validator = CreateValidator(context, requirePackageSignature: true);

                    AggregateValidationResult result = await validator.ValidateAsync(context);

                    Assert.Single(result.ValidationResults);

                    var expectedResult = includePackageSignatureFile ? TestResult.Pass : TestResult.Fail;
                    var actualResult   = result.ValidationResults.Single();

                    Assert.Equal(expectedResult, actualResult.Result);

                    if (includePackageSignatureFile)
                    {
                        Assert.Null(actualResult.Exception);
                    }
                    else
                    {
                        Assert.IsType <MissingPackageSignatureFileException>(actualResult.Exception);
                    }
                }
        }
        public async Task DoesntValidateSignatureIfDisabled()
        {
            var mock          = Mock.Of <IDictionary <FeedType, SourceRepository> >();
            var loggerFactory = Mock.Of <ILoggerFactory>();
            var factory       = new ValidatorFactory(mock, loggerFactory);

            var target = new CatalogAggregateValidator(factory, requireSignature: false);

            var result = await target.ValidateAsync(new ValidationContext());

            Assert.Equal(0, result.ValidationResults.Count());
        }
        public async Task ValidatesSignature()
        {
            var feedToSource  = new Mock <IDictionary <FeedType, SourceRepository> >();
            var loggerFactory = Mock.Of <ILoggerFactory>();
            var factory       = new ValidatorFactory(feedToSource.Object, loggerFactory);

            feedToSource.Setup(x => x[It.IsAny <FeedType>()]).Returns(new Mock <SourceRepository>().Object);

            var target = new CatalogAggregateValidator(factory, requireSignature: true);

            var result = await target.ValidateAsync(new ValidationContext());

            Assert.Equal(1, result.ValidationResults.Count());
        }
        public async Task Name_Always_ReturnsTypeName()
        {
            using (var clientHandler = new MockServerHttpClientHandler())
                using (CollectorHttpClient client = await CreateCollectorHttpClientStubAsync(
                           clientHandler,
                           new MemoryStorage()))
                {
                    ValidationContext         context   = CreateContext(client, DateTime.UtcNow);
                    CatalogAggregateValidator validator = CreateValidator(
                        context,
                        requirePackageSignature: false);

                    Assert.Equal(typeof(CatalogAggregateValidator).FullName, validator.Name);
                }
        }
        public async Task ValidateAsync_WhenRequirePackageSignatureIsFalse_DoesNotRequirePackageSignatureFile(
            bool includePackageSignatureFile)
        {
            var storage        = new MemoryStorage(_baseUri);
            var now            = GetDateTime();
            var storageContent = CreateStorageContent(now, includePackageSignatureFile);

            storage.Content.TryAdd(_packageDetailsUri, storageContent);

            using (var clientHandler = new MockServerHttpClientHandler())
                using (CollectorHttpClient client = await CreateCollectorHttpClientStubAsync(clientHandler, storage))
                {
                    ValidationContext         context   = CreateContext(client, now);
                    CatalogAggregateValidator validator = CreateValidator(context, requirePackageSignature: false);

                    AggregateValidationResult result = await validator.ValidateAsync(context);

                    Assert.Empty(result.ValidationResults);
                }
        }