packages feed

amqp 0.22.2 → 0.23.0

raw patch · 4 files changed

+203/−5 lines, 4 filesdep +data-default-classdep ~crypton-connectionPVP ok

version bump matches the API change (PVP)

Dependencies added: data-default-class

Dependency ranges changed: crypton-connection

API changes (from Hackage documentation)

Files

Network/AMQP/Internal.hs view
@@ -11,6 +11,7 @@ import Data.Binary
 import Data.Binary.Get
 import Data.Binary.Put as BPut
+import Data.Default.Class
 import Data.Int (Int64)
 import Data.Maybe
 import Data.Text (Text)
@@ -174,8 +175,8 @@ connectionTLSSettings :: TLSSettings -> Maybe Conn.TLSSettings
 connectionTLSSettings tlsSettings =
     Just $ case tlsSettings of
-        TLSTrusted -> Conn.TLSSettingsSimple False False False
-        TLSUntrusted -> Conn.TLSSettingsSimple True False False
+        TLSTrusted -> Conn.TLSSettingsSimple False False False def
+        TLSUntrusted -> Conn.TLSSettingsSimple True False False def
         TLSCustom x -> x
 
 -- | A 'SASLMechanism' is described by its name ('saslName'), its initial response ('saslInitialResponse'), and an optional function ('saslChallengeFunc') that
amqp.cabal view
@@ -1,5 +1,5 @@ Name:                amqp
-Version:             0.22.2
+Version:             0.23.0
 Synopsis:            Client library for AMQP servers (currently only RabbitMQ)
 Description:         Client library for AMQP servers (currently only RabbitMQ)
 License:             BSD3
@@ -24,11 +24,12 @@     containers>=0.2,
     bytestring>=0.9,
     data-binary-ieee754>=0.4.2.1,
+    data-default-class >= 0.1,
     text>=0.11.2,
     split>=0.2,
     clock >= 0.4.0.1,
     monad-control >= 0.3,
-    crypton-connection >= 0.3.1 && <= 0.4,
+    crypton-connection >= 0.4 && <= 0.5,
     vector,
     stm >= 2.4.0,
     network-uri >= 2.6,
@@ -67,6 +68,7 @@       ConnectionSpec
       ExchangeDeclareSpec
       ExchangeDeleteSpec
+      FromURISpec
       QueueDeclareSpec
       QueueDeleteSpec
       QueuePurgeSpec
@@ -76,12 +78,13 @@     , containers>=0.2
     , bytestring>=0.9
     , data-binary-ieee754>=0.4.2.1
+    , data-default-class >= 0.1
     , text>=0.11.2
     , split>=0.2
     , clock >= 0.4.0.1
     , hspec              >= 1.3
     , hspec-expectations >= 0.3.3
-    , crypton-connection >= 0.3.1 && <= 0.4
+    , crypton-connection >= 0.4 && <= 0.5
     , vector
     , stm >= 2.4.0
     , network-uri >= 2.6
changelog.md view
@@ -1,3 +1,7 @@+### Version 0.23.0
+
+* bump dependency bounds for `crypton-connection`
+
 ### Version 0.22.2
 
 * replace `connection` dependency with `crypton-connection`
