amqp-0.24.0: test/ExchangeDeclareSpec.hs
{-# OPTIONS -XOverloadedStrings #-}
module ExchangeDeclareSpec (main, spec) where
import Test.Hspec
import Network.AMQP
main :: IO ()
main = hspec spec
spec :: Spec
spec = do
describe "declareExchange" $ do
context "client-named, fanout, durable, non-autodelete" $ do
it "declares the exchange" $ do
let eName = "haskell-amqp.fanout.d.na"
conn <- openConnection "127.0.0.1" "/" "guest" "guest"
ch <- openChannel conn
_ <- declareExchange ch (newExchange {exchangeName = eName,
exchangeType = "fanout",
exchangeDurable = True})
_ <- declareExchange ch (newExchange {exchangeName = eName,
exchangePassive = True})
closeConnection conn
context "client-named, topic, non-durable, non-autodelete" $ do
it "declares the exchange" $ do
let eName = "haskell-amqp.topic.nd.na"
conn <- openConnection "127.0.0.1" "/" "guest" "guest"
ch <- openChannel conn
_ <- declareExchange ch (newExchange {exchangeName = eName,
exchangeType = "topic",
exchangeDurable = False})
_ <- declareExchange ch (newExchange {exchangeName = eName,
exchangePassive = True})
closeConnection conn
context "passive declaration when the exchange DOES NOT exist" $ do
it "throws an exception" $ do
conn <- openConnection "127.0.0.1" "/" "guest" "guest"
ch <- openChannel conn
-- silence error messages
addChannelExceptionHandler ch $ return . const ()
let x = "haskell-amqp.exchanges.Xiz2mQozyYcFrQgGmN8r"
ex = ChannelClosedException Abnormal "NOT_FOUND - no exchange 'haskell-amqp.exchanges.Xiz2mQozyYcFrQgGmN8r' in vhost '/'"
(declareExchange ch $ newExchange {exchangeName = x, exchangePassive = True}) `shouldThrow` (== ex)
closeConnection conn