| // Copyright IBM Corp. 2014, 2026 | |
| // SPDX-License-Identifier: BUSL-1.1 | |
| package configtesting | |
| import ( | |
| "testing" | |
| "github.com/hashicorp/hcl/v2" | |
| "github.com/zclconf/go-cty/cty" | |
| ) | |
| func TestSynthBodyContent(t *testing.T) { | |
| tests := map[string]struct { | |
| Values map[string]cty.Value | |
| Schema *hcl.BodySchema | |
| DiagCount int | |
| }{ | |
| "empty": { | |
| Values: map[string]cty.Value{}, | |
| Schema: &hcl.BodySchema{}, | |
| DiagCount: 0, | |
| }, | |
| "missing required attribute": { | |
| Values: map[string]cty.Value{}, | |
| Schema: &hcl.BodySchema{ | |
| Attributes: []hcl.AttributeSchema{ | |
| { | |
| Name: "nonexist", | |
| Required: true, | |
| }, | |
| }, | |
| }, | |
| DiagCount: 1, // missing required attribute | |
| }, | |
| "missing optional attribute": { | |
| Values: map[string]cty.Value{}, | |
| Schema: &hcl.BodySchema{ | |
| Attributes: []hcl.AttributeSchema{ | |
| { | |
| Name: "nonexist", | |
| }, | |
| }, | |
| }, | |
| DiagCount: 0, | |
| }, | |
| "extraneous attribute": { | |
| Values: map[string]cty.Value{ | |
| "foo": cty.StringVal("unwanted"), | |
| }, | |
| Schema: &hcl.BodySchema{}, | |
| DiagCount: 1, // unsupported attribute | |
| }, | |
| } | |
| for name, test := range tests { | |
| t.Run(name, func(t *testing.T) { | |
| body := SynthBody("synth", test.Values) | |
| _, diags := body.Content(test.Schema) | |
| if got, want := len(diags), test.DiagCount; got != want { | |
| t.Errorf("wrong number of diagnostics %d; want %d", got, want) | |
| for _, diag := range diags { | |
| t.Logf("- %s", diag) | |
| } | |
| } | |
| }) | |
| } | |
| } |