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 +3/−2
- amqp.cabal +6/−3
- changelog.md +4/−0
- test/FromURISpec.hs +190/−0
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