37 lines
1.5 KiB
Haskell
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"
|