diff --git a/yesod-test/Yesod/Test.hs b/yesod-test/Yesod/Test.hs index dad5795f..2ff05c15 100644 --- a/yesod-test/Yesod/Test.hs +++ b/yesod-test/Yesod/Test.hs @@ -539,7 +539,9 @@ request reqBuilder = do , rbdGets = [] , rbdHeaders = [] } - let path = TE.decodeUtf8 $ Builder.toByteString $ H.encodePathSegments rbdPath + let path + | null rbdPath = "/" + | otherwise = TE.decodeUtf8 $ Builder.toByteString $ H.encodePathSegments rbdPath -- expire cookies and filter them for the current path. TODO: support max age currentUtc <- liftIO getCurrentTime diff --git a/yesod-test/test/main.hs b/yesod-test/test/main.hs index 318148bc..acc83801 100644 --- a/yesod-test/test/main.hs +++ b/yesod-test/test/main.hs @@ -15,6 +15,7 @@ import Data.Text (Text) import Data.Monoid ((<>)) import Control.Applicative import Network.Wai (pathInfo) +import Data.Maybe (fromMaybe) import Data.ByteString.Lazy.Char8 () import qualified Data.Map as Map @@ -122,6 +123,16 @@ main = hspec $ do get ("/dynamic2/שלום" :: Text) statusIs 200 bodyEquals "שלום" + describe "cookies" $ yesodSpec cookieApp $ do + yit "should send the cookie #730" $ do + get ("/" :: Text) + statusIs 200 + post ("/cookie/foo" :: Text) + statusIs 302 + get ("/" :: Text) + statusIs 200 + printBody + bodyContains "Foo" instance RenderMessage LiteApp FormMessage where renderMessage _ _ = defaultFormMessage @@ -151,3 +162,12 @@ app = liteApp $ do case mfoo of FormSuccess (foo, _) -> return $ toHtml foo _ -> defaultLayout widget + +cookieApp :: LiteApp +cookieApp = liteApp $ do + dispatchTo $ fromMaybe "no message available" <$> getMessage + onStatic "cookie" $ do + onStatic "foo" $ dispatchTo $ do + setMessage "Foo" + redirect ("/cookie/home" :: Text) + return () diff --git a/yesod-test/yesod-test.cabal b/yesod-test/yesod-test.cabal index e1c90492..6de95874 100644 --- a/yesod-test/yesod-test.cabal +++ b/yesod-test/yesod-test.cabal @@ -1,5 +1,5 @@ name: yesod-test -version: 1.2.1.4 +version: 1.2.1.5 license: MIT license-file: LICENSE author: Nubis