+ test/FromURISpec.hs view
@@ -0,0 +1,190 @@+{-# OPTIONS -XOverloadedStrings #-}
+
+
+module FromURISpec (main, spec) where
+
+
+import              Network.AMQP
+import              Test.Hspec
+
+
+main :: IO ()
+main = hspec spec
+
+spec :: Spec
+spec = do
+    describe "fromURI" $ do
+        it "empty" $ do
+            let o = fromURI ""
+            coServers o `shouldBe` [("localhost", 5672)]
+            coVHost o `shouldBe` "/"
+            -- avoid undefined SASLMechanism Show instance
+            (saslName <$> coAuth o) `shouldBe` ["PLAIN"]
+            (saslInitialResponse <$> coAuth o) `shouldBe` ["\NULguest\NULguest"]
+            -- avoid undefined TLSSettings Show instance
+            (isTrusted $ coTLSSettings o) `shouldBe` False
+        
+        it "amqp auth host" $ do
+            let o = fromURI "amqp://u:p@127.0.0.1"
+            coServers o `shouldBe` [("127.0.0.1", 5672)]
+            coVHost o `shouldBe` "/"
+            (saslName <$> coAuth o) `shouldBe` ["PLAIN"]
+            (saslInitialResponse <$> coAuth o) `shouldBe` ["\NULu\NULp"]
+            (isTrusted $ coTLSSettings o) `shouldBe` False
+        
+        it "amqp auth host-2" $ do
+            let o = fromURI "amqp://u:p@127.0.0.1,127.0.0.2"
+            coServers o `shouldBe` [("127.0.0.1", 5672),("127.0.0.2", 5672)]
+            coVHost o `shouldBe` "/"
+            (saslName <$> coAuth o) `shouldBe` ["PLAIN"]
+            (saslInitialResponse <$> coAuth o) `shouldBe` ["\NULu\NULp"]
+            (isTrusted $ coTLSSettings o) `shouldBe` False
+        
+        it "amqp auth host port" $ do
+            let o = fromURI "amqp://u:p@127.0.0.1:5672"
+            coServers o `shouldBe` [("127.0.0.1", 5672)]
+            coVHost o `shouldBe` "/"
+            (saslName <$> coAuth o) `shouldBe` ["PLAIN"]
+            (saslInitialResponse <$> coAuth o) `shouldBe` ["\NULu\NULp"]
+            (isTrusted $ coTLSSettings o) `shouldBe` False
+        
+        it "amqp auth host-2 port" $ do
+            let o = fromURI "amqp://u:p@127.0.0.1,127.0.0.2:5672"
+            coServers o `shouldBe` [("127.0.0.1", 5672),("127.0.0.2", 5672)]
+            coVHost o `shouldBe` "/"
+            (saslName <$> coAuth o) `shouldBe` ["PLAIN"]
+            (saslInitialResponse <$> coAuth o) `shouldBe` ["\NULu\NULp"]
+            (isTrusted $ coTLSSettings o) `shouldBe` False
+        
+        it "amqp auth host-2 port-2" $ do
+            let o = fromURI "amqp://u:p@127.0.0.1:5672,127.0.0.2:5672"
+            coServers o `shouldBe` [("127.0.0.1", 5672),("127.0.0.2", 5672)]
+            coVHost o `shouldBe` "/"
+            (saslName <$> coAuth o) `shouldBe` ["PLAIN"]
+            (saslInitialResponse <$> coAuth o) `shouldBe` ["\NULu\NULp"]
+            (isTrusted $ coTLSSettings o) `shouldBe` False
+        
+        it "amqp auth host port vhost" $ do
+            let o = fromURI "amqp://u:p@127.0.0.1:5672/v"
+            coServers o `shouldBe` [("127.0.0.1", 5672)]
+            coVHost o `shouldBe` "v"
+            (saslName <$> coAuth o) `shouldBe` ["PLAIN"]
+            (saslInitialResponse <$> coAuth o) `shouldBe` ["\NULu\NULp"]
+            (isTrusted $ coTLSSettings o) `shouldBe` False
+        
+        it "amqp auth host-2 port-2 vhost" $ do
+            let o = fromURI "amqp://u:p@127.0.0.1:5673,127.0.0.2:5674/v"
+            coServers o `shouldBe` [("127.0.0.1", 5673),("127.0.0.2", 5674)]
+            coVHost o `shouldBe` "v"
+            (saslName <$> coAuth o) `shouldBe` ["PLAIN"]
+            (saslInitialResponse <$> coAuth o) `shouldBe` ["\NULu\NULp"]
+            (isTrusted $ coTLSSettings o) `shouldBe` False
+        
+        it "amqp auth host-3 port-3 vhost" $ do
+            let o = fromURI "amqp://a:b@h1:8001,h2:8002,h3:8003/w"
+            coServers o `shouldBe` [("h1", 8001),("h2", 8002),("h3", 8003)]
+            coVHost o `shouldBe` "w"
+            (saslName <$> coAuth o) `shouldBe` ["PLAIN"]
+            (saslInitialResponse <$> coAuth o) `shouldBe` ["\NULa\NULb"]
+            (isTrusted $ coTLSSettings o) `shouldBe` False
+        
+        it "amqp host" $ do
+            let o = fromURI "amqp://127.0.0.1"
+            -- this appears to break: user host
+            coServers o `shouldBe` [("localhost", 5672)]
+            coVHost o `shouldBe` "/"
+            (saslName <$> coAuth o) `shouldBe` ["PLAIN"]
+            (saslInitialResponse <$> coAuth o) `shouldBe`
+                ["\NUL127.0.0.1\NULguest"]
+            (isTrusted $ coTLSSettings o) `shouldBe` False
+        
+        it "amqp host-2" $ do
+            let o = fromURI "amqp://127.0.0.1,127.0.0.2"
+            -- this appears to break: user host
+            coServers o `shouldBe` [("localhost", 5672)]
+            coVHost o `shouldBe` "/"
+            (saslName <$> coAuth o) `shouldBe` ["PLAIN"]
+            (saslInitialResponse <$> coAuth o) `shouldBe`
+                ["\NUL127.0.0.1,127.0.0.2\NULguest"]
+            (isTrusted $ coTLSSettings o) `shouldBe` False
+        
+        it "amqps auth host" $ do
+            let o = fromURI "amqps://u:p@127.0.0.1"
+            coServers o `shouldBe` [("127.0.0.1", 5671)]
+            coVHost o `shouldBe` "/"
+            (saslName <$> coAuth o) `shouldBe` ["PLAIN"]
+            (saslInitialResponse <$> coAuth o) `shouldBe` ["\NULu\NULp"]
+            (isTrusted $ coTLSSettings o) `shouldBe` True
+        
+        it "amqps auth host-2" $ do
+            let o = fromURI "amqps://u:p@127.0.0.1,127.0.0.2"
+            coServers o `shouldBe` [("127.0.0.1", 5671),("127.0.0.2", 5671)]
+            coVHost o `shouldBe` "/"
+            (saslName <$> coAuth o) `shouldBe` ["PLAIN"]
+            (saslInitialResponse <$> coAuth o) `shouldBe` ["\NULu\NULp"]
+            (isTrusted $ coTLSSettings o) `shouldBe` True
+        
+        it "amqps auth host port" $ do
+            let o = fromURI "amqps://u:p@127.0.0.1:5672"
+            coServers o `shouldBe` [("127.0.0.1", 5672)]
+            coVHost o `shouldBe` "/"
+            (saslName <$> coAuth o) `shouldBe` ["PLAIN"]
+            (saslInitialResponse <$> coAuth o) `shouldBe` ["\NULu\NULp"]
+            (isTrusted $ coTLSSettings o) `shouldBe` True
+        
+        it "amqps auth host-2 port" $ do
+            let o = fromURI "amqps://u:p@127.0.0.1,127.0.0.1:5673"
+            coServers o `shouldBe` [("127.0.0.1", 5671),("127.0.0.1", 5673)]
+            coVHost o `shouldBe` "/"
+            (saslName <$> coAuth o) `shouldBe` ["PLAIN"]
+            (saslInitialResponse <$> coAuth o) `shouldBe` ["\NULu\NULp"]
+            (isTrusted $ coTLSSettings o) `shouldBe` True
+        
+        it "amqps auth host-2 port-2" $ do
+            let o = fromURI "amqps://u:p@127.0.0.1:5672,127.0.0.1:5673"
+            coServers o `shouldBe` [("127.0.0.1", 5672),("127.0.0.1", 5673)]
+            coVHost o `shouldBe` "/"
+            (saslName <$> coAuth o) `shouldBe` ["PLAIN"]
+            (saslInitialResponse <$> coAuth o) `shouldBe` ["\NULu\NULp"]
+            (isTrusted $ coTLSSettings o) `shouldBe` True
+        
+        it "amqps auth host port vhost" $ do
+            let o = fromURI "amqps://u:p@127.0.0.1:5672/v"
+            coServers o `shouldBe` [("127.0.0.1", 5672)]
+            coVHost o `shouldBe` "v"
+            (saslName <$> coAuth o) `shouldBe` ["PLAIN"]
+            (saslInitialResponse <$> coAuth o) `shouldBe` ["\NULu\NULp"]
+            (isTrusted $ coTLSSettings o) `shouldBe` True
+        
+        it "amqps auth host-2 port-2 vhost" $ do
+            let o = fromURI "amqps://u:p@127.0.0.1:5672,127.0.0.2:5673/v"
+            coServers o `shouldBe` [("127.0.0.1", 5672),("127.0.0.2", 5673)]
+            coVHost o `shouldBe` "v"
+            (saslName <$> coAuth o) `shouldBe` ["PLAIN"]
+            (saslInitialResponse <$> coAuth o) `shouldBe` ["\NULu\NULp"]
+            (isTrusted $ coTLSSettings o) `shouldBe` True
+        
+        it "amqps host" $ do
+            let o = fromURI "amqps://127.0.0.1"
+            -- this appears to break: user host
+            coServers o `shouldBe` [("localhost", 5671)]
+            coVHost o `shouldBe` "/"
+            (saslName <$> coAuth o) `shouldBe` ["PLAIN"]
+            (saslInitialResponse <$> coAuth o) `shouldBe`
+                ["\NUL127.0.0.1\NULguest"]
+            (isTrusted $ coTLSSettings o) `shouldBe` True
+        
+        it "amqps host-2" $ do
+            let o = fromURI "amqps://127.0.0.1,127.0.0.2"
+            -- this appears to break: user host
+            coServers o `shouldBe` [("localhost", 5671)]
+            coVHost o `shouldBe` "/"
+            (saslName <$> coAuth o) `shouldBe` ["PLAIN"]
+            (saslInitialResponse <$> coAuth o) `shouldBe`
+                ["\NUL127.0.0.1,127.0.0.2\NULguest"]
+            (isTrusted $ coTLSSettings o) `shouldBe` True
+
+
+isTrusted :: Maybe TLSSettings -> Bool
+isTrusted (Just TLSTrusted) = True
+isTrusted _ = False