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