git.iko.soy/typeable/mandrill
on master help sign in
add unsigned-failure possibility
0690253Mark Wotton
src/Network/API/Mandrill/Types.hs+1
@@ -70,6 +70,7 @@ data MandrillRejectReason = RR_HardBounce
70 | RR_InvalidSender
70 | RR_InvalidSender
71 | RR_Invalid
71 | RR_Invalid
72 | RR_TestModeLimit
72 | RR_TestModeLimit
73+ | RR_Unsigned
73 | RR_Rule deriving Show
74 | RR_Rule deriving Show
74
75
75deriveJSON defaultOptions {
76deriveJSON defaultOptions {
test/Main.hs+1
@@ -39,5 +39,6 @@ main = do
39 testCase "users/info.json API parsing" testUsersInfo
39 testCase "users/info.json API parsing" testUsersInfo
40 , testCase "users/senders.json API parsing" testUsersSenders
40 , testCase "users/senders.json API parsing" testUsersSenders
41 , testCase "messages/send.json API parsing" testMessagesSend
41 , testCase "messages/send.json API parsing" testMessagesSend
42+ , testCase "messages/send.json API response parsing" testMessagesResponseRejected
42 ]
43 ]
43 ]
44 ]
test/RawData.hs+10
@@ -200,3 +200,13 @@ sendData = [r|
200 "send_at": "2014-08-17T14:23:02.954Z"
200 "send_at": "2014-08-17T14:23:02.954Z"
201}
201}
202|]
202|]
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 @@
1{-# LANGUAGE CPP #-}
1{-# LANGUAGE CPP #-}
2module Tests where
2module Tests where
3
3
4−import Test.Tasty.HUnit
5−import Data.Either
6−import Data.Aeson
4+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
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
10+import RawData
11+import Test.Tasty.HUnit
11
12
12#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ <= 706
13#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ <= 706
13isRight :: Either a b -> Bool
14isRight :: Either a b -> Bool
@@ -40,3 +41,11 @@ testUsersSenders = do
40 where
41 where
41 parsePayload :: Either String UsersSendersResponse
42 parsePayload :: Either String UsersSendersResponse
42 parsePayload = eitherDecodeStrict . C8.pack $ usersSendersData
43 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