linkerd2/cli/cmd/inject_test.go

98 lines
2.8 KiB
Go
Executable File

package cmd
import (
"bufio"
"bytes"
"fmt"
"io/ioutil"
"os"
"testing"
)
func TestInjectYAML(t *testing.T) {
testInjectVersion := "testinjectversion"
testCases := []struct {
inputFileName string
goldenFileName string
}{
{"inject_emojivoto_deployment.input.yml", "inject_emojivoto_deployment.golden.yml"},
{"inject_emojivoto_deployment_hostNetwork_false.input.yml", "inject_emojivoto_deployment_hostNetwork_false.golden.yml"},
{"inject_emojivoto_deployment_hostNetwork_true.input.yml", "inject_emojivoto_deployment_hostNetwork_true.golden.yml"},
{"inject_emojivoto_deployment_controller_name.input.yml", "inject_emojivoto_deployment_controller_name.golden.yml"},
}
for i, tc := range testCases {
t.Run(fmt.Sprintf("%d: %s", i, tc.inputFileName), func(t *testing.T) {
file, err := os.Open("testdata/" + tc.inputFileName)
if err != nil {
t.Errorf("error opening test input file: %v\n", err)
}
read := bufio.NewReader(file)
output := new(bytes.Buffer)
err = InjectYAML(read, output, testInjectVersion)
if err != nil {
t.Errorf("Unexpected error injecting YAML: %v\n", err)
}
actualOutput := output.String()
goldenFileBytes, err := ioutil.ReadFile("testdata/" + tc.goldenFileName)
if err != nil {
t.Fatalf("Unexpected error: %v", err)
}
expectedOutput := string(goldenFileBytes)
diffCompare(t, actualOutput, expectedOutput)
})
}
}
func TestRunInjectCmd(t *testing.T) {
testInjectVersion := "testinjectversion"
testCases := []struct {
inputFileName string
stdErrGoldenFileName string
stdOutGoldenFileName string
exitCode int
}{
{
inputFileName: "inject_gettest_deployment.bad.input.yml",
stdErrGoldenFileName: "inject_gettest_deployment.bad.golden",
exitCode: 1,
},
{
inputFileName: "inject_gettest_deployment.good.input.yml",
stdOutGoldenFileName: "inject_gettest_deployment.good.golden.yml",
exitCode: 0,
},
}
for i, tc := range testCases {
t.Run(fmt.Sprintf("%d: %s", i, tc.inputFileName), func(t *testing.T) {
errBuffer := &bytes.Buffer{}
outBuffer := &bytes.Buffer{}
in, err := os.Open(fmt.Sprintf("testdata/%s", tc.inputFileName))
if err != nil {
t.Fatalf("Unexpected error: %v", err)
}
exitCode := runInjectCmd(in, errBuffer, outBuffer, testInjectVersion)
if exitCode != tc.exitCode {
t.Fatalf("Expected exit code to be %d but got: %d", tc.exitCode, exitCode)
}
actualStdOutResult := outBuffer.String()
expectedStdOutResult := readOptionalTestFile(t, tc.stdOutGoldenFileName)
diffCompare(t, actualStdOutResult, expectedStdOutResult)
actualStdErrResult := errBuffer.String()
expectedStdErrResult := readOptionalTestFile(t, tc.stdErrGoldenFileName)
diffCompare(t, actualStdErrResult, expectedStdErrResult)
})
}
}