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.*"); }
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(); }
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}"); }
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); }
public void Validate(MainArmTemplateParametersFile file) { var latestMainArmTemplateParametersFile = MainArmTemplateParametersFile.Generate(this.fileSystem, this.latestMainArmTemplateFile); this.Validate(file.Path, file.Content, latestMainArmTemplateParametersFile.Content); }
public void Validate(MainArmTemplateParametersFile file) => this.Validate(file.Path, JsonSchemaManager.ArmTemplateParametersSchema, file.RootElement);
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); }
public void Validate_ValidArmTemplateParametersFile_Succeeds() { var fileToValidate = MainArmTemplateParametersFile.ReadFromFileSystem(this.fileSystem); Invoking(() => this.sut.Validate(fileToValidate)).Should().NotThrow(); }
public void ReadFromFileSystem_ValidJson_Succeeds() { this.fileSystem.AddFile(MainArmTemplateParametersFile.FileName, "{}"); FluentActions.Invoking(() => MainArmTemplateParametersFile.ReadFromFileSystem(fileSystem)).Should().NotThrow(); }