fedi/test/Fedi/TestSpec.hs
2024-11-08 13:26:02 +02:00

37 lines
1.5 KiB
Haskell

module Fedi.TestSpec where
import Control.Monad.IO.Class
import Data.Aeson qualified as A
import Fedi qualified
import Test.Hspec
-- * Tests
spec :: Spec
spec = do
describe "Fedi" do
httpSignature
httpSignature :: Spec
httpSignature = do
describe "HTTP Signature" do
describe "Sign" do
it "Sign a simple message" do
details <- readDetails
signed <- Fedi.sign details.privatePem "hello world"
shouldBe
(Fedi.ppSignedMessage signed)
"rXu4VgqPA5izfSSznnuHVk68gFqjLmn2gM85LqNsyXgRhk1V6WnLCtSaMR3ZaqefaU37D1Nj2xUnPu6x54HqkW99Iwe64HAddKFdMNtkcyh523+FF9t8CuRcT7l97RfbqcZSkH6D7eF8+eDa/ItpP+uwdGBDzlk8gkgRwXMP63cLVd9gboNOqvFXx11OZLBWHHMCkJuKDbzuu+46fkPXDKnDojuDLLrfd9cWqee3w3qkvigZ2T/2s3iiXrvt4rOb5Gi0oLmXh6/mqDHBIDinkyXb72vEP/HhzZMv+OSa/6tZ+F1DWf9RYlh0tItfnU4qIamRusr/YYC3KDQJzkzPZQ=="
it "Verify a simple message" do
details <- readDetails
let
signedMessage =
"rXu4VgqPA5izfSSznnuHVk68gFqjLmn2gM85LqNsyXgRhk1V6WnLCtSaMR3ZaqefaU37D1Nj2xUnPu6x54HqkW99Iwe64HAddKFdMNtkcyh523+FF9t8CuRcT7l97RfbqcZSkH6D7eF8+eDa/ItpP+uwdGBDzlk8gkgRwXMP63cLVd9gboNOqvFXx11OZLBWHHMCkJuKDbzuu+46fkPXDKnDojuDLLrfd9cWqee3w3qkvigZ2T/2s3iiXrvt4rOb5Gi0oLmXh6/mqDHBIDinkyXb72vEP/HhzZMv+OSa/6tZ+F1DWf9RYlh0tItfnU4qIamRusr/YYC3KDQJzkzPZQ=="
message = "hello world"
result <- Fedi.verifyPub (Fedi.pemToBS details.publicPem) signedMessage message
shouldBe
result
True
readDetails :: IO Fedi.UserDetails
readDetails = Fedi.readUserDetailsFile "test/public/details.json"