github.com/qri-io/qri@v0.10.1-0.20220104210721-c771715036cb/auth/key/keybook_test.go (about) 1 package key_test 2 3 import ( 4 "context" 5 "testing" 6 7 "github.com/qri-io/qri/auth/key" 8 testkeys "github.com/qri-io/qri/auth/key/test" 9 ) 10 11 func TestPublicKey(t *testing.T) { 12 ctx := context.Background() 13 kb, err := key.NewMemStore() 14 if err != nil { 15 t.Fatal(err) 16 } 17 18 ki0 := testkeys.GetKeyData(0) 19 k0 := ki0.PrivKey.GetPublic() 20 k0AltID := key.ID("key_id_0") 21 22 if err = kb.AddPubKey(ctx, k0AltID, k0); err != nil { 23 t.Fatal(err) 24 } 25 26 ki1 := testkeys.GetKeyData(1) 27 k1 := ki1.PrivKey.GetPublic() 28 k1AltID := key.ID("key_id_1") 29 err = kb.AddPubKey(ctx, k1AltID, k1) 30 if err != nil { 31 t.Fatal(err) 32 } 33 34 tPub := kb.PubKey(ctx, k0AltID) 35 if tPub != k0 { 36 t.Fatalf("returned key does not match") 37 } 38 39 tPub = kb.PubKey(ctx, k1AltID) 40 if tPub != k1 { 41 t.Fatalf("returned key does not match") 42 } 43 } 44 45 func TestPrivateKey(t *testing.T) { 46 ctx := context.Background() 47 kb, err := key.NewMemStore() 48 if err != nil { 49 t.Fatal(err) 50 } 51 52 kd0 := testkeys.GetKeyData(0) 53 k0AltID := key.ID("key_id_0") 54 55 if err := kb.AddPrivKey(ctx, k0AltID, kd0.PrivKey); err != nil { 56 t.Fatal(err) 57 } 58 59 kd1 := testkeys.GetKeyData(1) 60 k1AltID := key.ID("key_id_1") 61 err = kb.AddPrivKey(ctx, k1AltID, kd1.PrivKey) 62 if err != nil { 63 t.Fatal(err) 64 } 65 66 tPriv := kb.PrivKey(ctx, k0AltID) 67 if tPriv != kd0.PrivKey { 68 t.Fatalf("returned key does not match") 69 } 70 71 tPriv = kb.PrivKey(ctx, k1AltID) 72 if tPriv != kd1.PrivKey { 73 t.Fatalf("returned key does not match") 74 } 75 } 76 77 func TestIDsWithKeys(t *testing.T) { 78 ctx := context.Background() 79 kb, err := key.NewMemStore() 80 if err != nil { 81 t.Fatal(err) 82 } 83 84 kd0 := testkeys.GetKeyData(0) 85 if err = kb.AddPrivKey(ctx, kd0.KeyID, kd0.PrivKey); err != nil { 86 t.Fatal(err) 87 } 88 89 kd1 := testkeys.GetKeyData(1) 90 err = kb.AddPubKey(ctx, kd1.KeyID, kd1.PrivKey.GetPublic()) 91 if err != nil { 92 t.Fatal(err) 93 } 94 95 pids := kb.IDsWithKeys(ctx) 96 97 if len(pids) != 2 { 98 t.Fatalf("expected to get 2 ids but got: %d", len(pids)) 99 } 100 101 // the output of kb.IDsWithKeys is in a non-deterministic order 102 // so we have to account for all permutations 103 if !(pids[0] == kd0.KeyID && pids[1] == kd1.KeyID) && !(pids[0] == kd1.KeyID && pids[1] == kd0.KeyID) { 104 t.Fatalf("invalid ids returned") 105 } 106 }