github.com/hashicorp/nomad/api@v0.0.0-20240306165712-3193ac204f65/keyring_test.go (about)

     1  // Copyright (c) HashiCorp, Inc.
     2  // SPDX-License-Identifier: MPL-2.0
     3  
     4  package api
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/hashicorp/nomad/api/internal/testutil"
    10  	"github.com/shoenig/test/must"
    11  )
    12  
    13  func TestKeyring_CRUD(t *testing.T) {
    14  	testutil.Parallel(t)
    15  
    16  	c, s := makeClient(t, nil, nil)
    17  	defer s.Stop()
    18  
    19  	kr := c.Keyring()
    20  
    21  	// Find the bootstrap key
    22  	keys, qm, err := kr.List(nil)
    23  	must.NoError(t, err)
    24  	assertQueryMeta(t, qm)
    25  	must.Len(t, 1, keys)
    26  	oldKeyID := keys[0].KeyID
    27  
    28  	// Create a key by requesting a rotation
    29  	key, wm, err := kr.Rotate(nil, nil)
    30  	must.NoError(t, err)
    31  	must.NotNil(t, key)
    32  	assertWriteMeta(t, wm)
    33  
    34  	// Read all the keys
    35  	keys, qm, err = kr.List(&QueryOptions{WaitIndex: key.CreateIndex})
    36  	must.NoError(t, err)
    37  	assertQueryMeta(t, qm)
    38  	must.Len(t, 2, keys)
    39  
    40  	// Delete the old key
    41  	wm, err = kr.Delete(&KeyringDeleteOptions{KeyID: oldKeyID}, nil)
    42  	must.NoError(t, err)
    43  	assertWriteMeta(t, wm)
    44  
    45  	// Read all the keys back
    46  	keys, qm, err = kr.List(&QueryOptions{WaitIndex: key.CreateIndex})
    47  	must.NoError(t, err)
    48  	assertQueryMeta(t, qm)
    49  	must.Len(t, 1, keys)
    50  	must.Eq(t, key.KeyID, keys[0].KeyID)
    51  	must.Eq(t, RootKeyState(RootKeyStateActive), keys[0].State)
    52  }