identity_test.go raw

   1  package nostr
   2  
   3  import (
   4  	"testing"
   5  )
   6  
   7  func TestNewIdentity(t *testing.T) {
   8  	id, err := NewIdentity()
   9  	if err != nil {
  10  		t.Fatalf("NewIdentity: %v", err)
  11  	}
  12  	if len(id.PubKey) != 64 {
  13  		t.Fatalf("expected 64-char hex pubkey, got %d chars", len(id.PubKey))
  14  	}
  15  	if len(id.PrivKeyHex()) != 64 {
  16  		t.Fatalf("expected 64-char hex privkey, got %d chars", len(id.PrivKeyHex()))
  17  	}
  18  }
  19  
  20  func TestComposeMetadata(t *testing.T) {
  21  	id, err := NewIdentity()
  22  	if err != nil {
  23  		t.Fatal(err)
  24  	}
  25  
  26  	ev, err := id.ComposeMetadata(2, 5, "abcdef1234567890abcdef1234567890")
  27  	if err != nil {
  28  		t.Fatalf("ComposeMetadata: %v", err)
  29  	}
  30  
  31  	if ev.Kind != 0 {
  32  		t.Fatalf("expected kind 0, got %d", ev.Kind)
  33  	}
  34  	if ev.Pubkey != id.PubKey {
  35  		t.Fatalf("pubkey mismatch: %s != %s", ev.Pubkey, id.PubKey)
  36  	}
  37  	if !ev.Valid() {
  38  		t.Fatal("metadata event failed validation")
  39  	}
  40  }
  41  
  42  func TestComposeStatus(t *testing.T) {
  43  	id, err := NewIdentity()
  44  	if err != nil {
  45  		t.Fatal(err)
  46  	}
  47  
  48  	ev, err := id.ComposeStatus(1, 3, 2941, 987, 0.336, 0.284, 2)
  49  	if err != nil {
  50  		t.Fatalf("ComposeStatus: %v", err)
  51  	}
  52  
  53  	if ev.Kind != 1 {
  54  		t.Fatalf("expected kind 1, got %d", ev.Kind)
  55  	}
  56  	if !ev.Valid() {
  57  		t.Fatal("status event failed validation")
  58  	}
  59  
  60  	// Check hashtags.
  61  	foundDendrite := false
  62  	foundGen := false
  63  	for _, tag := range ev.Tags {
  64  		if len(tag) >= 2 && tag[0] == "t" {
  65  			if tag[1] == "dendrite" {
  66  				foundDendrite = true
  67  			}
  68  			if tag[1] == "gen3" {
  69  				foundGen = true
  70  			}
  71  		}
  72  	}
  73  	if !foundDendrite {
  74  		t.Fatal("missing #dendrite tag")
  75  	}
  76  	if !foundGen {
  77  		t.Fatal("missing #gen3 tag")
  78  	}
  79  }
  80  
  81  func TestTwoIdentitiesDistinct(t *testing.T) {
  82  	id1, _ := NewIdentity()
  83  	id2, _ := NewIdentity()
  84  	if id1.PubKey == id2.PubKey {
  85  		t.Fatal("two identities should have distinct pubkeys")
  86  	}
  87  }
  88