open-consul/command/validate_test.go
Frank Schroeder eedf0f3ac5 test: add helper for ioutil.TempDir/TempFile
This creates a simplified helper for temporary directories and files.
All path names are prefixed with the name of the current test.
All files and directories are stored either in /tmp/consul-test
or /tmp if the former could not be created.

Using the system temp dir breaks some tests on macOS where the unix
socket path becomes too long.
2017-05-12 22:12:47 +02:00

124 lines
2.5 KiB
Go

package command
import (
"io/ioutil"
"os"
"path/filepath"
"testing"
"github.com/hashicorp/consul/command/base"
"github.com/hashicorp/consul/testutil"
"github.com/mitchellh/cli"
)
func testValidateCommand(t *testing.T) (*cli.MockUi, *ValidateCommand) {
ui := new(cli.MockUi)
return ui, &ValidateCommand{
Command: base.Command{
UI: ui,
Flags: base.FlagSetNone,
},
}
}
func TestValidateCommand_implements(t *testing.T) {
var _ cli.Command = &ValidateCommand{}
}
func TestValidateCommandFailOnEmptyFile(t *testing.T) {
tmpFile := testutil.TempFile(t, "consul")
defer os.RemoveAll(tmpFile.Name())
_, cmd := testValidateCommand(t)
args := []string{tmpFile.Name()}
if code := cmd.Run(args); code == 0 {
t.Fatalf("bad: %d", code)
}
}
func TestValidateCommandSucceedOnEmptyDir(t *testing.T) {
td := testutil.TempDir(t, "consul")
defer os.RemoveAll(td)
ui, cmd := testValidateCommand(t)
args := []string{td}
if code := cmd.Run(args); code != 0 {
t.Fatalf("bad: %d, %s", code, ui.ErrorWriter.String())
}
}
func TestValidateCommandSucceedOnMinimalConfigFile(t *testing.T) {
td := testutil.TempDir(t, "consul")
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 := testValidateCommand(t)
args := []string{fp}
if code := cmd.Run(args); code != 0 {
t.Fatalf("bad: %d", code)
}
}
func TestValidateCommandSucceedOnMinimalConfigDir(t *testing.T) {
td := testutil.TempDir(t, "consul")
defer os.RemoveAll(td)
err := ioutil.WriteFile(filepath.Join(td, "config.json"), []byte(`{}`), 0644)
if err != nil {
t.Fatalf("err: %s", err)
}
_, cmd := testValidateCommand(t)
args := []string{td}
if code := cmd.Run(args); code != 0 {
t.Fatalf("bad: %d", code)
}
}
func TestValidateCommandSucceedOnConfigDirWithEmptyFile(t *testing.T) {
td := testutil.TempDir(t, "consul")
defer os.RemoveAll(td)
err := ioutil.WriteFile(filepath.Join(td, "config.json"), []byte{}, 0644)
if err != nil {
t.Fatalf("err: %s", err)
}
_, cmd := testValidateCommand(t)
args := []string{td}
if code := cmd.Run(args); code != 0 {
t.Fatalf("bad: %d", code)
}
}
func TestValidateCommandQuiet(t *testing.T) {
td := testutil.TempDir(t, "consul")
defer os.RemoveAll(td)
ui, cmd := testValidateCommand(t)
args := []string{"-quiet", td}
if code := cmd.Run(args); code != 0 {
t.Fatalf("bad: %d, %s", code, ui.ErrorWriter.String())
}
if ui.OutputWriter.String() != "<nil>" {
t.Fatalf("bad: %v", ui.OutputWriter.String())
}
}