package command import ( "io/ioutil" "os" "path/filepath" "testing" "github.com/mitchellh/cli" ) func TestConfigTestCommand_implements(t *testing.T) { var _ cli.Command = &ConfigTestCommand{} } func TestConfigTestCommandFailOnEmptyFile(t *testing.T) { tmpFile, err := ioutil.TempFile("", "consul") if err != nil { t.Fatalf("err: %s", err) } defer os.RemoveAll(tmpFile.Name()) cmd := &ConfigTestCommand{ Ui: new(cli.MockUi), } args := []string{ "-config-file", tmpFile.Name(), } if code := cmd.Run(args); code == 0 { t.Fatalf("bad: %d", code) } } func TestConfigTestCommandSucceedOnEmptyDir(t *testing.T) { td, err := ioutil.TempDir("", "consul") if err != nil { t.Fatalf("err: %s", err) } defer os.RemoveAll(td) cmd := &ConfigTestCommand{ Ui: new(cli.MockUi), } args := []string{ "-config-dir", td, } if code := cmd.Run(args); code != 0 { t.Fatalf("bad: %d", code) } } func TestConfigTestCommandSucceedOnMinimalConfigFile(t *testing.T) { td, err := ioutil.TempDir("", "consul") if err != nil { t.Fatalf("err: %s", err) } defer os.RemoveAll(td) fp := filepath.Join(td, "config.json") err = ioutil.WriteFile(fp, []byte(`{}`), 0644) if err != nil { t.Fatalf("err: %s", err) } cmd := &ConfigTestCommand{ Ui: new(cli.MockUi), } args := []string{ "-config-file", fp, } if code := cmd.Run(args); code != 0 { t.Fatalf("bad: %d", code) } } func TestConfigTestCommandSucceedOnMinimalConfigDir(t *testing.T) { td, err := ioutil.TempDir("", "consul") if err != nil { t.Fatalf("err: %s", err) } defer os.RemoveAll(td) err = ioutil.WriteFile(filepath.Join(td, "config.json"), []byte(`{}`), 0644) if err != nil { t.Fatalf("err: %s", err) } cmd := &ConfigTestCommand{ Ui: new(cli.MockUi), } args := []string{ "-config-dir", td, } if code := cmd.Run(args); code != 0 { t.Fatalf("bad: %d", code) } } func TestConfigTestCommandSucceedOnConfigDirWithEmptyFile(t *testing.T) { td, err := ioutil.TempDir("", "consul") if err != nil { t.Fatalf("err: %s", err) } defer os.RemoveAll(td) err = ioutil.WriteFile(filepath.Join(td, "config.json"), []byte{}, 0644) if err != nil { t.Fatalf("err: %s", err) } cmd := &ConfigTestCommand{ Ui: new(cli.MockUi), } args := []string{ "-config-dir", td, } if code := cmd.Run(args); code != 0 { t.Fatalf("bad: %d", code) } }