config: validate invalid variable keys

Fixes #9416

A simple change to verify that only valid keys for `variable` blocks are
used.
This commit is contained in:
Mitchell Hashimoto 2016-12-10 19:27:01 -05:00
parent c02b2471d6
commit 3ba9720b3e
No known key found for this signature in database
GPG Key ID: 744E147AA52F5B0A
3 changed files with 16 additions and 8 deletions

View File

@ -410,14 +410,12 @@ func loadVariablesHcl(list *ast.ObjectList) ([]*Variable, error) {
item.Pos(), NameRegexp)
}
/*
// TODO: catch extra fields
// Decode into raw map[string]interface{} so we know ALL fields
var config map[string]interface{}
if err := hcl.DecodeObject(&config, item.Val); err != nil {
return nil, err
}
*/
// Check for invalid keys
valid := []string{"type", "default", "description"}
if err := checkHCLKeys(item.Val, valid); err != nil {
return nil, multierror.Prefix(err, fmt.Sprintf(
"variable[%s]:", n))
}
// Decode into hclVariable to get typed values
var hclVar hclVariable

View File

@ -67,6 +67,13 @@ func TestLoadFile_lifecycleKeyCheck(t *testing.T) {
t.Logf("err: %s", err)
}
func TestLoadFile_varInvalidKey(t *testing.T) {
_, err := LoadFile(filepath.Join(fixtureDir, "var-invalid-key.tf"))
if err == nil {
t.Fatal("should have error")
}
}
func TestLoadFile_resourceArityMistake(t *testing.T) {
_, err := LoadFile(filepath.Join(fixtureDir, "resource-arity-mistake.tf"))
if err == nil {

View File

@ -0,0 +1,3 @@
variable "a" {
a = "b"
}