warp-2.0.0: test/RequestSpec.hs
{-# LANGUAGE OverloadedStrings #-}
module RequestSpec (main, spec) where
import Data.Conduit
import Data.Conduit.List
import Network.Wai.Handler.Warp.Request
import Network.Wai.Handler.Warp.Types
import Test.Hspec
main :: IO ()
main = hspec spec
spec :: Spec
spec = describe "headerLines" $ do
it "takes until blank" $
blankSafe >>= (`shouldBe` ["foo", "bar", "baz"])
it "ignored leading whitespace in bodies" $
whiteSafe >>= (`shouldBe` ["foo", "bar", "baz"])
it "throws OverLargeHeader when too many" $
tooMany `shouldThrow` overLargeHeader
it "throws OverLargeHeader when too large" $
tooLarge `shouldThrow` overLargeHeader
where
blankSafe = (sourceList ["f", "oo\n", "bar\nbaz\n\r\n"]) $$ headerLines
whiteSafe = (sourceList ["foo\r\nbar\r\nbaz\r\n\r\n hi there"]) $$ headerLines
tooMany = (sourceList $ repeat "f\n") $$ headerLines
tooLarge = (sourceList $ repeat "f") $$ headerLines
overLargeHeader :: Selector InvalidRequest
overLargeHeader e = e == OverLargeHeader