packages feed

stripe-haskell-0.1.4.1: tests/Test/Token.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
module Test.Token where

import           Data.Either
import           Test.Hspec
import           Web.Stripe
import           Web.Stripe.Token

tokenTests :: StripeConfig -> Spec
tokenTests config = do
  describe "Token tests" $ do
    it "Can create a Card Token" $ do
      result <- stripe config $ createCardToken cn em ey cvc
      result `shouldSatisfy` isRight
    it "Can create a Bank Account Token" $ do
      result <- stripe config $ createBankAccountToken
                                  (Country "US")
                                  (RoutingNumber "110000000")
                                  (AccountNumber "000123456789")
      result `shouldSatisfy` isRight
    it "Can retrieve an Existing Card Token" $ do
      result <- stripe config $ do
        Token { tokenId = tkid } <- createCardToken cn em ey cvc
        getCardToken tkid
      result `shouldSatisfy` isRight
    it "Can retrieve an Existing Bank Account Token" $ do
      result <- stripe config $ do
        Token { tokenId = tkid } <- createBankAccountToken
                 (Country "US")
                 (RoutingNumber "110000000")
                 (AccountNumber "000123456789")
        getBankAccountToken tkid
      result `shouldSatisfy` isRight
  where
    cn  = CardNumber "4242424242424242"
    em  = ExpMonth 12
    ey  = ExpYear 2015
    cvc = CVC "123"