vault/command/agent/cache/keymanager/passthrough_test.go
Theron Voran ebcdae1f34
agent: persistent caching support (#10938)
Adds the option of a write-through cache, backed by boltdb

Co-authored-by: Theron Voran <tvoran@users.noreply.github.com>
Co-authored-by: Jason O'Donnell <2160810+jasonodonnell@users.noreply.github.com>
Co-authored-by: Calvin Leung Huang <cleung2010@gmail.com>
2021-03-03 14:01:33 -08:00

57 lines
972 B
Go

package keymanager
import (
"bytes"
"testing"
"github.com/stretchr/testify/require"
)
func TestKeyManager_PassthrougKeyManager(t *testing.T) {
tests := []struct {
name string
key []byte
wantErr bool
}{
{
"new key",
nil,
false,
},
{
"existing valid key",
[]byte("e679e2f3d8d0e489d408bc617c6890d6"),
false,
},
{
"invalid key length",
[]byte("foobar"),
true,
},
}
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
m, err := NewPassthroughKeyManager(tc.key)
if tc.wantErr {
require.Error(t, err)
return
}
require.NoError(t, err)
if w := m.Wrapper(); w == nil {
t.Fatalf("expected non-nil wrapper from the key manager")
}
token, err := m.RetrievalToken()
if err != nil {
t.Fatalf("unable to retrieve token: %s", err)
}
if len(tc.key) != 0 && !bytes.Equal(tc.key, token) {
t.Fatalf("expected key bytes: %x, got: %x", tc.key, token)
}
})
}
}