agent: reject config with invalid options
This commit is contained in:
parent
92e9e138b9
commit
25fb18b1cf
|
@ -335,6 +335,13 @@ type Config struct {
|
|||
|
||||
// WatchPlans contains the compiled watches
|
||||
WatchPlans []*watch.WatchPlan `mapstructure:"-" json:"-"`
|
||||
|
||||
// Allow the following fields to be present in configuration files without
|
||||
// mapstructure erroring on them.
|
||||
_ interface{} `mapstructure:"services"`
|
||||
_ interface{} `mapstructure:"checks"`
|
||||
_ interface{} `mapstructure:"service"`
|
||||
_ interface{} `mapstructure:"check"`
|
||||
}
|
||||
|
||||
type dirEnts []os.FileInfo
|
||||
|
@ -463,8 +470,9 @@ func DecodeConfig(r io.Reader) (*Config, error) {
|
|||
// Decode
|
||||
var md mapstructure.Metadata
|
||||
msdec, err := mapstructure.NewDecoder(&mapstructure.DecoderConfig{
|
||||
Metadata: &md,
|
||||
Result: &result,
|
||||
Metadata: &md,
|
||||
Result: &result,
|
||||
ErrorUnused: true,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
|
@ -7,6 +7,7 @@ import (
|
|||
"os"
|
||||
"path/filepath"
|
||||
"reflect"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
@ -591,6 +592,14 @@ func TestDecodeConfig(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestDecodeConfig_invalidKeys(t *testing.T) {
|
||||
input := `{"bad": "no way jose"}`
|
||||
_, err := DecodeConfig(bytes.NewReader([]byte(input)))
|
||||
if err == nil || !strings.Contains(err.Error(), "invalid keys") {
|
||||
t.Fatalf("should have rejected invalid config keys")
|
||||
}
|
||||
}
|
||||
|
||||
func TestDecodeConfig_Services(t *testing.T) {
|
||||
input := `{
|
||||
"services": [
|
||||
|
|
Loading…
Reference in New Issue