You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

86 lines
2.0 KiB

package integration_test
import (
"encoding/json"
"fmt"
"io"
"net/http"
"time"
"github.com/stretchr/testify/require"
"github.com/wagslane/go-rabbitmq"
)
func waitForConnections(require *require.Assertions, expected int) {
maxWait := 30
for i := 0; i < maxWait; i++ {
req, err := http.NewRequest(http.MethodGet, mgmtUrl+"/api/connections", http.NoBody)
require.NoError(err)
req.SetBasicAuth(rabbitmqUser, rabbitmqPass)
res, err := http.DefaultClient.Do(req)
require.NoError(err)
defer res.Body.Close()
require.Equal(200, res.StatusCode)
resBody, err := io.ReadAll(res.Body)
require.NoError(err)
connections := []map[string]interface{}{}
require.NoError(json.Unmarshal(resBody, &connections))
if len(connections) == expected {
return
}
time.Sleep(1 * time.Second)
}
require.Fail("waitForConnections timed out")
}
func terminateConnections(require *require.Assertions) {
req, err := http.NewRequest(http.MethodGet, mgmtUrl+"/api/connections", http.NoBody)
require.NoError(err)
req.SetBasicAuth(rabbitmqUser, rabbitmqPass)
res, err := http.DefaultClient.Do(req)
require.NoError(err)
defer res.Body.Close()
require.Equal(200, res.StatusCode)
resBody, err := io.ReadAll(res.Body)
require.NoError(err)
connections := []map[string]interface{}{}
require.NoError(json.Unmarshal(resBody, &connections))
require.Len(connections, 2)
for _, connection := range connections {
name := connection["name"].(string)
fmt.Println("connection", name)
req, err := http.NewRequest(http.MethodDelete, mgmtUrl+"/api/connections/"+name, http.NoBody)
require.NoError(err)
req.SetBasicAuth(rabbitmqUser, rabbitmqPass)
res, err := http.DefaultClient.Do(req)
require.NoError(err)
require.Equal(204, res.StatusCode)
}
}
func publishTestMessage(require *require.Assertions, publisher *rabbitmq.Publisher) TestMessage {
msg := TestMessage{Text: "Test"}
msgBytes, err := json.Marshal(msg)
require.NoError(err)
require.NoError(publisher.Publish(msgBytes, []string{"test"}))
return msg
}