@@ -25,6 +25,7 @@ import Network.Wai.Middleware.MethodOverridePost
2525import Network.Wai.Middleware.AcceptOverride
2626import Network.Wai.Middleware.RequestLogger
2727import Codec.Compression.GZip (decompress)
28+import Network.Wai.Middleware.StreamFile
2829
2930import Control.Monad.IO.Class (liftIO)
3031import Data.Maybe (fromMaybe)
@@ -57,6 +58,7 @@ spec = do
5758 it "method override post" caseMethodOverridePost
5859 it "accept override" caseAcceptOverride
5960 it "debug request body" caseDebugRequestBody
61+ it "stream file" caseStreamFile
6062
6163toRequest :: S8.ByteString -> S8.ByteString -> SRequest
6264toRequest ctype content = SRequest defaultRequest
@@ -419,3 +421,15 @@ casesUrlMap = [pair1, pair2, pair3, pair4]
419421 pair4 = makePair "should 404 if none match" $ do
420422 res4 <- get "/api/v3"
421423 assertStatus 404 res4
424+
425+testFile :: FilePath
426+testFile = "test/WaiExtraSpec.hs"
427+
428+streamFileApp :: Application
429+streamFileApp = streamFile $ \_ f -> f $ responseFile status200 [] testFile Nothing
430+
431+caseStreamFile :: Assertion
432+caseStreamFile = flip runSession streamFileApp $ do
433+ sres <- request defaultRequest
434+ assertStatus 200 sres
435+ assertNoHeader "Transfer-Encoding" sres