packages feed

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"