Skip to content
This repository has been archived by the owner on Sep 2, 2024. It is now read-only.

Commit

Permalink
fix: tests
Browse files Browse the repository at this point in the history
  • Loading branch information
rolznz committed Jul 3, 2024
1 parent e0d5980 commit d3027a1
Show file tree
Hide file tree
Showing 6 changed files with 125 additions and 47 deletions.
42 changes: 33 additions & 9 deletions nip47/controllers/list_transactions_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"context"
"encoding/json"
"testing"
"time"

"github.com/nbd-wtf/go-nostr"
"github.com/stretchr/testify/assert"
Expand Down Expand Up @@ -76,10 +77,33 @@ func TestHandleListTransactionsEvent_WithPermission(t *testing.T) {
err = json.Unmarshal([]byte(nip47ListTransactionsJson), nip47Request)
assert.NoError(t, err)

app, _, err := tests.CreateApp(svc)
assert.NoError(t, err)

dbRequestEvent := &db.RequestEvent{}
err = svc.DB.Create(&dbRequestEvent).Error
assert.NoError(t, err)

for i, _ := range tests.MockLNClientTransactions {
feesPaid := uint64(tests.MockLNClientTransactions[i].FeesPaid)
settledAt := time.Unix(*tests.MockLNClientTransactions[i].SettledAt, 0)
err = svc.DB.Create(&db.Transaction{
Type: tests.MockLNClientTransactions[i].Type,
PaymentRequest: tests.MockLNClientTransactions[i].Invoice,
Description: tests.MockLNClientTransactions[i].Description,
DescriptionHash: tests.MockLNClientTransactions[i].DescriptionHash,
Preimage: &tests.MockLNClientTransactions[i].Preimage,
PaymentHash: tests.MockLNClientTransactions[i].PaymentHash,
Amount: uint64(tests.MockLNClientTransactions[i].Amount),
Fee: &feesPaid,
SettledAt: &settledAt,
State: transactions.TRANSACTION_STATE_SETTLED,
AppId: &app.ID,
CreatedAt: time.Now().Add(time.Duration(-i) * time.Hour),
}).Error
assert.NoError(t, err)
}

checkPermission := func(amountMsat uint64) *models.Response {
return nil
}
Expand All @@ -99,13 +123,13 @@ func TestHandleListTransactionsEvent_WithPermission(t *testing.T) {

assert.Equal(t, 2, len(publishedResponse.Result.(*listTransactionsResponse).Transactions))
transaction := publishedResponse.Result.(*listTransactionsResponse).Transactions[0]
assert.Equal(t, tests.MockTransactions[0].Type, transaction.Type)
assert.Equal(t, tests.MockTransactions[0].Invoice, transaction.Invoice)
assert.Equal(t, tests.MockTransactions[0].Description, transaction.Description)
assert.Equal(t, tests.MockTransactions[0].DescriptionHash, transaction.DescriptionHash)
assert.Equal(t, tests.MockTransactions[0].Preimage, transaction.Preimage)
assert.Equal(t, tests.MockTransactions[0].PaymentHash, transaction.PaymentHash)
assert.Equal(t, tests.MockTransactions[0].Amount, transaction.Amount)
assert.Equal(t, tests.MockTransactions[0].FeesPaid, transaction.FeesPaid)
assert.Equal(t, tests.MockTransactions[0].SettledAt, transaction.SettledAt)
assert.Equal(t, tests.MockLNClientTransactions[0].Type, transaction.Type)
assert.Equal(t, tests.MockLNClientTransactions[0].Invoice, transaction.Invoice)
assert.Equal(t, tests.MockLNClientTransactions[0].Description, transaction.Description)
assert.Equal(t, tests.MockLNClientTransactions[0].DescriptionHash, transaction.DescriptionHash)
assert.Equal(t, tests.MockLNClientTransactions[0].Preimage, transaction.Preimage)
assert.Equal(t, tests.MockLNClientTransactions[0].PaymentHash, transaction.PaymentHash)
assert.Equal(t, tests.MockLNClientTransactions[0].Amount, transaction.Amount)
assert.Equal(t, tests.MockLNClientTransactions[0].FeesPaid, transaction.FeesPaid)
assert.Equal(t, tests.MockLNClientTransactions[0].SettledAt, transaction.SettledAt)
}
39 changes: 28 additions & 11 deletions nip47/controllers/lookup_invoice_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"context"
"encoding/json"
"testing"
"time"

"github.com/nbd-wtf/go-nostr"
"github.com/stretchr/testify/assert"
Expand All @@ -15,11 +16,11 @@ import (
"github.com/getAlby/nostr-wallet-connect/transactions"
)

const nip47LookupInvoiceJson = `
var nip47LookupInvoiceJson = `
{
"method": "lookup_invoice",
"params": {
"payment_hash": "4ad9cd27989b514d868e755178378019903a8d78767e3fceb211af9dd00e7a94"
"payment_hash": "` + tests.MockLNClientTransaction.PaymentHash + `"
}
}
`
Expand Down Expand Up @@ -86,6 +87,22 @@ func TestHandleLookupInvoiceEvent_WithPermission(t *testing.T) {
err = svc.DB.Create(&dbRequestEvent).Error
assert.NoError(t, err)

feesPaid := uint64(tests.MockLNClientTransaction.FeesPaid)
settledAt := time.Unix(*tests.MockLNClientTransaction.SettledAt, 0)
err = svc.DB.Create(&db.Transaction{
Type: tests.MockLNClientTransaction.Type,
PaymentRequest: tests.MockLNClientTransaction.Invoice,
Description: tests.MockLNClientTransaction.Description,
DescriptionHash: tests.MockLNClientTransaction.DescriptionHash,
Preimage: &tests.MockLNClientTransaction.Preimage,
PaymentHash: tests.MockLNClientTransaction.PaymentHash,
Amount: uint64(tests.MockLNClientTransaction.Amount),
Fee: &feesPaid,
SettledAt: &settledAt,
AppId: &app.ID,
}).Error
assert.NoError(t, err)

checkPermission := func(amountMsat uint64) *models.Response {
return nil
}
Expand All @@ -103,13 +120,13 @@ func TestHandleLookupInvoiceEvent_WithPermission(t *testing.T) {

assert.Nil(t, publishedResponse.Error)
transaction := publishedResponse.Result.(*lookupInvoiceResponse)
assert.Equal(t, tests.MockTransaction.Type, transaction.Type)
assert.Equal(t, tests.MockTransaction.Invoice, transaction.Invoice)
assert.Equal(t, tests.MockTransaction.Description, transaction.Description)
assert.Equal(t, tests.MockTransaction.DescriptionHash, transaction.DescriptionHash)
assert.Equal(t, tests.MockTransaction.Preimage, transaction.Preimage)
assert.Equal(t, tests.MockTransaction.PaymentHash, transaction.PaymentHash)
assert.Equal(t, tests.MockTransaction.Amount, transaction.Amount)
assert.Equal(t, tests.MockTransaction.FeesPaid, transaction.FeesPaid)
assert.Equal(t, tests.MockTransaction.SettledAt, transaction.SettledAt)
assert.Equal(t, tests.MockLNClientTransaction.Type, transaction.Type)
assert.Equal(t, tests.MockLNClientTransaction.Invoice, transaction.Invoice)
assert.Equal(t, tests.MockLNClientTransaction.Description, transaction.Description)
assert.Equal(t, tests.MockLNClientTransaction.DescriptionHash, transaction.DescriptionHash)
assert.Equal(t, tests.MockLNClientTransaction.Preimage, transaction.Preimage)
assert.Equal(t, tests.MockLNClientTransaction.PaymentHash, transaction.PaymentHash)
assert.Equal(t, tests.MockLNClientTransaction.Amount, transaction.Amount)
assert.Equal(t, tests.MockLNClientTransaction.FeesPaid, transaction.FeesPaid)
assert.Equal(t, tests.MockLNClientTransaction.SettledAt, transaction.SettledAt)
}
2 changes: 1 addition & 1 deletion nip47/controllers/make_invoice_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -104,5 +104,5 @@ func TestHandleMakeInvoiceEvent_WithPermission(t *testing.T) {
HandleMakeInvoiceEvent(ctx, nip47Request, dbRequestEvent.ID, *dbRequestEvent.AppId, checkPermission, publishResponse)

assert.Nil(t, publishedResponse.Error)
assert.Equal(t, tests.MockTransaction.Invoice, publishedResponse.Result.(*makeInvoiceResponse).Invoice)
assert.Equal(t, tests.MockLNClientTransaction.Invoice, publishedResponse.Result.(*makeInvoiceResponse).Invoice)
}
77 changes: 57 additions & 20 deletions nip47/notifications/nip47_notifier_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"encoding/json"
"log"
"testing"
"time"

"github.com/getAlby/nostr-wallet-connect/db"
"github.com/getAlby/nostr-wallet-connect/events"
Expand Down Expand Up @@ -33,13 +34,29 @@ func TestSendNotification_PaymentReceived(t *testing.T) {
err = svc.DB.Create(appPermission).Error
assert.NoError(t, err)

feesPaid := uint64(tests.MockLNClientTransaction.FeesPaid)
settledAt := time.Unix(*tests.MockLNClientTransaction.SettledAt, 0)
err = svc.DB.Create(&db.Transaction{
Type: tests.MockLNClientTransaction.Type,
PaymentRequest: tests.MockLNClientTransaction.Invoice,
Description: tests.MockLNClientTransaction.Description,
DescriptionHash: tests.MockLNClientTransaction.DescriptionHash,
Preimage: &tests.MockLNClientTransaction.Preimage,
PaymentHash: tests.MockLNClientTransaction.PaymentHash,
Amount: uint64(tests.MockLNClientTransaction.Amount),
Fee: &feesPaid,
SettledAt: &settledAt,
AppId: &app.ID,
}).Error
assert.NoError(t, err)

nip47NotificationQueue := NewNip47NotificationQueue()
svc.EventPublisher.RegisterSubscriber(nip47NotificationQueue)

testEvent := &events.Event{
Event: "nwc_payment_received",
Properties: &events.PaymentReceivedEventProperties{
PaymentHash: tests.MockPaymentHash,
PaymentHash: tests.MockLNClientTransaction.PaymentHash,
},
}

Expand Down Expand Up @@ -70,15 +87,15 @@ func TestSendNotification_PaymentReceived(t *testing.T) {
assert.Equal(t, PAYMENT_RECEIVED_NOTIFICATION, unmarshalledResponse.NotificationType)

transaction := (unmarshalledResponse.Notification.(*PaymentReceivedNotification))
assert.Equal(t, tests.MockTransaction.Type, transaction.Type)
assert.Equal(t, tests.MockTransaction.Invoice, transaction.Invoice)
assert.Equal(t, tests.MockTransaction.Description, transaction.Description)
assert.Equal(t, tests.MockTransaction.DescriptionHash, transaction.DescriptionHash)
assert.Equal(t, tests.MockTransaction.Preimage, transaction.Preimage)
assert.Equal(t, tests.MockTransaction.PaymentHash, transaction.PaymentHash)
assert.Equal(t, tests.MockTransaction.Amount, transaction.Amount)
assert.Equal(t, tests.MockTransaction.FeesPaid, transaction.FeesPaid)
assert.Equal(t, tests.MockTransaction.SettledAt, transaction.SettledAt)
assert.Equal(t, tests.MockLNClientTransaction.Type, transaction.Type)
assert.Equal(t, tests.MockLNClientTransaction.Invoice, transaction.Invoice)
assert.Equal(t, tests.MockLNClientTransaction.Description, transaction.Description)
assert.Equal(t, tests.MockLNClientTransaction.DescriptionHash, transaction.DescriptionHash)
assert.Equal(t, tests.MockLNClientTransaction.Preimage, transaction.Preimage)
assert.Equal(t, tests.MockLNClientTransaction.PaymentHash, transaction.PaymentHash)
assert.Equal(t, tests.MockLNClientTransaction.Amount, transaction.Amount)
assert.Equal(t, tests.MockLNClientTransaction.FeesPaid, transaction.FeesPaid)
assert.Equal(t, tests.MockLNClientTransaction.SettledAt, transaction.SettledAt)

}
func TestSendNotification_PaymentSent(t *testing.T) {
Expand All @@ -98,13 +115,29 @@ func TestSendNotification_PaymentSent(t *testing.T) {
err = svc.DB.Create(appPermission).Error
assert.NoError(t, err)

feesPaid := uint64(tests.MockLNClientTransaction.FeesPaid)
settledAt := time.Unix(*tests.MockLNClientTransaction.SettledAt, 0)
err = svc.DB.Create(&db.Transaction{
Type: tests.MockLNClientTransaction.Type,
PaymentRequest: tests.MockLNClientTransaction.Invoice,
Description: tests.MockLNClientTransaction.Description,
DescriptionHash: tests.MockLNClientTransaction.DescriptionHash,
Preimage: &tests.MockLNClientTransaction.Preimage,
PaymentHash: tests.MockLNClientTransaction.PaymentHash,
Amount: uint64(tests.MockLNClientTransaction.Amount),
Fee: &feesPaid,
SettledAt: &settledAt,
AppId: &app.ID,
}).Error
assert.NoError(t, err)

nip47NotificationQueue := NewNip47NotificationQueue()
svc.EventPublisher.RegisterSubscriber(nip47NotificationQueue)

testEvent := &events.Event{
Event: "nwc_payment_sent",
Properties: &events.PaymentSentEventProperties{
PaymentHash: tests.MockPaymentHash,
PaymentHash: tests.MockLNClientTransaction.PaymentHash,
},
}

Expand Down Expand Up @@ -135,15 +168,15 @@ func TestSendNotification_PaymentSent(t *testing.T) {
assert.Equal(t, PAYMENT_SENT_NOTIFICATION, unmarshalledResponse.NotificationType)

transaction := (unmarshalledResponse.Notification.(*PaymentReceivedNotification))
assert.Equal(t, tests.MockTransaction.Type, transaction.Type)
assert.Equal(t, tests.MockTransaction.Invoice, transaction.Invoice)
assert.Equal(t, tests.MockTransaction.Description, transaction.Description)
assert.Equal(t, tests.MockTransaction.DescriptionHash, transaction.DescriptionHash)
assert.Equal(t, tests.MockTransaction.Preimage, transaction.Preimage)
assert.Equal(t, tests.MockTransaction.PaymentHash, transaction.PaymentHash)
assert.Equal(t, tests.MockTransaction.Amount, transaction.Amount)
assert.Equal(t, tests.MockTransaction.FeesPaid, transaction.FeesPaid)
assert.Equal(t, tests.MockTransaction.SettledAt, transaction.SettledAt)
assert.Equal(t, tests.MockLNClientTransaction.Type, transaction.Type)
assert.Equal(t, tests.MockLNClientTransaction.Invoice, transaction.Invoice)
assert.Equal(t, tests.MockLNClientTransaction.Description, transaction.Description)
assert.Equal(t, tests.MockLNClientTransaction.DescriptionHash, transaction.DescriptionHash)
assert.Equal(t, tests.MockLNClientTransaction.Preimage, transaction.Preimage)
assert.Equal(t, tests.MockLNClientTransaction.PaymentHash, transaction.PaymentHash)
assert.Equal(t, tests.MockLNClientTransaction.Amount, transaction.Amount)
assert.Equal(t, tests.MockLNClientTransaction.FeesPaid, transaction.FeesPaid)
assert.Equal(t, tests.MockLNClientTransaction.SettledAt, transaction.SettledAt)
}

func TestSendNotificationNoPermission(t *testing.T) {
Expand All @@ -154,6 +187,10 @@ func TestSendNotificationNoPermission(t *testing.T) {
_, _, err = tests.CreateApp(svc)
assert.NoError(t, err)

svc.DB.Create(&db.Transaction{
PaymentHash: tests.MockPaymentHash,
})

nip47NotificationQueue := NewNip47NotificationQueue()
svc.EventPublisher.RegisterSubscriber(nip47NotificationQueue)

Expand Down
10 changes: 5 additions & 5 deletions tests/mock_ln_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ var MockNodeInfo = lnclient.NodeInfo{
var MockTime = time.Unix(1693876963, 0)
var MockTimeUnix = MockTime.Unix()

var MockTransactions = []lnclient.Transaction{
var MockLNClientTransactions = []lnclient.Transaction{
{
Type: "incoming",
Invoice: MockInvoice,
Expand Down Expand Up @@ -54,7 +54,7 @@ var MockTransactions = []lnclient.Transaction{
SettledAt: &MockTimeUnix,
},
}
var MockTransaction = &MockTransactions[0]
var MockLNClientTransaction = &MockLNClientTransactions[0]

type MockLn struct {
}
Expand Down Expand Up @@ -82,15 +82,15 @@ func (mln *MockLn) GetInfo(ctx context.Context) (info *lnclient.NodeInfo, err er
}

func (mln *MockLn) MakeInvoice(ctx context.Context, amount int64, description string, descriptionHash string, expiry int64) (transaction *lnclient.Transaction, err error) {
return MockTransaction, nil
return MockLNClientTransaction, nil
}

func (mln *MockLn) LookupInvoice(ctx context.Context, paymentHash string) (transaction *lnclient.Transaction, err error) {
return MockTransaction, nil
return MockLNClientTransaction, nil
}

func (mln *MockLn) ListTransactions(ctx context.Context, from, until, limit, offset uint64, unpaid bool, invoiceType string) (invoices []lnclient.Transaction, err error) {
return MockTransactions, nil
return MockLNClientTransactions, nil
}
func (mln *MockLn) Shutdown() error {
return nil
Expand Down
2 changes: 1 addition & 1 deletion transactions/transactions_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ func (svc *transactionsService) LookupTransaction(ctx context.Context, paymentHa
}

if result.RowsAffected == 0 {
return nil, nil
return nil, errors.New("transaction not found")
}

if transaction.State == TRANSACTION_STATE_PENDING {
Expand Down

0 comments on commit d3027a1

Please sign in to comment.