@@ -13,6 +13,7 @@ import Control.Arrow
1313
1414import Network.Wai.Middleware.Jsonp
1515import Network.Wai.Middleware.Gzip
16+import Network.Wai.Middleware.Vhost
1617import Codec.Compression.GZip (decompress)
1718
1819import Data.Enumerator (run_, enumList, ($$))
@@ -34,6 +35,7 @@ testSuite = testGroup "Network.Wai.Parse"
3435 , testCase "takeLine" caseTakeLine
3536 , testCase "jsonp" caseJsonp
3637 , testCase "gzip" caseGzip
38+ , testCase "vhost" caseVhost
3739 ]
3840
3941caseParseQueryString :: Assertion
@@ -242,3 +244,21 @@ caseGzip = flip runSession gzipApp $ do
242244 }
243245 assertNoHeader "Content-Encoding" sres2
244246 assertBody "test" sres2
247+
248+vhostApp1 = const $ return $ responseLBS status200 [] "app1"
249+vhostApp2 = const $ return $ responseLBS status200 [] "app2"
250+vhostApp = vhost
251+ [ ((== "foo.com") . serverName, vhostApp1)
252+ ]
253+ vhostApp2
254+
255+caseVhost = flip runSession vhostApp $ do
256+ sres1 <- request Request
257+ { serverName = "foo.com"
258+ }
259+ assertBody "app1" sres1
260+
261+ sres2 <- request Request
262+ { serverName = "bar.com"
263+ }
264+ assertBody "app2" sres2