package cmd
import (
"bytes"
"fmt"
"io/ioutil"
"os"
"strings"
"testing"
"github.com/go-openapi/swag"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
"github.com/vmware/dispatch/pkg/api/v1"
"github.com/vmware/dispatch/pkg/client/mocks"
)
func TestCmdCreate(t *testing.T) {
var buf bytes.Buffer
path := createConfig(t, "")
defer os.Remove(path)
cli := NewCLI(os.Stdin, &buf, &buf)
cli.SetOutput(&buf)
cli.SetArgs([]string{fmt.Sprintf("--config=%s", path), "create"})
err := cli.Execute()
assert.Nil(t, err)
assert.True(t, strings.Contains(buf.String(), "Create a resource"))
}
var secretSeed = `kind: Secret
name: open-sesame
secrets:
password: OpenSesame
tags:
- key: role
value: test`
func TestCreateBatchSecret(t *testing.T) {
var stdout, stderr bytes.Buffer
cli := NewCLI(os.Stdin, &stdout, &stderr)
tmpfile, err := ioutil.TempFile("", "seed")
assert.NoError(t, err)
defer os.Remove(tmpfile.Name())
_, err = tmpfile.Write([]byte(secretSeed))
assert.NoError(t, err)
sc := &mocks.SecretsClient{}
createMap := map[string]ModelAction{
v1.SecretKind: CallCreateSecret(sc),
}
secret := &v1.Secret{
Kind: v1.SecretKind,
Name: swag.String("open-sesame"),
Secrets: map[string]string{"password": "OpenSesame"},
Tags: []*v1.Tag{&v1.Tag{Key: "role", Value: "test"}},
}
sc.On("CreateSecret", mock.Anything, mock.Anything, secret).Once().Return(secret, nil)
file = tmpfile.Name()
err = importFile(&stdout, &stderr, cli, nil, createMap, "Created")
assert.Nil(t, err)
}