github.com/sl1pm4t/consul@v1.4.5-0.20190325224627-74c31c540f9c/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  }