@@ -13,6 +13,7 @@ import Servant.Common.BaseUrl
14spec :: Spec
14spec :: Spec
16+ let parse = parseBaseUrl :: String -> Maybe BaseUrl
16 describe "showBaseUrl" $ do
17 describe "showBaseUrl" $ do
17 it "shows a BaseUrl" $ do
18 it "shows a BaseUrl" $ do
18 showBaseUrl (BaseUrl Http "foo.com" 80 "") `shouldBe` "http://foo.com"
19 showBaseUrl (BaseUrl Http "foo.com" 80 "") `shouldBe` "http://foo.com"
@@ -30,33 +31,31 @@ spec = do
30 describe "parseBaseUrl" $ do
31 describe "parseBaseUrl" $ do
31 it "is total" $ do
32 it "is total" $ do
32 property $ \ string ->
33 property $ \ string ->
33− deepseq (fmap show (parseBaseUrl string :: Maybe BaseUrl)) True
34+ deepseq (fmap show (parse string )) True
35 it "is the inverse of showBaseUrl" $ do
36 it "is the inverse of showBaseUrl" $ do
36 property $ \ baseUrl ->
37 property $ \ baseUrl ->
37− counterexample (showBaseUrl baseUrl) $
38+ counterexample (showBaseUrl baseUrl) $ parse (showBaseUrl baseUrl) === Just baseUrl
38− (parseBaseUrl (showBaseUrl baseUrl) :: Maybe BaseUrl) ===
41 context "trailing slashes" $ do
40 context "trailing slashes" $ do
42 it "allows trailing slashes" $ do
41 it "allows trailing slashes" $ do
43− (parseBaseUrl "foo.com/" :: Maybe BaseUrl)`shouldBe` Just (BaseUrl Http "foo.com" 80 "")
42+ parse "foo.com/" `shouldBe` Just (BaseUrl Http "foo.com" 80 "")
45 it "allows trailing slashes in paths" $ do
44 it "allows trailing slashes in paths" $ do
46− (parseBaseUrl "foo.com/api/" :: Maybe BaseUrl) `shouldBe` Just (BaseUrl Http "foo.com" 80 "api")
45+ parse "foo.com/api/" `shouldBe` Just (BaseUrl Http "foo.com" 80 "api")
48 context "urls without scheme" $ do
47 context "urls without scheme" $ do
49 it "assumes http" $ do
48 it "assumes http" $ do
50− (parseBaseUrl "foo.com" :: Maybe BaseUrl) `shouldBe` Just (BaseUrl Http "foo.com" 80 "")
49+ parse "foo.com" `shouldBe` Just (BaseUrl Http "foo.com" 80 "")
52 it "allows port numbers" $ do
51 it "allows port numbers" $ do
53− (parseBaseUrl "foo.com:8080" :: Maybe BaseUrl) `shouldBe` Just (BaseUrl Http "foo.com" 8080 "")
52+ parse "foo.com:8080" `shouldBe` Just (BaseUrl Http "foo.com" 8080 "")
55 it "can parse paths" $ do
54 it "can parse paths" $ do
56− (parseBaseUrl "http://foo.com/api" :: Maybe BaseUrl) `shouldBe` Just (BaseUrl Http "foo.com" 80 "api")
55+ parse "http://foo.com/api" `shouldBe` Just (BaseUrl Http "foo.com" 80 "api")
58 it "rejects ftp urls" $ do
57 it "rejects ftp urls" $ do
59− (parseBaseUrl "ftp://foo.com" :: Maybe BaseUrl) `shouldBe` Nothing
58+ (parse "ftp://foo.com") `shouldBe` Nothing
61instance Arbitrary BaseUrl where
60instance Arbitrary BaseUrl where
62 arbitrary = BaseUrl <$>
61 arbitrary = BaseUrl <$>
@@ -71,8 +70,8 @@ instance Arbitrary BaseUrl where
71 hostNameGen = do
70 hostNameGen = do
72 first <- elements letters
71 first <- elements letters
73 middle <- listOf1 $ elements (letters ++ ['0' .. '9'] ++ ['.', '-'])
72 middle <- listOf1 $ elements (letters ++ ['0' .. '9'] ++ ['.', '-'])
74− last <- elements letters
73+ last' <- elements letters
75− return (first : middle ++ [last])
74+ return (first : middle ++ [last'])
76 portGen = frequency $
75 portGen = frequency $
77 (1, return 80) :
76 (1, return 80) :
78 (1, return 443) :
77 (1, return 443) :