Skip to content

Commit

Permalink
Add validation on virtual_cluster to forbid empty string values
Browse files Browse the repository at this point in the history
  • Loading branch information
qboileau committed Nov 13, 2024
1 parent d1ef825 commit d755d63
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 2 deletions.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

49 changes: 49 additions & 0 deletions internal/schema/validation/non_empty_string.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package validation

import (
"context"
"github.com/hashicorp/terraform-plugin-framework/schema/validator"

"github.com/hashicorp/terraform-plugin-framework-validators/helpers/validatordiag"
)

var _ validator.String = nonEmpty{}

// stringNonEmpty validates that a string Attribute's length is at least a certain value.
type nonEmpty struct {
}

// Description describes the validation in plain text formatting.
func (validator nonEmpty) Description(_ context.Context) string {
return "string should not be empty"
}

// MarkdownDescription describes the validation in Markdown formatting.
func (validator nonEmpty) MarkdownDescription(ctx context.Context) string {
return validator.Description(ctx)
}

// Validate performs the validation.
func (v nonEmpty) ValidateString(ctx context.Context, request validator.StringRequest, response *validator.StringResponse) {
if request.ConfigValue.IsNull() || request.ConfigValue.IsUnknown() {
return
}

value := request.ConfigValue.ValueString()

if len(value) == 0 {
response.Diagnostics.Append(validatordiag.InvalidAttributeValueDiagnostic(
request.Path,
v.Description(ctx),
"\"\"",
))
return
}
}

// NonEmptyString returns a validator which ensures that any configured
// attribute value a not empty string. Null (unconfigured) and unknown (known after apply)
// values are skipped.
func NonEmptyString() validator.String {
return nonEmpty{}
}
14 changes: 13 additions & 1 deletion provider_code_spec.json
Original file line number Diff line number Diff line change
Expand Up @@ -1043,7 +1043,19 @@
],
"schema_definition": "stringdefault.StaticString(\"passthrough\")"
}
}
},
"validators": [
{
"custom": {
"imports": [
{
"path": "github.com/conduktor/terraform-provider-conduktor/internal/schema/validation"
}
],
"schema_definition": "validation.NonEmptyString()"
}
}
]
}
},
{
Expand Down

0 comments on commit d755d63

Please sign in to comment.