git.iko.soy/typeable/mandrill
on master help sign in
Merge pull request #27 from mwotton/master

this fixes #26, allowing individual email sends to fail as unsigned rather than dying with a json parsing error.

commit3fd53bb29d8b9f0fe3c8a9d2fd41dfead3e3f765 authorAlfredo Di Napoli <alfredo.dinapoli@gmail.com> dateMon 28 Dec 2015, 22:01 (11 years ago) parent5c6584c0690253
4 files changed+28−7
src/Network/API/Mandrill/Types.hs+1 test/Main.hs+1 test/RawData.hs+10 test/Tests.hs+16−7
src/Network/API/Mandrill/Types.hs+1
@@ -70,6 +70,7 @@ data MandrillRejectReason = RR_HardBounce
7070 | RR_InvalidSender
7171 | RR_Invalid
7272 | RR_TestModeLimit
73+ | RR_Unsigned
7374 | RR_Rule deriving Show
7475
7576deriveJSON defaultOptions {
test/Main.hs+1
@@ -39,5 +39,6 @@ main = do
3939 testCase "users/info.json API parsing" testUsersInfo
4040 , testCase "users/senders.json API parsing" testUsersSenders
4141 , testCase "messages/send.json API parsing" testMessagesSend
42+ , testCase "messages/send.json API response parsing" testMessagesResponseRejected
4243 ]
4344 ]
test/RawData.hs+10
@@ -200,3 +200,13 @@ sendData = [r|
200200 "send_at": "2014-08-17T14:23:02.954Z"
201201}
202202|]
203+
204+
205+messagesResponseRejected = [r|
206+[ { "email" : "foo@bar.com",
207+ "status" : "rejected",
208+ "_id" : "abc123",
209+ "reject_reason": "unsigned"
210+ }
211+]
212+|]
test/Tests.hs+16−7
@@ -1,13 +1,14 @@
11{-# LANGUAGE CPP #-}
22module Tests where
33
4−import Test.Tasty.HUnit
5−import Data.Either
6−import Data.Aeson
7−import Network.API.Mandrill.Messages.Types
8−import Network.API.Mandrill.Users.Types
9−import qualified Data.ByteString.Char8 as C8
10−import RawData
4+import Data.Aeson
5+import qualified Data.ByteString.Char8 as C8
6+import Data.Either
7+import Network.API.Mandrill.Messages.Types
8+import Network.API.Mandrill.Users.Types
9+import Network.API.Mandrill.Types
10+import RawData
11+import Test.Tasty.HUnit
1112
1213#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ <= 706
1314isRight :: Either a b -> Bool
@@ -40,3 +41,11 @@ testUsersSenders = do
4041 where
4142 parsePayload :: Either String UsersSendersResponse
4243 parsePayload = eitherDecodeStrict . C8.pack $ usersSendersData
44+
45+testMessagesResponseRejected :: Assertion
46+testMessagesResponseRejected = do
47+ assertBool ("send.json response: Parsing failed" ++ show parsePayload)
48+ (isRight parsePayload)
49+ where
50+ parsePayload :: Either String (MandrillResponse [MessagesResponse])
51+ parsePayload = eitherDecodeStrict . C8.pack $ messagesResponseRejected