From ac25c2071e2eee3179a99673ddee46f00fb54e27 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Wed, 14 Dec 2022 13:35:13 -0300 Subject: [PATCH] another event serialization test, now reversed. --- event_test.go | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/event_test.go b/event_test.go index 2817fbe..1de9366 100644 --- a/event_test.go +++ b/event_test.go @@ -3,6 +3,7 @@ package nostr import ( "encoding/json" "testing" + "time" ) func TestEventParsingAndVerifying(t *testing.T) { @@ -37,3 +38,50 @@ func TestEventParsingAndVerifying(t *testing.T) { } } } + +func TestEventSerialization(t *testing.T) { + events := []Event{ + { + ID: "92570b321da503eac8014b23447301eb3d0bbdfbace0d11a4e4072e72bb7205d", + PubKey: "e9142f724955c5854de36324dab0434f97b15ec6b33464d56ebe491e3f559d1b", + Kind: 4, + CreatedAt: time.Unix(1671028682, 0), + Tags: Tags{Tag{"p", "f8340b2bde651576b75af61aa26c80e13c65029f00f7f64004eece679bf7059f"}}, + Content: "you say yes, I say no", + Sig: "ed08d2dd5b0f7b6a3cdc74643d4adee3158ddede9cc848e8cd97630c097001acc2d052d2d3ec2b7ac4708b2314b797106d1b3c107322e61b5e5cc2116e099b79", + }, + } + + for _, evt := range events { + b, err := json.Marshal(evt) + if err != nil { + t.Log(evt) + t.Error("failed to serialize this event") + } + + var re Event + if err := json.Unmarshal(b, &re); err != nil { + t.Log(string(b)) + t.Error("failed to re parse event just serialized") + } + + if evt.ID != re.ID || evt.PubKey != re.PubKey || evt.Content != re.Content || + !evt.CreatedAt.Equal(re.CreatedAt) || evt.Sig != re.Sig || + len(evt.Tags) != len(evt.Tags) { + t.Error("reparsed event differs from original") + } + + for i := range evt.Tags { + if len(evt.Tags[i]) != len(re.Tags[i]) { + t.Errorf("reparsed tags %d length differ from original", i) + continue + } + + for j := range evt.Tags[i] { + if evt.Tags[i][j] != re.Tags[i][j] { + t.Errorf("reparsed tag content %d %d length differ from original", i, j) + } + } + } + } +}