Files
go-sip/cmd/saas-server/mq_test.go
T

42 lines
1.2 KiB
Go

package main
import (
"context"
"testing"
"time"
amqp "github.com/rabbitmq/amqp091-go"
)
func TestPublishConfirmReturnAndUnknown(t *testing.T) {
for _, tc := range []struct {
name, want string
ack, returned, closed bool
}{
{name: "ack", want: "confirmed", ack: true}, {name: "return", want: "unroutable", ack: true, returned: true}, {name: "nack", want: "rejected"}, {name: "closed", want: "unknown", closed: true},
} {
t.Run(tc.name, func(t *testing.T) {
confirms := make(chan amqp.Confirmation, 1)
returns := make(chan amqp.Return, 1)
if tc.returned {
returns <- amqp.Return{ReplyCode: 312}
}
if tc.closed {
close(confirms)
} else {
confirms <- amqp.Confirmation{Ack: tc.ack}
}
got, err := awaitConfirm(context.Background(), confirms, returns)
if got != tc.want || (err == nil) != (got == "confirmed") {
t.Fatalf("%s: %s %v", tc.name, got, err)
}
})
}
ctx, cancel := context.WithTimeout(context.Background(), time.Millisecond)
defer cancel()
got, err := awaitConfirm(ctx, make(chan amqp.Confirmation), make(chan amqp.Return))
if got != "unknown" || err == nil {
t.Fatalf("timeout: %s %v", got, err)
}
}