@@ -13,6 +13,9 @@ import qualified Data.Text.Encoding as TE
13import System.PosixCompat.Files (getFileStatus, modificationTime)
13import System.PosixCompat.Files (getFileStatus, modificationTime)
14import System.IO (stderr, hPutStrLn)
14import System.IO (stderr, hPutStrLn)
16+import Network.HTTP.Date
17+{-import System.Locale (defaultTimeLocale)-}
18+{-import Data.Time.Format (formatTime)-}
17import Network.Wai
20import Network.Wai
18import Network.Wai.Test
21import Network.Wai.Test
@@ -33,7 +36,7 @@ defRequest = Request {
33, httpVersion = H.http11
36, httpVersion = H.http11
34, serverPort = 80
37, serverPort = 80
35, isSecure = False
38, isSecure = False
36−, remoteHost = Sock.SockAddrUnix "/dev/null"
39+, remoteHost = Sock.SockAddrInet 1 2
39setRawPathInfo :: Request -> S8.ByteString -> Request
42setRawPathInfo :: Request -> S8.ByteString -> Request
@@ -143,10 +146,11 @@ main = hspecX $ do
143 assertNoHeader "Cache-Control" req
146 assertNoHeader "Cache-Control" req
145 it "304 when if-modified-since matches" $ fileServerApp $ do
148 it "304 when if-modified-since matches" $ fileServerApp $ do
149+ -- formatTime defaultTimeLocale format $
150+ -- let format = "%a, %d %b %Y %X %Z"
146− stat <- liftIO $ getFileStatus file
151+ stat <- liftIO $ getFileStatus $ "tests/" ++ file
147 req <- request statFile {
152 req <- request statFile {
148− -- TODO: need actual time String
149− requestHeaders = [("If-Modified-Since", S8.pack $ show $ modificationTime stat)]
153+ requestHeaders = [("If-Modified-Since", formatHTTPDate . epochTimeToHTTPDate $ modificationTime stat)]
151 assertStatus 304 req
155 assertStatus 304 req
152 assertNoHeader "Cache-Control" req
156 assertNoHeader "Cache-Control" req