github.com/criteo-forks/consul@v1.4.5-criteonogrpc/api/operator_keyring_test.go (about) 1 package api 2 3 import ( 4 "testing" 5 6 "github.com/hashicorp/consul/testutil" 7 ) 8 9 func TestAPI_OperatorKeyringInstallListPutRemove(t *testing.T) { 10 t.Parallel() 11 oldKey := "d8wu8CSUrqgtjVsvcBPmhQ==" 12 newKey := "qxycTi/SsePj/TZzCBmNXw==" 13 c, s := makeClientWithConfig(t, nil, func(c *testutil.TestServerConfig) { 14 c.Encrypt = oldKey 15 }) 16 defer s.Stop() 17 18 operator := c.Operator() 19 if err := operator.KeyringInstall(newKey, nil); err != nil { 20 t.Fatalf("err: %v", err) 21 } 22 23 listResponses, err := operator.KeyringList(nil) 24 if err != nil { 25 t.Fatalf("err %v", err) 26 } 27 28 // Make sure the new key is installed 29 if len(listResponses) != 2 { 30 t.Fatalf("bad: %v", len(listResponses)) 31 } 32 for _, response := range listResponses { 33 if len(response.Keys) != 2 { 34 t.Fatalf("bad: %v", len(response.Keys)) 35 } 36 if _, ok := response.Keys[oldKey]; !ok { 37 t.Fatalf("bad: %v", ok) 38 } 39 if _, ok := response.Keys[newKey]; !ok { 40 t.Fatalf("bad: %v", ok) 41 } 42 } 43 44 // Switch the primary to the new key 45 if err := operator.KeyringUse(newKey, nil); err != nil { 46 t.Fatalf("err: %v", err) 47 } 48 49 if err := operator.KeyringRemove(oldKey, nil); err != nil { 50 t.Fatalf("err: %v", err) 51 } 52 53 listResponses, err = operator.KeyringList(nil) 54 if err != nil { 55 t.Fatalf("err %v", err) 56 } 57 58 // Make sure the old key is removed 59 if len(listResponses) != 2 { 60 t.Fatalf("bad: %v", len(listResponses)) 61 } 62 for _, response := range listResponses { 63 if len(response.Keys) != 1 { 64 t.Fatalf("bad: %v", len(response.Keys)) 65 } 66 if _, ok := response.Keys[oldKey]; ok { 67 t.Fatalf("bad: %v", ok) 68 } 69 if _, ok := response.Keys[newKey]; !ok { 70 t.Fatalf("bad: %v", ok) 71 } 72 } 73 }