compose/ecs/secrets/main_test.go

106 lines
2.3 KiB
Go

package main
import (
"io/ioutil"
"os"
"path/filepath"
"testing"
"gotest.tools/v3/assert"
"gotest.tools/v3/fs"
)
func TestParseSecrets(t *testing.T) {
secrets := parseInput([]string{
"foo",
"bar:*",
"zot:key0,key1",
})
assert.Check(t, len(secrets) == 3)
assert.Check(t, secrets[0].name == "foo")
assert.Check(t, secrets[0].keys == nil)
assert.Check(t, secrets[1].name == "bar")
assert.Check(t, len(secrets[1].keys) == 1)
assert.Check(t, secrets[1].keys[0] == "*")
assert.Check(t, secrets[2].name == "zot")
assert.Check(t, len(secrets[2].keys) == 2)
assert.Check(t, secrets[2].keys[0] == "key0")
assert.Check(t, secrets[2].keys[1] == "key1")
}
func TestRawSecret(t *testing.T) {
dir := fs.NewDir(t, "secrets").Path()
os.Setenv("raw", "something_secret")
defer os.Unsetenv("raw")
err := createSecretFiles(secret{
name: "raw",
keys: nil,
}, dir)
assert.NilError(t, err)
file, err := ioutil.ReadFile(filepath.Join(dir, "raw"))
assert.NilError(t, err)
content := string(file)
assert.Equal(t, content, "something_secret")
}
func TestSelectedKeysSecret(t *testing.T) {
dir := fs.NewDir(t, "secrets").Path()
os.Setenv("json", `
{
"foo": "bar",
"zot": "qix"
}`)
defer os.Unsetenv("json")
err := createSecretFiles(secret{
name: "json",
keys: []string{"foo"},
}, dir)
assert.NilError(t, err)
file, err := ioutil.ReadFile(filepath.Join(dir, "json", "foo"))
assert.NilError(t, err)
content := string(file)
assert.Equal(t, content, "bar")
_, err = os.Stat(filepath.Join(dir, "json", "zot"))
assert.Check(t, os.IsNotExist(err))
}
func TestAllKeysSecret(t *testing.T) {
dir := fs.NewDir(t, "secrets").Path()
os.Setenv("json", `
{
"foo": "bar",
"zot": "qix"
}`)
defer os.Unsetenv("json")
err := createSecretFiles(secret{
name: "json",
keys: []string{"*"},
}, dir)
assert.NilError(t, err)
file, err := ioutil.ReadFile(filepath.Join(dir, "json", "foo"))
assert.NilError(t, err)
content := string(file)
assert.Equal(t, content, "bar")
file, err = ioutil.ReadFile(filepath.Join(dir, "json", "zot"))
assert.NilError(t, err)
content = string(file)
assert.Equal(t, content, "qix")
}
func TestUnknownSecret(t *testing.T) {
dir := fs.NewDir(t, "secrets").Path()
err := createSecretFiles(secret{
name: "not_set",
keys: nil,
}, dir)
assert.Check(t, err != nil)
}