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 }