nostr-1.3.0.0: test/Test/Nostr/Nip57Spec.hs
{-# LANGUAGE OverloadedStrings #-}
module Test.Nostr.Nip57Spec (spec) where
import Test.Hspec
import Nostr.Nip57
import Nostr.Event
import qualified Data.Text as T
dummyEvent :: Kind -> [Tag] -> Event
dummyEvent k tags = Event
{ eventId = EventId "id"
, eventPubkey = PubKey "pubkey"
, eventCreatedAt = 123456
, eventKind = k
, eventTags = tags
, eventContent = ""
, eventSig = Signature "sig"
}
spec :: Spec
spec = do
describe "Nostr.Nip57" $ do
describe "Zap Request" $ do
it "parses a valid Zap Request" $ do
let tags = [ ["relays", "wss://relay1.com", "wss://relay2.com"]
, ["amount", "1000"]
, ["lnurl", "lnurl1..."]
, ["p", "recipient_pubkey"]
, ["e", "event_id"]
]
let ev = dummyEvent 9734 tags
let parsed = parseZapRequest ev
parsed `shouldBe` Just (ZapRequest
{ zrRelays = ["wss://relay1.com", "wss://relay2.com"]
, zrAmount = Just "1000"
, zrLnurl = Just "lnurl1..."
, zrP = "recipient_pubkey"
, zrE = Just "event_id"
})
it "fails on wrong kind" $ do
let ev = dummyEvent 1 []
parseZapRequest ev `shouldBe` Nothing
describe "Zap Receipt" $ do
it "parses a valid Zap Receipt" $ do
let tags = [ ["bolt11", "lnbc10n..."]
, ["preimage", "1234567890abcdef"]
, ["description", "{\"kind\":9734}"]
, ["p", "recipient_pubkey"]
, ["e", "event_id"]
]
let ev = dummyEvent 9735 tags
let parsed = parseZapReceipt ev
parsed `shouldBe` Just (ZapReceipt
{ zrpBolt11 = "lnbc10n..."
, zrpPreimage = Just "1234567890abcdef"
, zrpDescription = "{\"kind\":9734}"
, zrpP = "recipient_pubkey"
, zrpE = Just "event_id"
})