Skip to content

Commit e89f5ca

Browse files
fix(xrpl): autofill transaction type handling
1 parent 775f661 commit e89f5ca

File tree

2 files changed

+117
-4
lines changed

2 files changed

+117
-4
lines changed

xrpl/rpc/client.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -249,20 +249,20 @@ func (c *Client) Autofill(tx *transaction.FlatTransaction) error {
249249
return err
250250
}
251251
}
252-
if txType, ok := (*tx)["TransactionType"].(transaction.TxType); ok {
253-
if acc, ok := (*tx)["Account"].(types.Address); txType == transaction.AccountDeleteTx && ok {
252+
if txType, ok := (*tx)["TransactionType"].(string); ok {
253+
if acc, ok := (*tx)["Account"].(types.Address); txType == transaction.AccountDeleteTx.String() && ok {
254254
err := c.checkAccountDeleteBlockers(acc)
255255
if err != nil {
256256
return err
257257
}
258258
}
259-
if txType == transaction.PaymentTx {
259+
if txType == transaction.PaymentTx.String() {
260260
err := c.checkPaymentAmounts(tx)
261261
if err != nil {
262262
return err
263263
}
264264
}
265-
if txType == transaction.BatchTx {
265+
if txType == transaction.BatchTx.String() {
266266
err := c.autofillRawTransactions(tx)
267267
if err != nil {
268268
return err

xrpl/transaction/integration/batch_test.go

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package integration
33
import (
44
"testing"
55

6+
"github.com/Peersyst/xrpl-go/xrpl/rpc"
67
"github.com/Peersyst/xrpl-go/xrpl/testutil/integration"
78
"github.com/Peersyst/xrpl-go/xrpl/transaction"
89
"github.com/Peersyst/xrpl-go/xrpl/transaction/types"
@@ -137,3 +138,115 @@ func TestIntegrationBatchMultisign_Websocket(t *testing.T) {
137138
})
138139
}
139140
}
141+
142+
func TestIntegrationBatch_RPC(t *testing.T) {
143+
env := integration.GetRPCEnv(t)
144+
clientCfg, err := rpc.NewClientConfig(env.Host, rpc.WithFaucetProvider(env.FaucetProvider))
145+
require.NoError(t, err)
146+
client := rpc.NewClient(clientCfg)
147+
148+
runner := integration.NewRunner(t, client, integration.NewRunnerConfig(
149+
integration.WithWallets(3),
150+
))
151+
152+
err = runner.Setup()
153+
require.NoError(t, err)
154+
defer runner.Teardown()
155+
156+
sender := runner.GetWallet(0)
157+
receiver := runner.GetWallet(1)
158+
159+
tt := []BatchTest{
160+
{
161+
Name: "pass - valid batch transaction",
162+
Batch: &transaction.Batch{
163+
BaseTx: transaction.BaseTx{
164+
Account: runner.GetWallet(0).GetAddress(),
165+
TransactionType: transaction.BatchTx,
166+
},
167+
RawTransactions: []types.RawTransaction{
168+
{
169+
RawTransaction: CreatePaymentTx(sender, receiver, types.XRPCurrencyAmount(1)).Flatten(),
170+
},
171+
{
172+
RawTransaction: CreatePaymentTx(sender, receiver, types.XRPCurrencyAmount(1)).Flatten(),
173+
},
174+
},
175+
},
176+
},
177+
}
178+
179+
for _, tc := range tt {
180+
t.Run(tc.Name, func(t *testing.T) {
181+
tc.Batch.SetAllOrNothingFlag()
182+
flatTx := tc.Batch.Flatten()
183+
err := client.Autofill(&flatTx)
184+
185+
require.NoError(t, err)
186+
187+
_, err = runner.TestTransaction(&flatTx, sender, "tesSUCCESS", &integration.TestTransactionOptions{
188+
SkipAutofill: true,
189+
})
190+
require.NoError(t, err)
191+
})
192+
}
193+
}
194+
195+
func TestIntegrationBatchMultisign_RPC(t *testing.T) {
196+
env := integration.GetRPCEnv(t)
197+
clientCfg, err := rpc.NewClientConfig(env.Host, rpc.WithFaucetProvider(env.FaucetProvider))
198+
require.NoError(t, err)
199+
client := rpc.NewClient(clientCfg)
200+
201+
runner := integration.NewRunner(t, client, integration.NewRunnerConfig(
202+
integration.WithWallets(3),
203+
))
204+
205+
err = runner.Setup()
206+
require.NoError(t, err)
207+
defer runner.Teardown()
208+
209+
sender := runner.GetWallet(0)
210+
sender2 := runner.GetWallet(1)
211+
receiver := runner.GetWallet(2)
212+
213+
tt := []BatchTest{
214+
{
215+
Name: "pass - valid batch transaction",
216+
Batch: &transaction.Batch{
217+
BaseTx: transaction.BaseTx{
218+
Account: sender.GetAddress(),
219+
TransactionType: transaction.BatchTx,
220+
},
221+
RawTransactions: []types.RawTransaction{
222+
{
223+
RawTransaction: CreatePaymentTx(sender, receiver, types.XRPCurrencyAmount(1)).Flatten(),
224+
},
225+
{
226+
RawTransaction: CreatePaymentTx(sender2, receiver, types.XRPCurrencyAmount(1)).Flatten(),
227+
},
228+
},
229+
},
230+
},
231+
}
232+
233+
for _, tc := range tt {
234+
t.Run(tc.Name, func(t *testing.T) {
235+
tc.Batch.SetAllOrNothingFlag()
236+
flatTx := tc.Batch.Flatten()
237+
err := client.AutofillMultisigned(&flatTx, 1)
238+
require.NoError(t, err)
239+
240+
err = wallet.SignMultiBatch(*sender2, &flatTx, nil)
241+
242+
require.NoError(t, err)
243+
244+
_, err = runner.TestTransaction(&flatTx, sender, "tesSUCCESS", &integration.TestTransactionOptions{
245+
SkipAutofill: true,
246+
})
247+
248+
require.NoError(t, err)
249+
})
250+
}
251+
}
252+

0 commit comments

Comments
 (0)