Merge pull request #12822 from hashicorp/jbardin/shema-input

Fix logic when skipping schema input
This commit is contained in:
James Bardin 2017-03-17 15:42:39 -04:00 committed by GitHub
commit 14e07b136e
2 changed files with 24 additions and 12 deletions

View File

@ -477,7 +477,9 @@ func (m schemaMap) Input(
// Skip things that don't require config, if that is even valid
// for a provider schema.
if !v.Required && !v.Optional {
// Required XOR Optional must always be true to validate, so we only
// need to check one.
if v.Optional {
continue
}

View File

@ -3173,7 +3173,7 @@ func TestSchemaMap_Input(t *testing.T) {
* String decode
*/
"uses input on optional field with no config": {
"no input on optional field with no config": {
Schema: map[string]*Schema{
"availability_zone": &Schema{
Type: TypeString,
@ -3181,15 +3181,9 @@ func TestSchemaMap_Input(t *testing.T) {
},
},
Input: map[string]string{
"availability_zone": "foo",
},
Result: map[string]interface{}{
"availability_zone": "foo",
},
Err: false,
Input: map[string]string{},
Result: map[string]interface{}{},
Err: false,
},
"input ignored when config has a value": {
@ -3276,7 +3270,7 @@ func TestSchemaMap_Input(t *testing.T) {
DefaultFunc: func() (interface{}, error) {
return nil, nil
},
Optional: true,
Required: true,
},
},
@ -3290,6 +3284,22 @@ func TestSchemaMap_Input(t *testing.T) {
Err: false,
},
"input not used when optional default function returns nil": {
Schema: map[string]*Schema{
"availability_zone": &Schema{
Type: TypeString,
DefaultFunc: func() (interface{}, error) {
return nil, nil
},
Optional: true,
},
},
Input: map[string]string{},
Result: map[string]interface{}{},
Err: false,
},
}
for i, tc := range cases {