From ada83992b10a5d07686be20002d46aeca286f45c Mon Sep 17 00:00:00 2001 From: Armon Dadgar Date: Wed, 11 Mar 2015 18:29:49 -0700 Subject: [PATCH] vault: testing mount/unmount --- vault/mount.go | 1 + vault/mount_test.go | 66 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) diff --git a/vault/mount.go b/vault/mount.go index 037f98d3db..c835d083ce 100644 --- a/vault/mount.go +++ b/vault/mount.go @@ -202,6 +202,7 @@ func (c *Core) unmountPath(path string) error { if newTable.Entries[i].Path == path { newTable.Entries[i], newTable.Entries[n-1] = newTable.Entries[n-1], nil newTable.Entries = newTable.Entries[:n-1] + break } } diff --git a/vault/mount_test.go b/vault/mount_test.go index 37e2d27a95..cc740a3964 100644 --- a/vault/mount_test.go +++ b/vault/mount_test.go @@ -29,6 +29,72 @@ func TestCore_DefaultMountTable(t *testing.T) { } } +func TestCore_MountEntry(t *testing.T) { + c, key := testUnsealedCore(t) + me := &MountEntry{ + Path: "foo", + Type: "generic", + } + err := c.mountEntry(me) + if err != nil { + t.Fatalf("err: %v", err) + } + + match := c.router.MatchingMount("foo/bar") + if match != "foo/" { + t.Fatalf("missing mount") + } + + conf := &CoreConfig{physical: c.physical} + c2, err := NewCore(conf) + if err != nil { + t.Fatalf("err: %v", err) + } + unseal, err := c2.Unseal(key) + if err != nil { + t.Fatalf("err: %v", err) + } + if !unseal { + t.Fatalf("should be unsealed") + } + + // Verify matching mount tables + if !reflect.DeepEqual(c.mounts, c2.mounts) { + t.Fatalf("mismatch: %v %v", c.mounts, c2.mounts) + } +} + +func TestCore_UnmountPath(t *testing.T) { + c, key := testUnsealedCore(t) + err := c.unmountPath("secret") + if err != nil { + t.Fatalf("err: %v", err) + } + + match := c.router.MatchingMount("secret/foo") + if match != "" { + t.Fatalf("backend present") + } + + conf := &CoreConfig{physical: c.physical} + c2, err := NewCore(conf) + if err != nil { + t.Fatalf("err: %v", err) + } + unseal, err := c2.Unseal(key) + if err != nil { + t.Fatalf("err: %v", err) + } + if !unseal { + t.Fatalf("should be unsealed") + } + + // Verify matching mount tables + if !reflect.DeepEqual(c.mounts, c2.mounts) { + t.Fatalf("mismatch: %v %v", c.mounts, c2.mounts) + } +} + func TestDefaultMountTable(t *testing.T) { table := defaultMountTable() verifyDefaultTable(t, table)