@@ -17,10 +17,12 @@ import Network.Wai.Middleware.Gzip
1717import Network.Wai.Middleware.Vhost
1818import Network.Wai.Middleware.Autohead
1919import Network.Wai.Middleware.MethodOverride
20+import Network.Wai.Middleware.AcceptOverride
2021import Codec.Compression.GZip (decompress)
2122
2223import Data.Enumerator (run_, enumList, ($$), Iteratee)
2324import Control.Monad.IO.Class (liftIO)
25+import Data.Maybe (fromMaybe)
2426
2527main :: IO ()
2628main = defaultMain [testSuite]
@@ -41,6 +43,7 @@ testSuite = testGroup "Network.Wai.Parse"
4143 , testCase "vhost" caseVhost
4244 , testCase "autohead" caseAutohead
4345 , testCase "method override" caseMethodOverride
46+ , testCase "accept override" caseAcceptOverride
4447 ]
4548
4649caseParseQueryString :: Assertion
@@ -309,3 +312,25 @@ caseMethodOverride = flip runSession moApp $ do
309312 , queryString = "_method=PUT"
310313 }
311314 assertHeader "Method" "PUT" sres3
315+
316+aoApp = acceptOverride $ \req -> return $ responseLBS status200
317+ [("Accept", fromMaybe "" $ lookup "Accept" $ requestHeaders req)] ""
318+
319+caseAcceptOverride = flip runSession aoApp $ do
320+ sres1 <- request Request
321+ { queryString = ""
322+ , requestHeaders = [("Accept", "foo")]
323+ }
324+ assertHeader "Accept" "foo" sres1
325+
326+ sres2 <- request Request
327+ { queryString = ""
328+ , requestHeaders = [("Accept", "bar")]
329+ }
330+ assertHeader "Accept" "bar" sres2
331+
332+ sres3 <- request Request
333+ { queryString = "_accept=baz"
334+ , requestHeaders = [("Accept", "bar")]
335+ }
336+ assertHeader "Accept" "baz" sres3