Add HTTP test for renew and fix muxing

This commit is contained in:
Jeff Mitchell 2016-08-08 20:01:08 -04:00
parent c86fd0353c
commit 5771a539a5
2 changed files with 60 additions and 0 deletions

View file

@ -3,6 +3,7 @@ package command
import ( import (
"testing" "testing"
"github.com/hashicorp/vault/api"
"github.com/hashicorp/vault/http" "github.com/hashicorp/vault/http"
"github.com/hashicorp/vault/meta" "github.com/hashicorp/vault/meta"
"github.com/hashicorp/vault/vault" "github.com/hashicorp/vault/vault"
@ -46,3 +47,61 @@ func TestRenew(t *testing.T) {
t.Fatalf("bad: %d\n\n%s", code, ui.ErrorWriter.String()) t.Fatalf("bad: %d\n\n%s", code, ui.ErrorWriter.String())
} }
} }
func TestRenewBothWays(t *testing.T) {
core, _, token := vault.TestCoreUnsealed(t)
ln, addr := http.TestServer(t, core)
defer ln.Close()
// write a secret with a lease
client := testClient(t, addr, token)
_, err := client.Logical().Write("secret/foo", map[string]interface{}{
"key": "value",
"ttl": "1m",
})
if err != nil {
t.Fatalf("err: %s", err)
}
// read the secret to get its lease ID
secret, err := client.Logical().Read("secret/foo")
if err != nil {
t.Fatalf("err: %s", err)
}
// Test one renew path
r := client.NewRequest("PUT", "/v1/sys/renew")
body := map[string]interface{}{
"lease_id": secret.LeaseID,
}
if err := r.SetJSONBody(body); err != nil {
t.Fatal(err)
}
resp, err := client.RawRequest(r)
if err != nil {
t.Fatal(err)
}
defer resp.Body.Close()
secret, err = api.ParseSecret(resp.Body)
if err != nil {
t.Fatal(err)
}
if secret.LeaseDuration != 60 {
t.Fatal("bad lease duration")
}
// Test the other
r = client.NewRequest("PUT", "/v1/sys/renew/"+secret.LeaseID)
resp, err = client.RawRequest(r)
if err != nil {
t.Fatal(err)
}
defer resp.Body.Close()
secret, err = api.ParseSecret(resp.Body)
if err != nil {
t.Fatal(err)
}
if secret.LeaseDuration != 60 {
t.Fatalf("bad lease duration; secret is %#v\n", *secret)
}
}

View file

@ -35,6 +35,7 @@ func Handler(core *vault.Core) http.Handler {
mux.Handle("/v1/sys/step-down", handleSysStepDown(core)) mux.Handle("/v1/sys/step-down", handleSysStepDown(core))
mux.Handle("/v1/sys/unseal", handleSysUnseal(core)) mux.Handle("/v1/sys/unseal", handleSysUnseal(core))
mux.Handle("/v1/sys/renew", handleLogical(core, false, nil)) mux.Handle("/v1/sys/renew", handleLogical(core, false, nil))
mux.Handle("/v1/sys/renew/", handleLogical(core, false, nil))
mux.Handle("/v1/sys/leader", handleSysLeader(core)) mux.Handle("/v1/sys/leader", handleSysLeader(core))
mux.Handle("/v1/sys/health", handleSysHealth(core)) mux.Handle("/v1/sys/health", handleSysHealth(core))
mux.Handle("/v1/sys/generate-root/attempt", handleSysGenerateRootAttempt(core)) mux.Handle("/v1/sys/generate-root/attempt", handleSysGenerateRootAttempt(core))