on master help sign in
assertBody, assertHeader and assertNoHeader
commit7273e5b644cad278c55f57e068d709147d62e83e authorMichael Snoyman <michael@snoyman.com> dateFri 24 Dec 2010, 11:58 (16 years ago) parent13683e4
1 file changed+42
Network/Wai/Test.hs+42
Network/Wai/Test.hs+42
@@ -9,6 +9,9 @@ module Network.Wai.Test
99 -- * Assertions
1010 , assertStatus
1111 , assertContentType
12+ , assertBody
13+ , assertHeader
14+ , assertNoHeader
1215 ) where
1316import Network.Wai
1417import qualified Test.HUnit.Base as H
@@ -23,6 +26,7 @@ import qualified Data.ByteString.Char8 as S8
2326import Data.Enumerator (joinI, consume, ($$))
2427import Blaze.ByteString.Builder.Enumerator (builderToByteString)
2528import qualified Data.ByteString.Lazy as L
29+import qualified Data.ByteString.Lazy.Char8 as L8
2630
2731type Session = ReaderT Application (StateT ClientState IO)
2832
@@ -89,3 +93,41 @@ assertStatus i SResponse{simpleStatus = s} = assertBool (concat
8993 ]) $ i == sc
9094 where
9195 sc = statusCode s
96+
97+assertBody :: L.ByteString -> SResponse -> Session ()
98+assertBody lbs SResponse{simpleBody = lbs'} = assertBool (concat
99+ [ "Expected response body "
100+ , show $ L8.unpack lbs
101+ , ", but received "
102+ , show $ L8.unpack lbs'
103+ ]) $ lbs == lbs'
104+
105+assertHeader :: CIByteString -> S.ByteString -> SResponse -> Session ()
106+assertHeader header value SResponse{simpleHeaders = h} =
107+ case lookup header h of
108+ Nothing -> assertString $ concat
109+ [ "Expected header "
110+ , show header
111+ , " to be "
112+ , show value
113+ , ", but it was not present"
114+ ]
115+ Just value' -> assertBool (concat
116+ [ "Expected header "
117+ , show header
118+ , " to be "
119+ , show value
120+ , ", but received "
121+ , show value'
122+ ]) (value == value')
123+
124+assertNoHeader :: CIByteString -> SResponse -> Session ()
125+assertNoHeader header SResponse{simpleHeaders = h} =
126+ case lookup header h of
127+ Nothing -> return ()
128+ Just s -> assertString $ concat
129+ [ "Unexpected header "
130+ , show header
131+ , " containing "
132+ , show s
133+ ]