@@ -10,6 +10,7 @@ module Network.Wai.Test
10 , SRequest (..)
10 , SRequest (..)
11 , SResponse (..)
11 , SResponse (..)
12 , defaultRequest
12 , defaultRequest
13 , setRawPathInfo
14 , setRawPathInfo
14 -- * Assertions
15 -- * Assertions
15 , assertStatus
16 , assertStatus
@@ -30,6 +31,7 @@ import Data.ByteString (ByteString)
30import qualified Data.ByteString.Char8 as S8
31import qualified Data.ByteString.Char8 as S8
31import Data.Conduit.Blaze (builderToByteString)
32import Data.Conduit.Blaze (builderToByteString)
32import Blaze.ByteString.Builder (flush)
33import Blaze.ByteString.Builder (flush)
34+import qualified Blaze.ByteString.Builder as B
33import qualified Data.ByteString.Lazy as L
35import qualified Data.ByteString.Lazy as L
34import qualified Data.ByteString.Lazy.Char8 as L8
36import qualified Data.ByteString.Lazy.Char8 as L8
35import qualified Network.HTTP.Types as H
37import qualified Network.HTTP.Types as H
@@ -87,6 +89,17 @@ defaultRequest = Request
92+-- | Set whole path (request path + query string).
93+setPath :: Request -> S8.ByteString -> Request
94+setPath req path = req {
96+ , rawPathInfo = B.toByteString (H.encodePathSegments segments)
97+ , queryString = query
98+ , rawQueryString = (H.renderQuery True query)
101+ (segments, query) = H.decodePath path
90setRawPathInfo :: Request -> S8.ByteString -> Request
103setRawPathInfo :: Request -> S8.ByteString -> Request
91setRawPathInfo r rawPinfo =
104setRawPathInfo r rawPinfo =
92 let pInfo = T.split (== '/') $ TE.decodeUtf8 rawPinfo
105 let pInfo = T.split (== '/') $ TE.decodeUtf8 rawPinfo