kra-oa/pkg/mq/rabbitmq_test.go

49 lines
1.3 KiB
Go

package mq
import (
"context"
"errors"
"testing"
)
func TestDisabledRabbitMQIsSafeAndUnavailable(t *testing.T) {
client, err := NewRabbitMQ(RabbitMQConfig{})
if err != nil {
t.Fatal(err)
}
if client.Connected() {
t.Fatal("disabled rabbitmq reported connected")
}
if err = client.Publish(context.Background(), "orders.paid", []byte("test"), AtLeastOnce, false); !errors.Is(err, ErrUnavailable) {
t.Fatalf("publish error = %v", err)
}
if err = client.Close(); err != nil {
t.Fatal(err)
}
}
func TestEnabledRabbitMQRequiresTopology(t *testing.T) {
if _, err := NewRabbitMQ(RabbitMQConfig{Enabled: true}); err == nil {
t.Fatal("enabled rabbitmq without host and topology should fail")
}
}
func TestRabbitRoutingKeyMatches(t *testing.T) {
tests := []struct {
pattern string
key string
want bool
}{
{pattern: "orders.*.paid", key: "orders.cn.paid", want: true},
{pattern: "orders.#", key: "orders.cn.created", want: true},
{pattern: "#.paid", key: "orders.cn.paid", want: true},
{pattern: "orders.*", key: "orders.cn.paid", want: false},
{pattern: "orders.created", key: "orders.paid", want: false},
}
for _, test := range tests {
if got := rabbitRoutingKeyMatches("topic", test.pattern, test.key); got != test.want {
t.Fatalf("match(%q, %q) = %v, want %v", test.pattern, test.key, got, test.want)
}
}
}