Exemplo n.º 1
0
 public async Task PassesIfEqual(
     RegistrationIndexValidator validator,
     PackageRegistrationIndexMetadata v2,
     PackageRegistrationIndexMetadata v3)
 {
     await validator.CompareIndexAsync(ValidatorTestUtility.GetFakeValidationContext(), v2, v3);
 }
 public async Task Runs(
     RegistrationLeafValidator validator,
     PackageRegistrationIndexMetadata v2,
     PackageRegistrationIndexMetadata v3)
 {
     Assert.Equal(true, await validator.ShouldRunLeafAsync(ValidatorTestUtility.GetFakeValidationContext(), v2, v3));
 }
Exemplo n.º 3
0
 public async Task Skips(
     RegistrationIndexValidator validator,
     PackageRegistrationIndexMetadata v2,
     PackageRegistrationIndexMetadata v3)
 {
     Assert.False(await validator.ShouldRunIndexAsync(ValidatorTestUtility.GetFakeValidationContext(), v2, v3));
 }
Exemplo n.º 4
0
 public async Task Runs(
     RegistrationIndexValidator validator,
     PackageRegistrationIndexMetadata v2,
     PackageRegistrationIndexMetadata v3)
 {
     Assert.Equal(ShouldRunTestResult.Yes, await validator.ShouldRunIndexAsync(ValidatorTestUtility.GetFakeValidationContext(), v2, v3));
 }
Exemplo n.º 5
0
 public async Task FailsIfUnequal(
     RegistrationIndexValidator validator,
     PackageRegistrationIndexMetadata v2,
     PackageRegistrationIndexMetadata v3)
 {
     await Assert.ThrowsAnyAsync <MetadataInconsistencyException>(
         () => validator.CompareIndexAsync(ValidatorTestUtility.GetFakeValidationContext(), v2, v3));
 }
Exemplo n.º 6
0
 private void AddAlternatePackageInconsistencyException(
     List <MetadataFieldInconsistencyException <PackageRegistrationIndexMetadata> > list,
     PackageRegistrationIndexMetadata database,
     PackageRegistrationIndexMetadata v3,
     string alternatePackageField,
     Func <PackageRegistrationAlternatePackageMetadata, object> getAlternatePackageField)
 {
     AddDeprecationInconsistencyException(
         list,
         database, v3,
         nameof(PackageRegistrationDeprecationMetadata.AlternatePackage) + "." + alternatePackageField,
         d => getAlternatePackageField(d.AlternatePackage));
 }
Exemplo n.º 7
0
        private void AddDeprecationInconsistencyException(
            List <MetadataFieldInconsistencyException <PackageRegistrationIndexMetadata> > list,
            PackageRegistrationIndexMetadata database,
            PackageRegistrationIndexMetadata v3,
            string deprecationFieldName,
            Func <PackageRegistrationDeprecationMetadata, object> getDeprecationField)
        {
            var exception = new MetadataFieldInconsistencyException <PackageRegistrationIndexMetadata>(
                database, v3,
                nameof(PackageRegistrationIndexMetadata.Deprecation) + "." + deprecationFieldName,
                i => getDeprecationField(i.Deprecation));

            list.Add(exception);
        }
Exemplo n.º 8
0
            public async Task SucceedsIfPackageIsListedInDatabaseAndListedInSearch()
            {
                // Arrange
                var target  = CreateTarget();
                var context = CreateValidationContext();

                DatabaseIndex = new PackageRegistrationIndexMetadata {
                    Listed = true
                };
                MakeVersionVisibleInSearch();

                // Act
                var result = await target.ValidateAsync(context);

                // Assert
                Assert.Equal(TestResult.Pass, result.Result);
            }
Exemplo n.º 9
0
            public async Task SpecialCasesReturnAsExpected(
                RegistrationIndexValidator validator,
                PackageRegistrationIndexMetadata v2,
                PackageRegistrationIndexMetadata v3,
                bool shouldPass)
            {
                var compareTask = Task.Run(async() => await validator.CompareIndexAsync(ValidatorTestUtility.GetFakeValidationContext(), v2, v3));

                if (shouldPass)
                {
                    await compareTask;
                }
                else
                {
                    await Assert.ThrowsAnyAsync <MetadataInconsistencyException>(
                        () => compareTask);
                }
            }
