Add test code for HTTP headers properties
This commit is contained in:
parent
7038ae6317
commit
051339f3dc
62
yesod-core/test/YesodCoreTest/Header.hs
Normal file
62
yesod-core/test/YesodCoreTest/Header.hs
Normal file
@ -0,0 +1,62 @@
|
||||
{-# LANGUAGE OverloadedStrings, TemplateHaskell, QuasiQuotes,
|
||||
TypeFamilies, MultiParamTypeClasses, ViewPatterns #-}
|
||||
|
||||
module YesodCoreTest.Header
|
||||
( headerTest
|
||||
, Widget
|
||||
, resourcesApp
|
||||
) where
|
||||
|
||||
import Data.ByteString.Lazy (ByteString)
|
||||
import qualified Data.Map as Map
|
||||
import Data.Text (Text)
|
||||
import Network.HTTP.Types (decodePathSegments, status200)
|
||||
import Network.Wai
|
||||
import Network.Wai.Test
|
||||
import Test.Hspec
|
||||
import Yesod.Core
|
||||
import Yesod.Core.Handler
|
||||
|
||||
data App =
|
||||
App
|
||||
|
||||
mkYesod
|
||||
"App"
|
||||
[parseRoutes|
|
||||
/header1 Header1R GET
|
||||
/header2 Header2R GET
|
||||
|]
|
||||
|
||||
instance Yesod App
|
||||
|
||||
getHeader1R :: Handler RepPlain
|
||||
getHeader1R = do
|
||||
addHeader "hello" "world"
|
||||
return $ RepPlain $ toContent ("header test" :: Text)
|
||||
|
||||
getHeader2R :: Handler RepPlain
|
||||
getHeader2R = do
|
||||
addHeader "hello" "world"
|
||||
replaceOrAddHeader "hello" "sibi"
|
||||
return $ RepPlain $ toContent ("header test" :: Text)
|
||||
|
||||
runner :: Session () -> IO ()
|
||||
runner f = toWaiApp App >>= runSession f
|
||||
|
||||
addHeaderTest :: IO ()
|
||||
addHeaderTest =
|
||||
runner $ do
|
||||
res <- request defaultRequest {pathInfo = decodePathSegments "/header1"}
|
||||
assertHeader "hello" "world" res
|
||||
|
||||
multipleHeaderTest :: IO ()
|
||||
multipleHeaderTest =
|
||||
runner $ do
|
||||
res <- request defaultRequest {pathInfo = decodePathSegments "/header2"}
|
||||
assertHeader "hello" "sibi" res
|
||||
|
||||
headerTest :: Spec
|
||||
headerTest =
|
||||
describe "Test.Header" $ do
|
||||
it "addHeader" addHeaderTest
|
||||
it "multiple header" multipleHeaderTest
|
||||
Loading…
Reference in New Issue
Block a user