command: fixing test cases for keyring

This commit is contained in:
Ryan Uber 2014-09-29 09:31:55 -07:00
parent 30f5f06dfe
commit 52582e7365
1 changed files with 53 additions and 104 deletions

View File

@ -284,19 +284,16 @@ OUTER2:
func TestRPCClientListKeys(t *testing.T) { func TestRPCClientListKeys(t *testing.T) {
key1 := "tbLJg26ZJyJ9pK3qhc9jig==" key1 := "tbLJg26ZJyJ9pK3qhc9jig=="
conf := Config{EncryptKey: key1} conf := Config{EncryptKey: key1, Datacenter: "dc1"}
p1 := testRPCClientWithConfig(t, &conf) p1 := testRPCClientWithConfig(t, &conf)
defer p1.Close() defer p1.Close()
// Check WAN keys // Key is initially installed to both wan/lan
keys := listKeys(t, p1.client, false) keys := listKeys(t, p1.client)
if _, ok := keys[key1]; !ok { if _, ok := keys["dc1"][key1]; !ok {
t.Fatalf("bad: %#v", keys) t.Fatalf("bad: %#v", keys)
} }
if _, ok := keys["wan"][key1]; !ok {
// Check LAN keys
keys = listKeys(t, p1.client, true)
if _, ok := keys[key1]; !ok {
t.Fatalf("bad: %#v", keys) t.Fatalf("bad: %#v", keys)
} }
} }
@ -308,74 +305,64 @@ func TestRPCClientInstallKey(t *testing.T) {
p1 := testRPCClientWithConfig(t, &conf) p1 := testRPCClientWithConfig(t, &conf)
defer p1.Close() defer p1.Close()
// Test WAN keys // key2 is not installed yet
keys := listKeys(t, p1.client, true) keys := listKeys(t, p1.client)
if _, ok := keys[key2]; ok { if num, ok := keys["dc1"][key2]; ok || num != 0 {
t.Fatalf("bad: %#v", keys)
}
if num, ok := keys["wan"][key2]; ok || num != 0 {
t.Fatalf("bad: %#v", keys) t.Fatalf("bad: %#v", keys)
} }
installKey(t, p1.client, key2, true) // install key2
if _, err := p1.client.InstallKey(key2); err != nil {
keys = listKeys(t, p1.client, true) t.Fatalf("err: %s", err)
if _, ok := keys[key2]; !ok {
t.Fatalf("bad: %#v", keys)
} }
// Test LAN keys // key2 should now be installed
keys = listKeys(t, p1.client, false) keys = listKeys(t, p1.client)
if _, ok := keys[key2]; ok { if num, ok := keys["dc1"][key2]; !ok || num != 1 {
t.Fatalf("bad: %#v", keys) t.Fatalf("bad: %#v", keys)
} }
if num, ok := keys["wan"][key2]; !ok || num != 1 {
installKey(t, p1.client, key2, false)
keys = listKeys(t, p1.client, false)
if _, ok := keys[key2]; !ok {
t.Fatalf("bad: %#v", keys) t.Fatalf("bad: %#v", keys)
} }
} }
func TestRPCClientRotateKey(t *testing.T) { func TestRPCClientUseKey(t *testing.T) {
key1 := "tbLJg26ZJyJ9pK3qhc9jig==" key1 := "tbLJg26ZJyJ9pK3qhc9jig=="
key2 := "xAEZ3uVHRMZD9GcYMZaRQw==" key2 := "xAEZ3uVHRMZD9GcYMZaRQw=="
conf := Config{EncryptKey: key1} conf := Config{EncryptKey: key1}
p1 := testRPCClientWithConfig(t, &conf) p1 := testRPCClientWithConfig(t, &conf)
defer p1.Close() defer p1.Close()
// Test WAN keys // add a second key to the ring
keys := listKeys(t, p1.client, true) if _, err := p1.client.InstallKey(key2); err != nil {
if _, ok := keys[key2]; ok { t.Fatalf("err: %s", err)
}
// key2 is installed
keys := listKeys(t, p1.client)
if num, ok := keys["dc1"][key2]; !ok || num != 1 {
t.Fatalf("bad: %#v", keys)
}
if num, ok := keys["wan"][key2]; !ok || num != 1 {
t.Fatalf("bad: %#v", keys) t.Fatalf("bad: %#v", keys)
} }
installKey(t, p1.client, key2, true) // can't remove key1 yet
useKey(t, p1.client, key2, true) if _, err := p1.client.RemoveKey(key1); err == nil {
removeKey(t, p1.client, key1, true) t.Fatalf("expected error removing primary key")
keys = listKeys(t, p1.client, true)
if _, ok := keys[key1]; ok {
t.Fatalf("bad: %#v", keys)
}
if _, ok := keys[key2]; !ok {
t.Fatalf("bad: %#v", keys)
} }
// Test LAN keys // change primary key
keys = listKeys(t, p1.client, false) if _, err := p1.client.UseKey(key2); err != nil {
if _, ok := keys[key2]; ok { t.Fatalf("err: %s", err)
t.Fatalf("bad: %#v", keys)
} }
installKey(t, p1.client, key2, false) // can remove key1 now
useKey(t, p1.client, key2, false) if _, err := p1.client.RemoveKey(key1); err != nil {
removeKey(t, p1.client, key1, false) t.Fatalf("err: %s", err)
keys = listKeys(t, p1.client, false)
if _, ok := keys[key1]; ok {
t.Fatalf("bad: %#v", keys)
}
if _, ok := keys[key2]; !ok {
t.Fatalf("bad: %#v", keys)
} }
} }
@ -383,66 +370,28 @@ func TestRPCClientKeyOperation_encryptionDisabled(t *testing.T) {
p1 := testRPCClient(t) p1 := testRPCClient(t)
defer p1.Close() defer p1.Close()
_, _, failures, err := p1.client.ListKeysLAN() r, err := p1.client.ListKeys()
if err == nil { if err == nil {
t.Fatalf("no error listing keys with encryption disabled") t.Fatalf("no error listing keys with encryption disabled")
} }
if len(failures) != 1 { if len(r.Messages) != 1 {
t.Fatalf("bad: %#v", failures) t.Fatalf("bad: %#v", r)
} }
} }
func listKeys(t *testing.T, c *RPCClient, wan bool) (keys map[string]int) { func listKeys(t *testing.T, c *RPCClient) map[string]map[string]int {
var err error resp, err := c.ListKeys()
if wan {
keys, _, _, err = c.ListKeysWAN()
} else {
keys, _, _, err = c.ListKeysLAN()
}
if err != nil {
t.Fatalf("err: %s", err)
}
return
}
func installKey(t *testing.T, c *RPCClient, key string, wan bool) {
var err error
if wan {
_, err = c.InstallKeyWAN(key)
} else {
_, err = c.InstallKeyLAN(key)
}
if err != nil {
t.Fatalf("err: %s", err)
}
}
func useKey(t *testing.T, c *RPCClient, key string, wan bool) {
var err error
if wan {
_, err = c.UseKeyWAN(key)
} else {
_, err = c.UseKeyLAN(key)
}
if err != nil {
t.Fatalf("err: %s", err)
}
}
func removeKey(t *testing.T, c *RPCClient, key string, wan bool) {
var err error
if wan {
_, err = c.RemoveKeyWAN(key)
} else {
_, err = c.RemoveKeyLAN(key)
}
if err != nil { if err != nil {
t.Fatalf("err: %s", err) t.Fatalf("err: %s", err)
} }
out := make(map[string]map[string]int)
for _, k := range resp.Keys {
respID := k.Datacenter
if k.Pool == "WAN" {
respID = "wan"
}
out[respID] = map[string]int{k.Key: k.Count}
}
return out
} }