github.com/hamersaw/flytestdlib@v0.2.28/config/tests/config_cmd_test.go (about) 1 package tests 2 3 import ( 4 "bytes" 5 "fmt" 6 "os" 7 "testing" 8 9 "github.com/lyft/flytestdlib/config" 10 11 "github.com/spf13/cobra" 12 "github.com/stretchr/testify/assert" 13 ) 14 15 func executeCommand(root *cobra.Command, args ...string) (output string, err error) { 16 _, output, err = executeCommandC(root, args...) 17 return output, err 18 } 19 20 func executeCommandC(root *cobra.Command, args ...string) (c *cobra.Command, output string, err error) { 21 buf := new(bytes.Buffer) 22 root.SetOutput(buf) 23 root.SetArgs(args) 24 25 c, err = root.ExecuteC() 26 27 return c, buf.String(), err 28 } 29 30 func TestDiscoverCommand(t *testing.T) { 31 for _, provider := range providers { 32 t.Run(fmt.Sprintf(testNameFormatter, provider(config.Options{}).ID(), "No config file"), func(t *testing.T) { 33 cmd := config.NewConfigCommand(provider) 34 output, err := executeCommand(cmd, config.CommandDiscover) 35 assert.NoError(t, err) 36 assert.Contains(t, output, "Couldn't find a config file.") 37 }) 38 39 t.Run(fmt.Sprintf(testNameFormatter, provider(config.Options{}).ID(), "Valid config file"), func(t *testing.T) { 40 dir, err := os.Getwd() 41 assert.NoError(t, err) 42 wd := os.ExpandEnv("$PWD/testdata") 43 err = os.Chdir(wd) 44 assert.NoError(t, err) 45 defer func() { assert.NoError(t, os.Chdir(dir)) }() 46 47 cmd := config.NewConfigCommand(provider) 48 output, err := executeCommand(cmd, config.CommandDiscover) 49 assert.NoError(t, err) 50 assert.Contains(t, output, "Config") 51 }) 52 } 53 } 54 55 func TestValidateCommand(t *testing.T) { 56 for _, provider := range providers { 57 t.Run(fmt.Sprintf(testNameFormatter, provider(config.Options{}).ID(), "No config file"), func(t *testing.T) { 58 cmd := config.NewConfigCommand(provider) 59 output, err := executeCommand(cmd, config.CommandValidate) 60 assert.NoError(t, err) 61 assert.Contains(t, output, "Couldn't find a config file.") 62 }) 63 64 t.Run(fmt.Sprintf(testNameFormatter, provider(config.Options{}).ID(), "Invalid Config file"), func(t *testing.T) { 65 dir, err := os.Getwd() 66 assert.NoError(t, err) 67 wd := os.ExpandEnv("$PWD/testdata") 68 err = os.Chdir(wd) 69 assert.NoError(t, err) 70 defer func() { assert.NoError(t, os.Chdir(dir)) }() 71 72 cmd := config.NewConfigCommand(provider) 73 output, err := executeCommand(cmd, config.CommandValidate, "--file=bad_config.yaml", "--strict") 74 assert.Error(t, err) 75 assert.Contains(t, output, "Failed") 76 }) 77 78 t.Run(fmt.Sprintf(testNameFormatter, provider(config.Options{}).ID(), "Valid config file"), func(t *testing.T) { 79 dir, err := os.Getwd() 80 assert.NoError(t, err) 81 wd := os.ExpandEnv("$PWD/testdata") 82 err = os.Chdir(wd) 83 assert.NoError(t, err) 84 defer func() { assert.NoError(t, os.Chdir(dir)) }() 85 86 cmd := config.NewConfigCommand(provider) 87 output, err := executeCommand(cmd, config.CommandValidate) 88 assert.NoError(t, err) 89 assert.Contains(t, output, "successfully") 90 }) 91 } 92 }