2025-02-17 21:04:13 +08:00
|
|
|
package rabbitmqamqp
|
2024-09-11 20:42:05 +08:00
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"context"
|
2024-10-02 06:25:12 +08:00
|
|
|
|
2024-09-11 20:42:05 +08:00
|
|
|
. "github.com/onsi/ginkgo/v2"
|
|
|
|
|
. "github.com/onsi/gomega"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
var _ = Describe("AMQP Exchange test ", func() {
|
2025-01-16 22:26:12 +08:00
|
|
|
var connection *AmqpConnection
|
|
|
|
|
var management *AmqpManagement
|
2024-09-11 20:42:05 +08:00
|
|
|
BeforeEach(func() {
|
2025-03-05 16:46:28 +08:00
|
|
|
conn, err := Dial(context.TODO(), "amqp://", nil)
|
2024-11-21 17:34:08 +08:00
|
|
|
connection = conn
|
2024-09-11 20:42:05 +08:00
|
|
|
Expect(err).To(BeNil())
|
|
|
|
|
management = connection.Management()
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
AfterEach(func() {
|
|
|
|
|
Expect(connection.Close(context.Background())).To(BeNil())
|
|
|
|
|
})
|
|
|
|
|
|
2024-09-18 00:59:33 +08:00
|
|
|
It("AMQP Exchange Declare with Default and Delete should succeed", func() {
|
|
|
|
|
const exchangeName = "AMQP Exchange Declare and Delete with Default should succeed"
|
2025-01-30 18:29:44 +08:00
|
|
|
exchangeInfo, err := management.DeclareExchange(context.TODO(), &DirectExchangeSpecification{
|
2024-11-15 15:37:28 +08:00
|
|
|
Name: exchangeName,
|
|
|
|
|
})
|
2024-09-11 20:42:05 +08:00
|
|
|
Expect(err).To(BeNil())
|
|
|
|
|
Expect(exchangeInfo).NotTo(BeNil())
|
2024-11-15 15:37:28 +08:00
|
|
|
Expect(exchangeInfo.Name()).To(Equal(exchangeName))
|
|
|
|
|
err = management.DeleteExchange(context.TODO(), exchangeName)
|
2024-09-11 20:42:05 +08:00
|
|
|
Expect(err).To(BeNil())
|
|
|
|
|
})
|
|
|
|
|
|
2024-09-18 00:59:33 +08:00
|
|
|
It("AMQP Exchange Declare with Topic and Delete should succeed", func() {
|
|
|
|
|
const exchangeName = "AMQP Exchange Declare with Topic and Delete should succeed"
|
2025-01-30 18:29:44 +08:00
|
|
|
exchangeInfo, err := management.DeclareExchange(context.TODO(), &TopicExchangeSpecification{
|
|
|
|
|
Name: exchangeName,
|
2024-11-15 15:37:28 +08:00
|
|
|
})
|
2024-09-11 20:42:05 +08:00
|
|
|
Expect(err).To(BeNil())
|
|
|
|
|
Expect(exchangeInfo).NotTo(BeNil())
|
2024-11-15 15:37:28 +08:00
|
|
|
Expect(exchangeInfo.Name()).To(Equal(exchangeName))
|
|
|
|
|
err = management.DeleteExchange(context.TODO(), exchangeName)
|
2024-09-11 20:42:05 +08:00
|
|
|
Expect(err).To(BeNil())
|
|
|
|
|
})
|
|
|
|
|
|
2024-09-18 00:59:33 +08:00
|
|
|
It("AMQP Exchange Declare with FanOut and Delete should succeed", func() {
|
|
|
|
|
const exchangeName = "AMQP Exchange Declare with FanOut and Delete should succeed"
|
2025-01-30 18:29:44 +08:00
|
|
|
exchangeInfo, err := management.DeclareExchange(context.TODO(), &FanOutExchangeSpecification{
|
|
|
|
|
Name: exchangeName,
|
2025-02-21 17:32:00 +08:00
|
|
|
Arguments: map[string]any{
|
|
|
|
|
"x-foo": "bar",
|
|
|
|
|
},
|
2024-11-15 15:37:28 +08:00
|
|
|
})
|
2024-09-11 20:42:05 +08:00
|
|
|
Expect(err).To(BeNil())
|
|
|
|
|
Expect(exchangeInfo).NotTo(BeNil())
|
2024-11-15 15:37:28 +08:00
|
|
|
Expect(exchangeInfo.Name()).To(Equal(exchangeName))
|
|
|
|
|
err = management.DeleteExchange(context.TODO(), exchangeName)
|
2024-09-11 20:42:05 +08:00
|
|
|
Expect(err).To(BeNil())
|
|
|
|
|
})
|
2025-01-30 18:29:44 +08:00
|
|
|
|
2025-02-19 19:02:05 +08:00
|
|
|
It("AMQP Exchange Declare with Custom Exchange and Delete should succeed", func() {
|
|
|
|
|
var exchangeName = generateName("AMQP Exchange Declare with Custom Exchange and Delete should succeed")
|
|
|
|
|
|
|
|
|
|
exchangeInfo, err := management.DeclareExchange(context.TODO(), &CustomExchangeSpecification{
|
|
|
|
|
Name: exchangeName,
|
|
|
|
|
ExchangeTypeName: "x-local-random",
|
2025-02-21 17:32:00 +08:00
|
|
|
Arguments: map[string]any{
|
|
|
|
|
"x-delayed-type": "direct",
|
|
|
|
|
},
|
2025-02-19 19:02:05 +08:00
|
|
|
})
|
|
|
|
|
Expect(err).To(BeNil())
|
|
|
|
|
Expect(exchangeInfo).NotTo(BeNil())
|
|
|
|
|
Expect(exchangeInfo.Name()).To(Equal(exchangeName))
|
|
|
|
|
err = management.DeleteExchange(context.TODO(), exchangeName)
|
|
|
|
|
Expect(err).To(BeNil())
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
It("AMQP Exchange Declare with Headers Exchange and Delete should succeed", func() {
|
|
|
|
|
var exchangeName = generateName("AMQP Exchange Declare with Headers Exchange and Delete should succeed")
|
|
|
|
|
|
|
|
|
|
exchangeInfo, err := management.DeclareExchange(context.TODO(), &HeadersExchangeSpecification{
|
|
|
|
|
Name: exchangeName,
|
|
|
|
|
})
|
|
|
|
|
Expect(err).To(BeNil())
|
|
|
|
|
Expect(exchangeInfo).NotTo(BeNil())
|
|
|
|
|
Expect(exchangeInfo.Name()).To(Equal(exchangeName))
|
|
|
|
|
err = management.DeleteExchange(context.TODO(), exchangeName)
|
|
|
|
|
Expect(err).To(BeNil())
|
|
|
|
|
})
|
|
|
|
|
|
2025-01-30 18:29:44 +08:00
|
|
|
It("AMQP Exchange should fail when specification is nil", func() {
|
|
|
|
|
_, err := management.DeclareExchange(context.TODO(), nil)
|
|
|
|
|
Expect(err).NotTo(BeNil())
|
|
|
|
|
Expect(err.Error()).To(ContainSubstring("exchange specification cannot be nil"))
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
It("AMQP Exchange should fail when name is empty", func() {
|
|
|
|
|
_, err := management.DeclareExchange(context.TODO(), &TopicExchangeSpecification{
|
|
|
|
|
Name: "",
|
|
|
|
|
IsAutoDelete: false,
|
|
|
|
|
})
|
|
|
|
|
Expect(err).NotTo(BeNil())
|
|
|
|
|
Expect(err.Error()).To(ContainSubstring("exchange name cannot be empty"))
|
|
|
|
|
})
|
2024-09-11 20:42:05 +08:00
|
|
|
})
|