Skip to content

Commit cee0763

Browse files
committed
Add an illustrative test demonstrating single question mark result
1 parent 7d29970 commit cee0763

File tree

3 files changed

+11
-4
lines changed

3 files changed

+11
-4
lines changed

servant-docs/test/Servant/DocsSpec.hs

+1-3
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@ import Control.Monad
2222
import Control.Monad.Trans.Writer
2323
(Writer, runWriter, tell)
2424
import Data.Aeson
25-
import Data.Data
26-
(Data)
2725
import Data.List
2826
(isInfixOf)
2927
import Data.Proxy
@@ -161,7 +159,7 @@ spec = describe "Servant.Docs" $ do
161159

162160
data Datatype1 = Datatype1 { dt1field1 :: String
163161
, dt1field2 :: Int
164-
} deriving (Eq, Show, Data, Generic)
162+
} deriving (Eq, Show, Generic)
165163

166164
instance ToJSON Datatype1
167165
instance ToForm Datatype1

servant-server/src/Servant/Server/Internal.hs

+1-1
Original file line numberDiff line numberDiff line change
@@ -607,7 +607,7 @@ instance
607607
mev :: Maybe (Either T.Text a)
608608
mev = case B.length rawQS of
609609
0 -> Nothing
610-
_ -> Just $ urlDecodeAsForm (BL.drop 1 . BL.fromStrict $ rawQS)
610+
_ -> Just $ urlDecodeAsForm $ BL.drop 1 $ BL.fromStrict rawQS
611611

612612
errReq = delayedFailFatal err400
613613
{ errBody = "Query parameter form is required"

servant-server/test/Servant/ServerSpec.hs

+9
Original file line numberDiff line numberDiff line change
@@ -514,6 +514,15 @@ queryParamFormSpec = do
514514
}
515515
liftIO $ do
516516
decode' (simpleBody response1) `shouldBe` (Just $ Animal { species = "bimac", numberOfLegs = 7})
517+
it "Just a question mark will match but return a Left" $
518+
(flip runSession) (serve queryParamFormApi qpFormServer) $ do
519+
let paramsQ = "?"
520+
response1 <- Network.Wai.Test.request defaultRequest{
521+
rawQueryString = paramsQ,
522+
queryString = parseQuery paramsQ
523+
}
524+
liftIO $ do
525+
decode' (simpleBody response1) `shouldBe` (Just $ Animal { species = "broken", numberOfLegs = 0})
517526
it "allows no query params at all" $
518527
(flip runSession) (serve queryParamFormApi qpFormServer) $ do
519528
response1 <- Network.Wai.Test.request defaultRequest

0 commit comments

Comments
 (0)