@@ -10,6 +10,7 @@ import qualified Data.ByteString as S
10import qualified Data.ByteString.Char8 as S8
10import qualified Data.ByteString.Char8 as S8
11import qualified Data.ByteString.Lazy.Char8 as L8
11import qualified Data.ByteString.Lazy.Char8 as L8
12import qualified Data.ByteString.Lazy as L
12import qualified Data.ByteString.Lazy as L
13+import qualified Data.Text.Lazy as T
13import Control.Arrow
14import Control.Arrow
15import Network.Wai.Middleware.Jsonp
16import Network.Wai.Middleware.Jsonp
@@ -18,7 +19,7 @@ import Network.Wai.Middleware.Vhost
18import Network.Wai.Middleware.Autohead
19import Network.Wai.Middleware.Autohead
19import Network.Wai.Middleware.MethodOverride
20import Network.Wai.Middleware.MethodOverride
20import Network.Wai.Middleware.AcceptOverride
21import Network.Wai.Middleware.AcceptOverride
21−import Network.Wai.Middleware.Debug (debug)
22+import Network.Wai.Middleware.Debug (debug, debugDest)
22import Codec.Compression.GZip (decompress)
23import Codec.Compression.GZip (decompress)
24import Data.Enumerator (run_, enumList, ($$), Iteratee)
25import Data.Enumerator (run_, enumList, ($$), Iteratee)
@@ -36,11 +37,13 @@ testSuite = testGroup "Network.Wai.Parse"
36 , testCase "parseQueryString with question mark" caseParseQueryStringQM
37 , testCase "parseQueryString with question mark" caseParseQueryStringQM
37 , testCase "parseHttpAccept" caseParseHttpAccept
38 , testCase "parseHttpAccept" caseParseHttpAccept
38 , testCase "parseRequestBody" caseParseRequestBody
39 , testCase "parseRequestBody" caseParseRequestBody
39 , testCase "findBound" caseFindBound
41 , testCase "findBound" caseFindBound
40 , testCase "sinkTillBound" caseSinkTillBound
42 , testCase "sinkTillBound" caseSinkTillBound
41 , testCase "killCR" caseKillCR
43 , testCase "killCR" caseKillCR
42 , testCase "killCRLF" caseKillCRLF
44 , testCase "killCRLF" caseKillCRLF
43 , testCase "takeLine" caseTakeLine
45 , testCase "takeLine" caseTakeLine
44 , testCase "jsonp" caseJsonp
47 , testCase "jsonp" caseJsonp
45 , testCase "gzip" caseGzip
48 , testCase "gzip" caseGzip
46 , testCase "gzip not for MSIE" caseGzipMSIE
49 , testCase "gzip not for MSIE" caseGzipMSIE
@@ -165,6 +168,7 @@ toRequest ctype content = SRequest (Request
165 , requestMethod = "POST"
168 , requestMethod = "POST"
166 , rawPathInfo = ""
169 , rawPathInfo = ""
167 , rawQueryString = ""
170 , rawQueryString = ""
168 }) (L.fromChunks [content])
172 }) (L.fromChunks [content])
170toRequest' :: S8.ByteString -> S8.ByteString -> SRequest
174toRequest' :: S8.ByteString -> S8.ByteString -> SRequest
@@ -172,6 +176,7 @@ toRequest' ctype content = SRequest (Request
172 { requestHeaders = [("Content-Type", ctype)]
176 { requestHeaders = [("Content-Type", ctype)]
173 }) (L.fromChunks $ map S.singleton $ S.unpack content)
177 }) (L.fromChunks $ map S.singleton $ S.unpack content)
175caseFindBound :: Assertion
180caseFindBound :: Assertion
176caseFindBound = do
181caseFindBound = do
177 findBound (S8.pack "def") (S8.pack "abcdefghi") @?=
182 findBound (S8.pack "def") (S8.pack "abcdefghi") @?=
@@ -220,6 +225,7 @@ caseTakeLine = do
220 helper haystack needle = do
225 helper haystack needle = do
221 x <- run_ $ enumList 1 [haystack] $$ takeLine
226 x <- run_ $ enumList 1 [haystack] $$ takeLine
222 Just needle @=? x
227 Just needle @=? x
224jsonpApp = jsonp $ const $ return $ responseLBS
230jsonpApp = jsonp $ const $ return $ responseLBS
225 status200
231 status200
@@ -387,10 +393,11 @@ caseDebugRequestBody = flip runSession debugApp $ do
387 let req = toRequest "application/x-www-form-urlencoded" "foo=bar&baz=bin"
393 let req = toRequest "application/x-www-form-urlencoded" "foo=bar&baz=bin"
388 res <- srequest req
394 res <- srequest req
389 assertStatus 200 res
395 assertStatus 200 res
390− assertHeader "Parsed" (S8.pack $ show ([("foo", "bar"), ("baz", "bin")], [] :: [Int])) res
396+ where
397+ params = [("foo", "bar"), ("baz", "bin")]
398+ debugOutput = T.pack $ "POST \nAccept: \n" ++ (show params)
392−debugApp = debug $ \req -> do
400+ debugApp = debugDest (\t -> liftIO $ assertEqual "debug" debugOutput t) $ \req -> do
393− x <- parseRequestBody lbsSink req
401+ return $ responseLBS status200 [ ] ""
394− return $ responseLBS status200
402+ {-debugApp = debug $ \req -> do-}
395− [ ("Parsed", S8.pack $ show x)
403+ {-return $ responseLBS status200 [ ] ""-}