github.com/lyft/flytestdlib@v0.3.12-0.20210213045714-8cdd111ecda1/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  }