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)