on master help sign in
Added jsonp test
25481efMichael Snoyman
runtests.hs+32
@@ -4,12 +4,15 @@ import Test.Framework.Providers.HUnit
4import Test.HUnit hiding (Test)
4import Test.HUnit hiding (Test)
5
5
6import Network.Wai
6import Network.Wai
7+import Network.Wai.Test
7import Network.Wai.Parse
8import Network.Wai.Parse
8import qualified Data.ByteString as S
9import qualified Data.ByteString as S
9import qualified Data.ByteString.Char8 as S8
10import qualified Data.ByteString.Char8 as S8
10import qualified Data.ByteString.Lazy.Char8 as L8
11import qualified Data.ByteString.Lazy.Char8 as L8
11import Control.Arrow
12import Control.Arrow
12
13
14+import Network.Wai.Middleware.Jsonp
15+
13import Data.Enumerator (run_, enumList, ($$))
16import Data.Enumerator (run_, enumList, ($$))
14import Control.Monad.IO.Class (liftIO)
17import Control.Monad.IO.Class (liftIO)
15
18
@@ -27,6 +30,7 @@ testSuite = testGroup "Network.Wai.Parse"
27 , testCase "killCR" caseKillCR
30 , testCase "killCR" caseKillCR
28 , testCase "killCRLF" caseKillCRLF
31 , testCase "killCRLF" caseKillCRLF
29 , testCase "takeLine" caseTakeLine
32 , testCase "takeLine" caseTakeLine
33+ , testCase "jsonp" caseJsonp
30 ]
34 ]
31
35
32caseParseQueryString :: Assertion
36caseParseQueryString :: Assertion
@@ -191,3 +195,31 @@ caseTakeLine = do
191 helper haystack needle = do
195 helper haystack needle = do
192 x <- run_ $ enumList 1 [haystack] $$ takeLine
196 x <- run_ $ enumList 1 [haystack] $$ takeLine
193 Just needle @=? x
197 Just needle @=? x
198+
199+jsonpApp = jsonp $ const $ return $ responseLBS
200+ status200
201+ [("Content-Type", "application/json")]
202+ "{\"foo\":\"bar\"}"
203+
204+caseJsonp :: Assertion
205+caseJsonp = flip runSession jsonpApp $ do
206+ sres1 <- request Request
207+ { queryString = "callback=test"
208+ , requestHeaders = [("Accept", "text/javascript")]
209+ }
210+ assertContentType "text/javascript" sres1
211+ assertBody "test({\"foo\":\"bar\"})" sres1
212+
213+ sres2 <- request Request
214+ { queryString = "call_back=test"
215+ , requestHeaders = [("Accept", "text/javascript")]
216+ }
217+ assertContentType "application/json" sres2
218+ assertBody "{\"foo\":\"bar\"}" sres2
219+
220+ sres3 <- request Request
221+ { queryString = "callback=test"
222+ , requestHeaders = [("Accept", "text/html")]
223+ }
224+ assertContentType "application/json" sres3
225+ assertBody "{\"foo\":\"bar\"}" sres3