@@ -18,6 +18,7 @@ import Network.Wai.Middleware.Vhost
1818import Network.Wai.Middleware.Autohead
1919import Network.Wai.Middleware.MethodOverride
2020import Network.Wai.Middleware.AcceptOverride
21+import Network.Wai.Middleware.Debug (debug)
2122import Codec.Compression.GZip (decompress)
2223
2324import Data.Enumerator (run_, enumList, ($$), Iteratee)
@@ -48,6 +49,7 @@ testSuite = testGroup "Network.Wai.Parse"
4849 , testCase "method override" caseMethodOverride
4950 , testCase "accept override" caseAcceptOverride
5051 , testCase "dalvik multipart" caseDalvikMultipart
52+ , testCase "debug request body" caseDebugRequestBody
5153 ]
5254
5355caseParseQueryString :: Assertion
@@ -160,6 +162,9 @@ caseParseRequestBody = run_ t where
160162toRequest :: S8.ByteString -> S8.ByteString -> SRequest
161163toRequest ctype content = SRequest (Request
162164 { requestHeaders = [("Content-Type", ctype)]
165+ , requestMethod = "POST"
166+ , rawPathInfo = ""
167+ , rawQueryString = ""
163168 }) (L.fromChunks [content])
164169
165170toRequest' :: S8.ByteString -> S8.ByteString -> SRequest
@@ -376,3 +381,16 @@ caseDalvikMultipart = do
376381 lookup "geoLong" params @?= Just "0"
377382 lookup "geoLat" params @?= Just "0"
378383 length files @?= 1
384+
385+caseDebugRequestBody :: Assertion
386+caseDebugRequestBody = flip runSession debugApp $ do
387+ let req = toRequest "application/x-www-form-urlencoded" "foo=bar&baz=bin"
388+ res <- srequest req
389+ assertStatus 200 res
390+ assertHeader "Parsed" (S8.pack $ show ([("foo", "bar"), ("baz", "bin")], [] :: [Int])) res
391+
392+debugApp = debug $ \req -> do
393+ x <- parseRequestBody lbsSink req
394+ return $ responseLBS status200
395+ [ ("Parsed", S8.pack $ show x)
396+ ] ""