@@ -2,11 +2,14 @@
22module WaiAppStaticTest (spec) where
33
44import Network.Wai.Application.Static
5+import WaiAppStatic.Types
56
67import Test.Hspec
78import qualified Data.ByteString.Char8 as S8
89-- import qualified Data.ByteString.Lazy.Char8 as L8
910import System.PosixCompat.Files (getFileStatus, modificationTime)
11+import System.FilePath
12+import System.IO.Temp
1013
1114import Network.HTTP.Date
1215import Network.HTTP.Types (status500)
@@ -25,7 +28,8 @@ defRequest = defaultRequest
2528spec :: Spec
2629spec = do
2730 let webApp = flip runSession $ staticApp $ defaultWebAppSettings "test"
28− let fileServerApp = flip runSession $ staticApp (defaultFileServerSettings "test")
31+ let fileServerAppWithSettings settings = flip runSession $ staticApp settings
32+ let fileServerApp = fileServerAppWithSettings (defaultFileServerSettings "test")
2933 { ssAddTrailingSlash = True
3034 }
3135
@@ -145,3 +149,15 @@ spec = do
145149 req <- request (setRawPathInfo defRequest "/subPath")
146150 assertStatus 301 req
147151 assertHeader "Location" "/subPath/" req
152+
153+ context "with defaultWebAppSettings" $ do
154+ it "ssIndices works" $ do
155+ withSystemTempDirectory "wai-app-static-test" $ \ dir -> do
156+ writeFile (dir </> "index.html") "foo"
157+ let testSettings = (defaultWebAppSettings dir) {
158+ ssIndices = [unsafeToPiece "index.html"]
159+ }
160+ fileServerAppWithSettings testSettings $ do
161+ resp <- request (setRawPathInfo defRequest "/")
162+ assertStatus 200 resp
163+ assertBodyContains "foo" resp