/ test / Nip1.hs
Nip1.hs
 1  module Nip1 where 
 2  
 3  import Test.Hspec
 4  import Golden 
 5  import Nostr.Event
 6  import Nostr.Keys
 7  import Nostr.Filter
 8  import Data.ByteString as BS
 9  import Data.Time.Clock.POSIX
10  
11  nip1GetTest = do
12      kp <- genKeyPair 
13      p1 <- exportPub kp
14      sec :: Integer <- round <$> getPOSIXTime
15      let keyless = Content 1 
16                      [ETag evid Nothing (Just Root')] 
17                      "garden golgun goodoo"
18                      sec
19      mE <- signE kp keyless 
20      vEE <- verifyE wev
21      mEE <- verifyE mE 
22      return $ describe "nip 1" do
23        it "gold id" $ flip shouldBe evid (idE ev)
24        it "verifiesE!" $ shouldBe vEE True
25        it "signs valid 2" $ flip shouldBe True mEE 
26        it "evid length" $ flip shouldBe 32 (BS.length . un32 $ evid)
27        it "length1" $ flip shouldBe 32 (BS.length . un32 . pubkey . con $ wev)
28        it "length2" $ flip shouldBe 64 (BS.length . un64 . sig $ wev)
29        it "length3" $ flip shouldBe 32 (BS.length . un32 . eid $ wev)
30        it "msign sig length" $ shouldBe 64 (BS.length . un64 . sig $ mE )
31        it "msign eid length" $ shouldBe 32 (BS.length . un32 . eid $ mE )
32        it "msign pub length" $ shouldBe 32 (BS.length . un32 . pubkey . con $ mE)
33        it "matches by id" $ shouldBe True (matchM wev (Ids ["37", "437"]))
34        it "doesn't match by id" $ shouldBe False (matchM wev (Ids ["37"]))
35        it "matches by author" $ shouldBe True (matchM wev (Authors ["6", "7"])) 
36        it "matches by author" $ shouldBe False (matchM wev (Authors ["7"])) 
37        it "matches by etag" $ shouldBe True (matchM wev (ETagM [evref]))
38        it "matches by ptag" $ shouldBe True (matchM wev (PTagM [keyref]))
39        it "matches since" $ shouldBe True (matchM wev (Since 1673347336))
40        it "matches since" $ shouldBe False (matchM wev (Since 1673347338))
41        it "matches until" $ shouldBe False (matchM wev (Until 1673347336))
42        it "matches until" $ shouldBe True (matchM wev (Until 1673347338))
43        it "matches f" $ shouldBe True (matchF wev (emptyF{idsF = Just $ Ids ["437"]}))
44        it "no matches f" $ shouldBe False (matchF wev (emptyF{idsF = Just $ Ids ["37"]}))
45        it "npubs work" $ shouldBe banswer (npub bexample)
46        it "npubs work 2" $ shouldBe (Just bexample) (xnpub banswer)