pushover-0.1.0.0: test/Network/Pushover/RequestTest.hs
{-# LANGUAGE OverloadedStrings #-}
module Network.Pushover.RequestTest where
import Data.ByteString.Char8 (ByteString)
import Network.HTTP.Client hiding (defaultRequest)
import Network.Pushover.Message (text)
import Network.Pushover.Request
import Network.Pushover.Token
import Test.Tasty
import Test.Tasty.HUnit
unitTests = testGroup "Unit tests"
[ testCase "Default request initialises only passed fields" testDefaultRequest
, testCase "Correct query string encoded from request" testQueryStrings
]
testRequest = Request
{ requestToken = makeTokenOrError "KzGDORePKggMaC0QOYAMyEEuzJnyUi"
, requestUserKey = makeTokenOrError "e9e1495ec75826de5983cd1abc8031"
, requestMessage = text "Backup of database \"example\" finished in 16 minutes."
, devices = ["droid4"]
, title = Just "Backup finished - SQL1"
, url = Nothing
, priority = Nothing
, timestamp = Nothing
, notificationSound = Nothing
}
--------------------------------------------------------------------------------
testDefaultRequest =
let tkn =
makeTokenOrError "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
usrK =
makeTokenOrError "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
msg =
text "Msg"
in
actualDefaultRequest tkn usrK msg @?= expectedDefaultRequest tkn usrK msg
expectedDefaultRequest tkn usrK msg = Request
{ requestToken = tkn
, requestUserKey = usrK
, requestMessage = msg
, devices = []
, title = Nothing
, url = Nothing
, priority = Nothing
, timestamp = Nothing
, notificationSound = Nothing
}
actualDefaultRequest =
defaultRequest
--------------------------------------------------------------------------------
testQueryStrings =
actualQueryString >>= (@?= expectedQueryString)
actualQueryString =
fmap queryString . makeHttpRequest $ testRequest
expectedQueryString =
"?token=KzGDORePKggMaC0QOYAMyEEuzJnyUi&\
\user=e9e1495ec75826de5983cd1abc8031&\
\message=Backup%20of%20database%20%22example%22%20finished%20in%2016%20minutes.&\
\device=droid4&\
\title=Backup%20finished%20-%20SQL1&\
\html=1"