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(); }
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}"); }
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); }
public void Validate_ValidMainArmTemplateFile_Succeeds() { var fileToValidate = MainArmTemplateFile.ReadFromFileSystem(this.fileSystem); Invoking(() => this.sut.Validate(fileToValidate)).Should().NotThrow(); }
public DiffValidatorTests() { this.fileSystem = MockFileSystemFactory.CreateFileSystemWithValidFiles(); this.latestMainArmTemplateFile = MainArmTemplateFile.ReadFromFileSystem(this.fileSystem); this.sut = new DiffValidator(this.fileSystem, MockLoggerFactory.CreateLogger(), this.latestMainArmTemplateFile); }