mirror of
https://github.com/SAP/jenkins-library.git
synced 2024-12-12 10:55:20 +02:00
84 lines
1.8 KiB
Go
84 lines
1.8 KiB
Go
|
package cmd
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"github.com/SAP/jenkins-library/pkg/mock"
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
type terraformExecuteMockUtils struct {
|
||
|
*mock.ExecMockRunner
|
||
|
*mock.FilesMock
|
||
|
}
|
||
|
|
||
|
func newTerraformExecuteTestsUtils() terraformExecuteMockUtils {
|
||
|
utils := terraformExecuteMockUtils{
|
||
|
ExecMockRunner: &mock.ExecMockRunner{},
|
||
|
FilesMock: &mock.FilesMock{},
|
||
|
}
|
||
|
return utils
|
||
|
}
|
||
|
|
||
|
func TestRunTerraformExecute(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tt := []struct {
|
||
|
terraformExecuteOptions
|
||
|
expectedArgs []string
|
||
|
}{
|
||
|
{
|
||
|
terraformExecuteOptions{
|
||
|
Command: "apply",
|
||
|
}, []string{"apply", "-auto-approve"},
|
||
|
},
|
||
|
{
|
||
|
terraformExecuteOptions{
|
||
|
Command: "apply",
|
||
|
TerraformSecrets: "/tmp/test",
|
||
|
}, []string{"apply", "-auto-approve", "-var-file=/tmp/test"},
|
||
|
},
|
||
|
{
|
||
|
terraformExecuteOptions{
|
||
|
Command: "plan",
|
||
|
}, []string{"plan"},
|
||
|
},
|
||
|
{
|
||
|
terraformExecuteOptions{
|
||
|
Command: "plan",
|
||
|
TerraformSecrets: "/tmp/test",
|
||
|
}, []string{"plan", "-var-file=/tmp/test"},
|
||
|
},
|
||
|
{
|
||
|
terraformExecuteOptions{
|
||
|
Command: "plan",
|
||
|
TerraformSecrets: "/tmp/test",
|
||
|
AdditionalArgs: []string{"-arg1"},
|
||
|
}, []string{"plan", "-var-file=/tmp/test", "-arg1"},
|
||
|
},
|
||
|
{
|
||
|
terraformExecuteOptions{
|
||
|
Command: "apply",
|
||
|
TerraformSecrets: "/tmp/test",
|
||
|
AdditionalArgs: []string{"-arg1"},
|
||
|
}, []string{"apply", "-auto-approve", "-var-file=/tmp/test", "-arg1"},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for i, test := range tt {
|
||
|
t.Run(fmt.Sprintf("That arguemtns are correct %d", i), func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
// init
|
||
|
config := test.terraformExecuteOptions
|
||
|
utils := newTerraformExecuteTestsUtils()
|
||
|
|
||
|
// test
|
||
|
err := runTerraformExecute(&config, nil, utils)
|
||
|
|
||
|
// assert
|
||
|
assert.NoError(t, err)
|
||
|
assert.Equal(t, mock.ExecCall{Exec: "terraform", Params: test.expectedArgs}, utils.Calls[0])
|
||
|
})
|
||
|
}
|
||
|
}
|