rabbitmq-amqp-go-client/pkg/rabbitmqamqp/address_test.go

63 lines
1.9 KiB
Go

package rabbitmqamqp
import (
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
)
var _ = Describe("address builder test ", func() {
// Error cases
Describe("Error cases", func() {
DescribeTable("should return appropriate errors",
func(exchange, key, queue *string, expectedErr string) {
_, err := address(exchange, key, queue, nil)
Expect(err).To(HaveOccurred())
Expect(err.Error()).To(Equal(expectedErr))
},
Entry("when both exchange and queue are set",
stringPtr("my_exchange"), nil, stringPtr("my_queue"),
"exchange and queue cannot be set together"),
Entry("when neither exchange nor queue is set",
nil, nil, nil,
"exchange or queue must be set"),
)
})
// Exchange-related cases
Describe("Exchange addresses", func() {
DescribeTable("should generate correct exchange addresses",
func(exchange, key *string, expected string) {
address, err := address(exchange, key, nil, nil)
Expect(err).NotTo(HaveOccurred())
Expect(address).To(Equal(expected))
},
Entry("with exchange and key",
stringPtr("my_exchange"), stringPtr("my_key"),
"/exchanges/my_exchange/my_key"),
Entry("with exchange only",
stringPtr("my_exchange"), nil,
"/exchanges/my_exchange"),
Entry("with special characters",
stringPtr("my_ exchange/()"), stringPtr("my_key "),
"/exchanges/my_%20exchange%2F%28%29/my_key%20"),
)
})
// Queue-related cases
Describe("Queue addresses", func() {
It("should generate correct queue address with special characters", func() {
queue := "my_queue>"
address, err := address(nil, nil, &queue, nil)
Expect(err).NotTo(HaveOccurred())
Expect(address).To(Equal("/queues/my_queue%3E"))
})
It("should generate correct purge queue address", func() {
queue := "my_queue"
address, err := purgeQueueAddress(&queue)
Expect(err).NotTo(HaveOccurred())
Expect(address).To(Equal("/queues/my_queue/messages"))
})
})
})