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"