mirror of
https://github.com/getAlby/lndhub.go.git
synced 2025-12-19 13:44:53 +01:00
WIP integration tests for rabbitmq
This commit is contained in:
98
integration_tests/rabbitmq_test.go
Normal file
98
integration_tests/rabbitmq_test.go
Normal file
@@ -0,0 +1,98 @@
|
||||
package integration_tests
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"encoding/json"
|
||||
"log"
|
||||
"testing"
|
||||
|
||||
"github.com/getAlby/lndhub.go/db/models"
|
||||
"github.com/getAlby/lndhub.go/lib/service"
|
||||
amqp "github.com/rabbitmq/amqp091-go"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
type RabbitMQTestSuite struct {
|
||||
TestSuite
|
||||
mlnd *MockLND
|
||||
invoiceUpdateSubCancelFn context.CancelFunc
|
||||
userToken string
|
||||
svc *service.LndhubService
|
||||
}
|
||||
|
||||
func (suite *RabbitMQTestSuite) SetupSuite() {
|
||||
mlnd := newDefaultMockLND()
|
||||
svc, err := LndHubTestServiceInit(mlnd)
|
||||
if err != nil {
|
||||
log.Fatalf("could not initialize test service: %v", err)
|
||||
}
|
||||
|
||||
suite.mlnd = mlnd
|
||||
|
||||
_, userTokens, err := createUsers(svc, 1)
|
||||
if err != nil {
|
||||
log.Fatalf("Error creating test users: %v", err)
|
||||
}
|
||||
suite.userToken = userTokens[0]
|
||||
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
suite.invoiceUpdateSubCancelFn = cancel
|
||||
go svc.InvoiceUpdateSubscription(ctx)
|
||||
|
||||
go svc.StartRabbitMqPublisher(ctx)
|
||||
}
|
||||
|
||||
func (suite *RabbitMQTestSuite) TestPublishInvoice(t *testing.T) {
|
||||
// create incoming invoice and fund account
|
||||
invoice := suite.createAddInvoiceReq(1000, "integration test webhook", suite.userToken)
|
||||
err := suite.mlnd.mockPaidInvoice(invoice, 0, false, nil)
|
||||
assert.NoError(suite.T(), err)
|
||||
|
||||
// Check consume from rabbit
|
||||
conn, err := amqp.Dial(suite.svc.Config.RabbitMQUri)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
ch, err := conn.Channel()
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
q, err := ch.QueueDeclare(
|
||||
"test_invoice",
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
nil,
|
||||
)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
m, err := ch.Consume(
|
||||
q.Name,
|
||||
"",
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
nil,
|
||||
)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
t.Log("Blocking on message channel")
|
||||
msg := <-m
|
||||
t.Logf("%s/n", string(msg.Body))
|
||||
|
||||
var recievedInvoice models.Invoice
|
||||
r := bytes.NewReader(msg.Body)
|
||||
json.NewDecoder(r).Decode(&recievedInvoice)
|
||||
|
||||
assert.Equal(t, invoice.RHash, recievedInvoice.RHash)
|
||||
}
|
||||
Reference in New Issue
Block a user