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  }