public void Validate_MissingDescriptions_ThrowsException()
        {
            var mainArmTemplateFile        = MainArmTemplateFile.ReadFromFileSystem(this.fileSystem);
            var mainArmTemplateFileElement = JsonElementFactory.CreateElement(mainArmTemplateFile.Content);

            var patchedElement = mainArmTemplateFileElement.Patch(
                JsonPatchOperations.Remove("/parameters/sshRSAPublicKey/metadata/description"),
                JsonPatchOperations.Remove("/parameters/clusterName/metadata/description"),
                JsonPatchOperations.Remove("/parameters/osDiskSizeGB/metadata/description"),
                JsonPatchOperations.Remove("/outputs/controlPlaneFQDN/metadata/description"));

            fileSystem.AddFile(mainArmTemplateFile.Path, patchedElement.ToJsonString());

            var latestArmTemplateFile = MainArmTemplateFile.ReadFromFileSystem(this.fileSystem);
            var sut = this.CreateDescriptionsValidator(latestArmTemplateFile);

            FluentActions.Invoking(() => sut.Validate(this.fileToValidate)).Should()
            .Throw <InvalidModuleFileException>()
            .WithMessage(
                $@"The file ""{this.fileToValidate.Path}"" is invalid. Descriptions for the following parameters are missing:
  - sshRSAPublicKey
  - clusterName
  - osDiskSizeGB

The file ""{this.fileToValidate.Path}"" is invalid. Descriptions for the following outputs are missing:
  - controlPlaneFQDN
".ReplaceLineEndings());
        }
        public void Validate_ValidFile_Succeeds()
        {
            var latestArmTemplateFile = MainArmTemplateFile.ReadFromFileSystem(this.fileSystem);
            var sut = this.CreateDescriptionsValidator(latestArmTemplateFile);

            FluentActions.Invoking(() => sut.Validate(this.fileToValidate)).Should().NotThrow();
        }
Exemplo n.º 3
0
        public void Validate_ModifiedMainArmTemplateFile_ThrowsException()
        {
            this.fileSystem.AddFile(this.latestMainArmTemplateFile.Path, "modified");

            var fileToValidate = MainArmTemplateFile.ReadFromFileSystem(this.fileSystem);

            Invoking(() => this.sut.Validate(fileToValidate)).Should()
            .Throw <InvalidModuleException>()
            .WithMessage($"The file \"{fileToValidate.Path}\" is modified or outdated. Please regenerate the file to fix it.{Environment.NewLine}");
        }
Exemplo n.º 4
0
            protected override int Invoke(InvocationContext context)
            {
                var valid = true;

                this.Logger.LogInformation("Validating module path...");
                valid &= Validate(context.Console, () => ValidateModulePath(this.FileSystem));

                this.Logger.LogInformation("Validating main Bicep file...");

                var bicepCliProxy = new BicepCliProxy(this.environmentProxy, this.processProxy, this.FileSystem, this.Logger, context.Console);
                var mainBicepFile = MainBicepFile.ReadFromFileSystem(this.FileSystem);

                // This also validates that the main Bicep file can be built without errors.
                var latestMainArmTemplateFile = MainArmTemplateFile.Generate(this.FileSystem, bicepCliProxy, mainBicepFile);
                var descriptionsValidator     = new DescriptionsValidator(this.Logger, latestMainArmTemplateFile);

                valid &= Validate(context.Console, () => mainBicepFile.ValidatedBy(descriptionsValidator));

                var testValidator       = new TestValidator(this.FileSystem, this.Logger, bicepCliProxy, latestMainArmTemplateFile);
                var jsonSchemaValidator = new JsonSchemaValidator(this.Logger);
                var diffValidator       = new DiffValidator(this.FileSystem, this.Logger, latestMainArmTemplateFile);

                this.Logger.LogInformation("Validating main Bicep test file...");
                valid &= Validate(context.Console, () => MainBicepTestFile.ReadFromFileSystem(this.FileSystem).ValidatedBy(testValidator));

                this.Logger.LogInformation("Validating main ARM template file...");
                valid &= Validate(context.Console, () => MainArmTemplateFile.ReadFromFileSystem(this.FileSystem).ValidatedBy(diffValidator));

                this.Logger.LogInformation("Validating metadata file...");
                valid &= Validate(context.Console, () => MetadataFile.ReadFromFileSystem(this.FileSystem).ValidatedBy(jsonSchemaValidator));

                this.Logger.LogInformation("Validating README file...");
                valid &= Validate(context.Console, () => ReadmeFile.ReadFromFileSystem(this.FileSystem).ValidatedBy(diffValidator));

                this.Logger.LogInformation("Validating version file...");
                valid &= Validate(context.Console, () => VersionFile.ReadFromFileSystem(this.FileSystem).ValidatedBy(jsonSchemaValidator, diffValidator));

                return(valid ? 0 : 1);
            }
Exemplo n.º 5
0
        public void Validate_ValidMainArmTemplateFile_Succeeds()
        {
            var fileToValidate = MainArmTemplateFile.ReadFromFileSystem(this.fileSystem);

            Invoking(() => this.sut.Validate(fileToValidate)).Should().NotThrow();
        }
Exemplo n.º 6
0
 public DiffValidatorTests()
 {
     this.fileSystem = MockFileSystemFactory.CreateFileSystemWithValidFiles();
     this.latestMainArmTemplateFile = MainArmTemplateFile.ReadFromFileSystem(this.fileSystem);
     this.sut = new DiffValidator(this.fileSystem, MockLoggerFactory.CreateLogger(), this.latestMainArmTemplateFile);
 }