106 lines
2.3 KiB
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)
|
|
}
|