215 lines
6.7 KiB
Go
215 lines
6.7 KiB
Go
package helmexec
|
|
|
|
import (
|
|
"bytes"
|
|
"io"
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
// Mocking the command-line runner
|
|
|
|
type mockRunner struct {
|
|
output []byte
|
|
err error
|
|
}
|
|
|
|
func (mock *mockRunner) Execute(cmd string, args []string) ([]byte, error) {
|
|
return []byte{}, nil
|
|
}
|
|
|
|
func MockExecer(writer io.Writer, kubeContext string) *execer {
|
|
execer := New(writer, kubeContext)
|
|
execer.runner = &mockRunner{}
|
|
return execer
|
|
}
|
|
|
|
// Test methods
|
|
|
|
func TestNewHelmExec(t *testing.T) {
|
|
buffer := bytes.NewBufferString("something")
|
|
helm := New(buffer, "dev")
|
|
if helm.kubeContext != "dev" {
|
|
t.Error("helmexec.New() - kubeContext")
|
|
}
|
|
if buffer.String() != "something" {
|
|
t.Error("helmexec.New() - changed buffer")
|
|
}
|
|
if len(helm.extra) != 0 {
|
|
t.Error("helmexec.New() - extra args not empty")
|
|
}
|
|
}
|
|
|
|
func Test_SetExtraArgs(t *testing.T) {
|
|
helm := New(new(bytes.Buffer), "dev")
|
|
helm.SetExtraArgs()
|
|
if len(helm.extra) != 0 {
|
|
t.Error("helmexec.SetExtraArgs() - passing no arguments should not change extra field")
|
|
}
|
|
helm.SetExtraArgs("foo")
|
|
if !reflect.DeepEqual(helm.extra, []string{"foo"}) {
|
|
t.Error("helmexec.SetExtraArgs() - one extra argument missing")
|
|
}
|
|
helm.SetExtraArgs("alpha", "beta")
|
|
if !reflect.DeepEqual(helm.extra, []string{"alpha", "beta"}) {
|
|
t.Error("helmexec.SetExtraArgs() - two extra arguments missing (overwriting the previous value)")
|
|
}
|
|
}
|
|
|
|
func Test_AddRepo(t *testing.T) {
|
|
var buffer bytes.Buffer
|
|
helm := MockExecer(&buffer, "dev")
|
|
helm.AddRepo("myRepo", "https://repo.example.com/", "cert.pem", "key.pem")
|
|
expected := "exec: helm repo add myRepo https://repo.example.com/ --cert-file cert.pem --key-file key.pem --kube-context dev\n"
|
|
if buffer.String() != expected {
|
|
t.Errorf("helmexec.AddRepo()\nactual = %v\nexpect = %v", buffer.String(), expected)
|
|
}
|
|
|
|
buffer.Reset()
|
|
helm.AddRepo("myRepo", "https://repo.example.com/", "", "")
|
|
expected = "exec: helm repo add myRepo https://repo.example.com/ --kube-context dev\n"
|
|
if buffer.String() != expected {
|
|
t.Errorf("helmexec.AddRepo()\nactual = %v\nexpect = %v", buffer.String(), expected)
|
|
}
|
|
}
|
|
|
|
func Test_UpdateRepo(t *testing.T) {
|
|
var buffer bytes.Buffer
|
|
helm := MockExecer(&buffer, "dev")
|
|
helm.UpdateRepo()
|
|
expected := "exec: helm repo update --kube-context dev\n"
|
|
if buffer.String() != expected {
|
|
t.Errorf("helmexec.UpdateRepo()\nactual = %v\nexpect = %v", buffer.String(), expected)
|
|
}
|
|
}
|
|
|
|
func Test_SyncRelease(t *testing.T) {
|
|
var buffer bytes.Buffer
|
|
helm := MockExecer(&buffer, "dev")
|
|
helm.SyncRelease("release", "chart", "--timeout 10", "--wait")
|
|
expected := "exec: helm upgrade --install --reset-values release chart --timeout 10 --wait --kube-context dev\n"
|
|
if buffer.String() != expected {
|
|
t.Errorf("helmexec.SyncRelease()\nactual = %v\nexpect = %v", buffer.String(), expected)
|
|
}
|
|
|
|
buffer.Reset()
|
|
helm.SyncRelease("release", "chart")
|
|
expected = "exec: helm upgrade --install --reset-values release chart --kube-context dev\n"
|
|
if buffer.String() != expected {
|
|
t.Errorf("helmexec.SyncRelease()\nactual = %v\nexpect = %v", buffer.String(), expected)
|
|
}
|
|
}
|
|
|
|
func Test_UpdateDeps(t *testing.T) {
|
|
var buffer bytes.Buffer
|
|
helm := MockExecer(&buffer, "dev")
|
|
helm.UpdateDeps("./chart/foo")
|
|
expected := "exec: helm dependency update ./chart/foo --kube-context dev\n"
|
|
if buffer.String() != expected {
|
|
t.Errorf("helmexec.SyncRelease()\nactual = %v\nexpect = %v", buffer.String(), expected)
|
|
}
|
|
|
|
buffer.Reset()
|
|
helm.SetExtraArgs("--verify")
|
|
helm.UpdateDeps("./chart/foo")
|
|
expected = "exec: helm dependency update ./chart/foo --verify --kube-context dev\n"
|
|
if buffer.String() != expected {
|
|
t.Errorf("helmexec.AddRepo()\nactual = %v\nexpect = %v", buffer.String(), expected)
|
|
}
|
|
}
|
|
|
|
func Test_DecryptSecret(t *testing.T) {
|
|
var buffer bytes.Buffer
|
|
helm := MockExecer(&buffer, "dev")
|
|
helm.DecryptSecret("secretName")
|
|
expected := "exec: helm secrets dec secretName --kube-context dev\n"
|
|
if buffer.String() != expected {
|
|
t.Errorf("helmexec.DecryptSecret()\nactual = %v\nexpect = %v", buffer.String(), expected)
|
|
}
|
|
}
|
|
|
|
func Test_DiffRelease(t *testing.T) {
|
|
var buffer bytes.Buffer
|
|
helm := MockExecer(&buffer, "dev")
|
|
helm.DiffRelease("release", "chart", "--timeout 10", "--wait")
|
|
expected := "exec: helm diff upgrade release chart --timeout 10 --wait --kube-context dev\n"
|
|
if buffer.String() != expected {
|
|
t.Errorf("helmexec.DiffRelease()\nactual = %v\nexpect = %v", buffer.String(), expected)
|
|
}
|
|
|
|
buffer.Reset()
|
|
helm.DiffRelease("release", "chart")
|
|
expected = "exec: helm diff upgrade release chart --kube-context dev\n"
|
|
if buffer.String() != expected {
|
|
t.Errorf("helmexec.DiffRelease()\nactual = %v\nexpect = %v", buffer.String(), expected)
|
|
}
|
|
}
|
|
|
|
func Test_DeleteRelease(t *testing.T) {
|
|
var buffer bytes.Buffer
|
|
helm := MockExecer(&buffer, "dev")
|
|
helm.DeleteRelease("release")
|
|
expected := "exec: helm delete release --kube-context dev\n"
|
|
if buffer.String() != expected {
|
|
t.Errorf("helmexec.DeleteRelease()\nactual = %v\nexpect = %v", buffer.String(), expected)
|
|
}
|
|
}
|
|
func Test_DeleteRelease_Flags(t *testing.T) {
|
|
var buffer bytes.Buffer
|
|
helm := MockExecer(&buffer, "dev")
|
|
helm.DeleteRelease("release", "--purge")
|
|
expected := "exec: helm delete release --purge --kube-context dev\n"
|
|
if buffer.String() != expected {
|
|
t.Errorf("helmexec.DeleteRelease()\nactual = %v\nexpect = %v", buffer.String(), expected)
|
|
}
|
|
}
|
|
|
|
func Test_ReleaseStatus(t *testing.T) {
|
|
var buffer bytes.Buffer
|
|
helm := MockExecer(&buffer, "dev")
|
|
helm.ReleaseStatus("myRelease")
|
|
expected := "exec: helm status myRelease --kube-context dev\n"
|
|
if buffer.String() != expected {
|
|
t.Errorf("helmexec.ReleaseStatus()\nactual = %v\nexpect = %v", buffer.String(), expected)
|
|
}
|
|
}
|
|
|
|
func Test_exec(t *testing.T) {
|
|
var buffer bytes.Buffer
|
|
helm := MockExecer(&buffer, "")
|
|
helm.exec("version")
|
|
expected := "exec: helm version\n"
|
|
if buffer.String() != expected {
|
|
t.Errorf("helmexec.exec()\nactual = %v\nexpect = %v", buffer.String(), expected)
|
|
}
|
|
|
|
helm = MockExecer(nil, "dev")
|
|
ret, _ := helm.exec("diff")
|
|
if len(ret) != 0 {
|
|
t.Error("helmexec.exec() - expected empty return value")
|
|
}
|
|
|
|
buffer.Reset()
|
|
helm = MockExecer(&buffer, "dev")
|
|
helm.exec("diff", "release", "chart", "--timeout 10", "--wait")
|
|
expected = "exec: helm diff release chart --timeout 10 --wait --kube-context dev\n"
|
|
if buffer.String() != expected {
|
|
t.Errorf("helmexec.exec()\nactual = %v\nexpect = %v", buffer.String(), expected)
|
|
}
|
|
|
|
buffer.Reset()
|
|
helm.exec("version")
|
|
expected = "exec: helm version --kube-context dev\n"
|
|
if buffer.String() != expected {
|
|
t.Errorf("helmexec.exec()\nactual = %v\nexpect = %v", buffer.String(), expected)
|
|
}
|
|
|
|
buffer.Reset()
|
|
helm.SetExtraArgs("foo")
|
|
helm.exec("version")
|
|
expected = "exec: helm version foo --kube-context dev\n"
|
|
if buffer.String() != expected {
|
|
t.Errorf("helmexec.exec()\nactual = %v\nexpect = %v", buffer.String(), expected)
|
|
}
|
|
}
|