packages feed

mandrill-0.5.3.0: test/Tests.hs

{-# LANGUAGE CPP #-}
module Tests where

import           Data.Aeson
import qualified Data.ByteString.Char8               as C8
import           Data.Either
import           Network.API.Mandrill.Inbound
import           Network.API.Mandrill.Messages.Types
import           Network.API.Mandrill.Senders
import           Network.API.Mandrill.Types
import           Network.API.Mandrill.Users.Types
import           Network.API.Mandrill.Webhooks
import           RawData
import           Test.Tasty.HUnit

#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ <= 706
isRight :: Either a b -> Bool
isRight (Left _) = False
isRight _ = True
#endif

testMessagesSend :: Assertion
testMessagesSend =
  assertBool ("send.json: Parsing failed! " ++ show parsePayload)
             (isRight parsePayload)
  where
    parsePayload :: Either String MessagesSendRq
    parsePayload = eitherDecodeStrict . C8.pack $ sendData

testUsersInfo :: Assertion
testUsersInfo = do
  let res = parsePayload
  assertBool ("users/info.json (response): Parsing failed: " ++ show res)
             (isRight parsePayload)
  where
    parsePayload :: Either String UsersInfoResponse
    parsePayload = eitherDecodeStrict . C8.pack $ usersInfoData

testUsersSenders :: Assertion
testUsersSenders = do
  let res = parsePayload
  assertBool ("users/senders.json (response): Parsing failed: " ++ show res)
             (isRight parsePayload)
  where
    parsePayload :: Either String UsersSendersResponse
    parsePayload = eitherDecodeStrict . C8.pack $ usersSendersData

testMessagesResponseRejected :: Assertion
testMessagesResponseRejected = do
  assertBool ("send.json response: Parsing failed" ++ show parsePayload)
             (isRight parsePayload)
  where
    parsePayload :: Either String (MandrillResponse [MessagesResponse])
    parsePayload = eitherDecodeStrict . C8.pack $ messagesResponseRejected

testDomainAdd :: Assertion
testDomainAdd =
  assertBool ("inbound/add-domain.json (response): parsing failed" ++ show parsePayload)
             (isRight parsePayload)
  where
    parsePayload :: Either String DomainAddResponse
    parsePayload = eitherDecodeStrict . C8.pack $ domainAdd


testRouteAdd :: Assertion
testRouteAdd =
  assertBool ("inbound/add-route.json (response): parsing failed" ++ show parsePayload)
             (isRight parsePayload)
  where
    parsePayload :: Either String RouteAddResponse
    parsePayload = eitherDecodeStrict . C8.pack $ routeAdd

testVerifyDomain :: Assertion
testVerifyDomain =
  assertBool ("senders/verify-domain.json" ++ show parsePayload)
             (isRight parsePayload)
  where
    parsePayload ::  Either String VerifyDomainResponse
    parsePayload = eitherDecodeStrict . C8.pack $ domainVerify


testWebhookAdd :: Assertion
testWebhookAdd =
  assertBool ("webhooks/add.json (request): parsing failed" ++ show parsePayload)
             (isRight parsePayload)
  where
    parsePayload :: Either String WebhookAddRq
    parsePayload = eitherDecodeStrict . C8.pack $ webhookAdd