Ejemplo n.º 1
0
        public void ReadFromFileSystem_InvalidJson_ThrowsException()
        {
            var path = this.fileSystem.Path.GetFullPath(MainArmTemplateParametersFile.FileName);

            this.fileSystem.AddFile(path, "######");

            FluentActions.Invoking(() => MainArmTemplateParametersFile.ReadFromFileSystem(fileSystem)).Should()
            .Throw <BicepException>()
            .WithMessage($"The ARM template parameters file \"{path}\" is not a valid JSON file.*");
        }
Ejemplo n.º 2
0
        public void Validate_ValidChangesInMainArmTemplateParametersFile_Succeeds()
        {
            // Update a parameter value and add an existing parameter.
            var originalFile       = MainArmTemplateParametersFile.ReadFromFileSystem(fileSystem);
            var patchedFileElement = originalFile.RootElement.Patch(
                JsonPatchOperations.Replace("/parameters/linuxAdminUsername/value", "testuser"),
                JsonPatchOperations.Add("/parameters/clusterName", new Dictionary <string, JsonElement>().AsJsonElement()),
                JsonPatchOperations.Add("/parameters/clusterName/value", "aks101cluster"));

            fileSystem.AddFile(originalFile.Path, patchedFileElement.ToFormattedString());

            var fileToValidate = MainArmTemplateParametersFile.ReadFromFileSystem(fileSystem);

            Invoking(() => this.sut.Validate(fileToValidate)).Should().NotThrow();
        }
Ejemplo n.º 3
0
        public void Validate_InvalidChangesInMainArmTemplateParametersFile_ThrowsException()
        {
            // Remove a required parameter and add a non-existing parameter.
            var originalFile       = MainArmTemplateParametersFile.ReadFromFileSystem(fileSystem);
            var patchedFileElement = originalFile.RootElement.Patch(
                JsonPatchOperations.Remove("/parameters/linuxAdminUsername"),
                JsonPatchOperations.Add("/parameters/nonExisting", new Dictionary <string, JsonElement>().AsJsonElement()),
                JsonPatchOperations.Add("/parameters/nonExisting/value", 0));

            fileSystem.AddFile(originalFile.Path, patchedFileElement.ToFormattedString());

            var fileToValidate = MainArmTemplateParametersFile.ReadFromFileSystem(fileSystem);

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

                this.Logger.LogInformation("Validating that no additional files are in the module folder...");
                valid &= Validate(context.Console, () => this.ValidateNoAdditionalFiles());

                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 jsonSchemaValidator = new JsonSchemaValidator(this.Logger);
                var diffValidator       = new DiffValidator(this.FileSystem, this.Logger, latestMainArmTemplateFile);

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

                this.Logger.LogInformation("Validating main ARM template parameters file...");
                valid &= Validate(context.Console, () => MainArmTemplateParametersFile.ReadFromFileSystem(this.FileSystem).ValidatedBy(jsonSchemaValidator, 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(diffValidator));

                return(valid ? 0 : 1);
            }
Ejemplo n.º 5
0
        public void Validate(MainArmTemplateParametersFile file)
        {
            var latestMainArmTemplateParametersFile = MainArmTemplateParametersFile.Generate(this.fileSystem, this.latestMainArmTemplateFile);

            this.Validate(file.Path, file.Content, latestMainArmTemplateParametersFile.Content);
        }
Ejemplo n.º 6
0
 public void Validate(MainArmTemplateParametersFile file) => this.Validate(file.Path, JsonSchemaManager.ArmTemplateParametersSchema, file.RootElement);
Ejemplo n.º 7
0
            protected override int Invoke(InvocationContext context)
            {
                // Read or create main Bicep file.
                this.Logger.LogInformation("Ensure {MainBicepFile} exists...", "main Bicep file");
                var mainBicepFile = MainBicepFile.EnsureInFileSystem(this.FileSystem);

                // Read or create metadata file.
                this.Logger.LogInformation("Ensure {MetadataFile} exists...", "metadata file");
                var metadataFile = MetadataFile.EnsureInFileSystem(this.FileSystem);

                // Generate main ARM template file.
                var bicepCliProxy       = new BicepCliProxy(this.environmentProxy, this.processProxy, this.FileSystem, this.Logger, context.Console);
                var mainArmTemplateFile = this.GenerateFileAndLogInformation("main ARM template file", () => MainArmTemplateFile
                                                                             .Generate(this.FileSystem, bicepCliProxy, mainBicepFile)
                                                                             .WriteToFileSystem(FileSystem));

                // Generate main ARM template parameters file.
                var mainArmTemplateParametersFile = this.GenerateFileAndLogInformation("main ARM template parameters file", () => MainArmTemplateParametersFile
                                                                                       .Generate(this.FileSystem, mainArmTemplateFile)
                                                                                       .WriteToFileSystem(this.FileSystem));

                // Generate README file.
                this.GenerateFileAndLogInformation("README file", () => ReadmeFile
                                                   .Generate(this.FileSystem, metadataFile, mainArmTemplateFile)
                                                   .WriteToFileSystem(this.FileSystem));

                // Generate version file.
                this.GenerateFileAndLogInformation("version file", () => VersionFile
                                                   .Generate(this.FileSystem)
                                                   .WriteToFileSystem(this.FileSystem));

                return(0);
            }
Ejemplo n.º 8
0
        public void Validate_ValidArmTemplateParametersFile_Succeeds()
        {
            var fileToValidate = MainArmTemplateParametersFile.ReadFromFileSystem(this.fileSystem);

            Invoking(() => this.sut.Validate(fileToValidate)).Should().NotThrow();
        }
Ejemplo n.º 9
0
        public void ReadFromFileSystem_ValidJson_Succeeds()
        {
            this.fileSystem.AddFile(MainArmTemplateParametersFile.FileName, "{}");

            FluentActions.Invoking(() => MainArmTemplateParametersFile.ReadFromFileSystem(fileSystem)).Should().NotThrow();
        }