Exemplo n.º 10
0
        public override Task CompareIndexAsync(ValidationContext context, PackageRegistrationIndexMetadata database, PackageRegistrationIndexMetadata v3)
        {
            var exceptions = new List <MetadataFieldInconsistencyException <PackageRegistrationIndexMetadata> >();

            if (database.Deprecation == null && v3.Deprecation == null)
            {
                return(Task.CompletedTask);
            }
            else if (database.Deprecation == null || v3.Deprecation == null)
            {
                throw new MetadataFieldInconsistencyException <PackageRegistrationIndexMetadata>(
                          database, v3,
                          nameof(PackageRegistrationIndexMetadata.Deprecation),
                          i => i.Deprecation);
            }

            if (!database.Deprecation.Reasons.OrderBy(r => r).SequenceEqual(v3.Deprecation.Reasons.OrderBy(r => r)))
            {
                AddDeprecationInconsistencyException(
                    exceptions,
                    database, v3,
                    nameof(PackageRegistrationDeprecationMetadata.Reasons),
                    d => d.Reasons);
            }

            if (database.Deprecation.Message != v3.Deprecation.Message)
            {
                AddDeprecationInconsistencyException(
                    exceptions,
                    database, v3,
                    nameof(PackageRegistrationDeprecationMetadata.Message),
                    d => d.Message);
            }

            CompareIndexAlternatePackage(exceptions, database, v3);

            if (exceptions.Any())
            {
                throw new AggregateMetadataInconsistencyException <PackageRegistrationIndexMetadata>(exceptions);
            }

            return(Task.CompletedTask);
        }
Exemplo n.º 11
0
            public async Task FailsIfPackageIsUnlistedInDatabaseButListedInSearch()
            {
                // Arrange
                var target  = CreateTarget();
                var context = CreateValidationContext();

                DatabaseIndex = new PackageRegistrationIndexMetadata {
                    Listed = false
                };
                MakeVersionVisibleInSearch();

                // Act
                var result = await target.ValidateAsync(context);

                // Assert
                Assert.Equal(TestResult.Fail, result.Result);
                var exception = Assert.IsType <MetadataInconsistencyException>(result.Exception);

                Assert.Equal(
                    "The metadata between the database and V3 is inconsistent! Database shows unlisted but search shows listed.",
                    exception.Message);
            }
Exemplo n.º 12
0
        private void CompareIndexAlternatePackage(
            List <MetadataFieldInconsistencyException <PackageRegistrationIndexMetadata> > exceptions,
            PackageRegistrationIndexMetadata database,
            PackageRegistrationIndexMetadata v3)
        {
            if (database.Deprecation.AlternatePackage == null && v3.Deprecation.AlternatePackage == null)
            {
                return;
            }
            else if (database.Deprecation.AlternatePackage == null || v3.Deprecation.AlternatePackage == null)
            {
                AddDeprecationInconsistencyException(
                    exceptions,
                    database, v3,
                    nameof(PackageRegistrationDeprecationMetadata.AlternatePackage),
                    d => d.AlternatePackage);

                return;
            }

            if (database.Deprecation.AlternatePackage.Id != v3.Deprecation.AlternatePackage.Id)
            {
                AddAlternatePackageInconsistencyException(
                    exceptions,
                    database, v3,
                    nameof(PackageRegistrationAlternatePackageMetadata.Id),
                    a => a.Id);
            }

            if (database.Deprecation.AlternatePackage.Range != v3.Deprecation.AlternatePackage.Range)
            {
                AddAlternatePackageInconsistencyException(
                    exceptions,
                    database, v3,
                    nameof(PackageRegistrationAlternatePackageMetadata.Range),
                    a => a.Range);
            }
        }