helper/schema: fix validating nested objects
When interpreting a nested object, we were validating against the "raw" value, and not the interpolated value, causing incorrect errors. This affects structures such as: ```tf tags = "${list(map("foo", "bar"))}" ``` Prior to this, a complaint about "expected object, got string" since the raw value is obviously a string, when the interpolated value is the correct shape.
This commit is contained in:
parent
76d4abd12a
commit
b9a3433f6b
|
@ -1373,7 +1373,7 @@ func (m schemaMap) validateObject(
|
||||||
k string,
|
k string,
|
||||||
schema map[string]*Schema,
|
schema map[string]*Schema,
|
||||||
c *terraform.ResourceConfig) ([]string, []error) {
|
c *terraform.ResourceConfig) ([]string, []error) {
|
||||||
raw, _ := c.GetRaw(k)
|
raw, _ := c.Get(k)
|
||||||
if _, ok := raw.(map[string]interface{}); !ok {
|
if _, ok := raw.(map[string]interface{}); !ok {
|
||||||
return nil, []error{fmt.Errorf(
|
return nil, []error{fmt.Errorf(
|
||||||
"%s: expected object, got %s",
|
"%s: expected object, got %s",
|
||||||
|
|
|
@ -3947,6 +3947,33 @@ func TestSchemaMap_Validate(t *testing.T) {
|
||||||
Err: false,
|
Err: false,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
"Good sub-resource, interpolated value": {
|
||||||
|
Schema: map[string]*Schema{
|
||||||
|
"ingress": &Schema{
|
||||||
|
Type: TypeList,
|
||||||
|
Optional: true,
|
||||||
|
Elem: &Resource{
|
||||||
|
Schema: map[string]*Schema{
|
||||||
|
"from": &Schema{
|
||||||
|
Type: TypeInt,
|
||||||
|
Required: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
Config: map[string]interface{}{
|
||||||
|
"ingress": []interface{}{
|
||||||
|
`${map("from", "80")}`,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
Vars: map[string]string{},
|
||||||
|
|
||||||
|
Err: false,
|
||||||
|
},
|
||||||
|
|
||||||
"Invalid/unknown field": {
|
"Invalid/unknown field": {
|
||||||
Schema: map[string]*Schema{
|
Schema: map[string]*Schema{
|
||||||
"availability_zone": &Schema{
|
"availability_zone": &Schema{
|
||||||
|
|
Loading…
Reference in New Issue