packages feed

stripe-signature-1.0.0.0: test/test.hs

{-# OPTIONS_GHC -Wall #-}

import Stripe.Signature

-- base
import Control.Monad   (unless)
import Data.Word       (Word8)
import Numeric.Natural (Natural)
import System.Exit     (die)

-- bytestring
import qualified Data.ByteString

-- text
import qualified Data.Text

test_string :: String
test_string =
    "t=1492774577,v1=5257a869e7ecebeda32affa62cdca3fa51cad7e\
    \77a0e56ff536d0ce8e108d8bd,v0=6ffbb59b2300aae63f27240606\
    \9a9788598b792a944a07aba816edb039989a39"

test_time :: Natural
test_time = 1492774577

test_v1Bytes :: [Word8]
test_v1Bytes =
    [82,87,168,105,231,236,235,237,163,42,255,166,44,220,163,250
    ,81,202,215,231,122,14,86,255,83,109,12,232,225,8,216,189]

main :: IO ()
main =
    case parseSig (Data.Text.pack test_string) of
        Nothing -> die "Signature parsing failed"
        Just sig ->
          do
            unless (sigTime sig == test_time) $
                die ("sigTime: " ++ show (sigTime sig))
            unless ((Data.ByteString.unpack <$> sigV1 sig) == [test_v1Bytes]) $
                die ("sigV1: " ++ show (Data.ByteString.unpack <$> sigV1 sig))