Merge pull request #3494 from hashicorp/enforce_json_extension
Enforce json or hcl extension to Consul config files, updated unit tests
This commit is contained in:
commit
4ced57c1f8
|
@ -174,6 +174,9 @@ func (b *Builder) ReadPath(path string) error {
|
||||||
// ReadFile parses a JSON or HCL config file and appends it to the list of
|
// ReadFile parses a JSON or HCL config file and appends it to the list of
|
||||||
// config sources.
|
// config sources.
|
||||||
func (b *Builder) ReadFile(path string) error {
|
func (b *Builder) ReadFile(path string) error {
|
||||||
|
if !strings.HasSuffix(path, ".json") && !strings.HasSuffix(path, ".hcl") {
|
||||||
|
return fmt.Errorf(`Missing or invalid file extension for %q. Please use ".json" or ".hcl".`, path)
|
||||||
|
}
|
||||||
data, err := ioutil.ReadFile(path)
|
data, err := ioutil.ReadFile(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("config: ReadFile failed on %s: %s", path, err)
|
return fmt.Errorf("config: ReadFile failed on %s: %s", path, err)
|
||||||
|
|
|
@ -7,6 +7,9 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
|
||||||
"github.com/hashicorp/consul/testutil"
|
"github.com/hashicorp/consul/testutil"
|
||||||
"github.com/hashicorp/serf/serf"
|
"github.com/hashicorp/serf/serf"
|
||||||
)
|
)
|
||||||
|
@ -57,11 +60,14 @@ func TestAPI_AgentReload(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
// Create our initial empty config file, to be overwritten later
|
// Create our initial empty config file, to be overwritten later
|
||||||
configFile := testutil.TempFile(t, "reload")
|
cfgDir := testutil.TempDir(t, "consul-config")
|
||||||
if _, err := configFile.Write([]byte("{}")); err != nil {
|
defer os.RemoveAll(cfgDir)
|
||||||
t.Fatalf("err: %s", err)
|
|
||||||
|
cfgFilePath := filepath.Join(cfgDir, "reload.json")
|
||||||
|
configFile, err := os.Create(cfgFilePath)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Unable to create file %v, got error:%v", cfgFilePath, err)
|
||||||
}
|
}
|
||||||
configFile.Close()
|
|
||||||
|
|
||||||
c, s := makeClientWithConfig(t, nil, func(conf *testutil.TestServerConfig) {
|
c, s := makeClientWithConfig(t, nil, func(conf *testutil.TestServerConfig) {
|
||||||
conf.Args = []string{"-config-file", configFile.Name()}
|
conf.Args = []string{"-config-file", configFile.Name()}
|
||||||
|
@ -72,7 +78,7 @@ func TestAPI_AgentReload(t *testing.T) {
|
||||||
|
|
||||||
// Update the config file with a service definition
|
// Update the config file with a service definition
|
||||||
config := `{"service":{"name":"redis", "port":1234}}`
|
config := `{"service":{"name":"redis", "port":1234}}`
|
||||||
err := ioutil.WriteFile(configFile.Name(), []byte(config), 0644)
|
err = ioutil.WriteFile(configFile.Name(), []byte(config), 0644)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -229,11 +229,17 @@ func TestProtectDataDir(t *testing.T) {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
cfgFile := testutil.TempFile(t, "consul")
|
cfgDir := testutil.TempDir(t, "consul-config")
|
||||||
defer os.Remove(cfgFile.Name())
|
defer os.RemoveAll(cfgDir)
|
||||||
|
|
||||||
|
cfgFilePath := filepath.Join(cfgDir, "consul.json")
|
||||||
|
cfgFile, err := os.Create(cfgFilePath)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Unable to create file %v, got error:%v", cfgFilePath, err)
|
||||||
|
}
|
||||||
|
|
||||||
content := fmt.Sprintf(`{"server": true, "bind_addr" : "10.0.0.1", "data_dir": "%s"}`, dir)
|
content := fmt.Sprintf(`{"server": true, "bind_addr" : "10.0.0.1", "data_dir": "%s"}`, dir)
|
||||||
_, err := cfgFile.Write([]byte(content))
|
_, err = cfgFile.Write([]byte(content))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue