github.com/maenmax/kairep@v0.0.0-20210218001208-55bf3df36788/src/golang.org/x/crypto/ssh/agent/keyring_test.go (about) 1 // Copyright 2015 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package agent 6 7 import ( 8 "testing" 9 ) 10 11 func addTestKey(t *testing.T, a Agent, keyName string) { 12 err := a.Add(AddedKey{ 13 PrivateKey: testPrivateKeys[keyName], 14 Comment: keyName, 15 }) 16 if err != nil { 17 t.Fatalf("failed to add key %q: %v", keyName, err) 18 } 19 } 20 21 func removeTestKey(t *testing.T, a Agent, keyName string) { 22 err := a.Remove(testPublicKeys[keyName]) 23 if err != nil { 24 t.Fatalf("failed to remove key %q: %v", keyName, err) 25 } 26 } 27 28 func validateListedKeys(t *testing.T, a Agent, expectedKeys []string) { 29 listedKeys, err := a.List() 30 if err != nil { 31 t.Fatalf("failed to list keys: %v", err) 32 return 33 } 34 actualKeys := make(map[string]bool) 35 for _, key := range listedKeys { 36 actualKeys[key.Comment] = true 37 } 38 39 matchedKeys := make(map[string]bool) 40 for _, expectedKey := range expectedKeys { 41 if !actualKeys[expectedKey] { 42 t.Fatalf("expected key %q, but was not found", expectedKey) 43 } else { 44 matchedKeys[expectedKey] = true 45 } 46 } 47 48 for actualKey := range actualKeys { 49 if !matchedKeys[actualKey] { 50 t.Fatalf("key %q was found, but was not expected", actualKey) 51 } 52 } 53 } 54 55 func TestKeyringAddingAndRemoving(t *testing.T) { 56 keyNames := []string{"dsa", "ecdsa", "rsa", "user"} 57 58 // add all test private keys 59 k := NewKeyring() 60 for _, keyName := range keyNames { 61 addTestKey(t, k, keyName) 62 } 63 validateListedKeys(t, k, keyNames) 64 65 // remove a key in the middle 66 keyToRemove := keyNames[1] 67 keyNames = append(keyNames[:1], keyNames[2:]...) 68 69 removeTestKey(t, k, keyToRemove) 70 validateListedKeys(t, k, keyNames) 71 72 // remove all keys 73 err := k.RemoveAll() 74 if err != nil { 75 t.Fatalf("failed to remove all keys: %v", err) 76 } 77 validateListedKeys(t, k, []string{}) 78 }