1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
package persist
import (
"testing"
"github.com/cloudflare/redoctober/config"
"github.com/cloudflare/redoctober/passvault"
)
func TestNewNull(t *testing.T) {
cfg := &config.Delegations{
Persist: false,
Mechanism: FileMechanism,
Location: "testdata/store.bin",
Policy: "policy",
}
store, err := New(cfg)
if err != nil {
t.Fatalf("persist: failed to create a new store: %s", err)
}
if _, ok := store.(*Null); !ok {
t.Fatalf("persist: expected a Null store, but have %T", store)
}
if store.Blob() != nil {
t.Fatalf("persist: Null store should return an empty blob")
}
if store.Policy() != cfg.Policy {
t.Fatalf("persist: expected a consistent policy")
}
if err := store.Store([]byte("test data")); err != nil {
t.Fatalf("persist: Null.Store failed with %s", err)
}
if err := store.Load(); err != nil {
t.Fatalf("persist: Null.Load failed with %s", err)
}
status := store.Status()
if status.State != Disabled {
t.Fatalf("persist: Null store should never persist")
}
if len(status.Summary) != 0 {
t.Fatal("persist: Null summary should have zero entries")
}
err = store.Delegate(passvault.PasswordRecord{}, "name", "password", []string{}, []string{}, 1, "", "1h")
if err == nil {
t.Fatal("persist: expected delegation to fail")
}
if cache := store.Cache(); len(cache.UserKeys) != 0 {
t.Fatal("persist: Null Cache() should return an empty cache")
}
if store.Purge() != nil {
t.Fatal("persist: Null Purge() shouldn't return an error")
}
}
|