{-# LANGUAGE QuasiQuotes #-}
import Criterion.Main
import Auth.Biscuit
import Data.Maybe (fromJust)
buildToken :: SecretKey -> IO (Biscuit Open Verified)
buildToken sk = do
mkBiscuit sk [block|user_id("user_1234");|]
-- Our benchmark harness.
main = do
sk <- newSecret
biscuit <- buildToken sk
let pk = toPublic sk
let biscuitBs = serialize biscuit
defaultMain [
bgroup "biscuit" [ bench "mkBiscuit" $ whnfIO (buildToken sk)
, bench "parse" $ whnf (parse pk) biscuitBs
, bench "serialize" $ whnf serialize biscuit
, bench "verify" $ whnfIO (authorizeBiscuit biscuit [authorizer|allow if user_id("user_1234");|])
]
]