mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-11-20 12:15:51 +00:00
- Defines a TypeScript type for PaymentTransaction - Provides an optional function to users for verifying a PaymentTransaction instance at runtime: verifyPaymentTransaction() - Adds tests for verifyPaymentTransaction() - Adds isFlagEnabled() util to be used for models
133 lines
4.6 KiB
TypeScript
133 lines
4.6 KiB
TypeScript
import { ValidationError } from 'xrpl-local/common/errors'
|
|
import { PaymentTransactionFlagsEnum, verifyPaymentTransaction } from './../../src/models/transactions/paymentTransaction'
|
|
import { assert } from 'chai'
|
|
|
|
/**
|
|
* PaymentTransaction Verification Testing
|
|
*
|
|
* Providing runtime verification testing for each specific transaction type
|
|
*/
|
|
describe('Payment Transaction Verification', () => {
|
|
let paymentTransaction
|
|
|
|
beforeEach(() => {
|
|
paymentTransaction = {
|
|
TransactionType: 'Payment',
|
|
Account: 'rUn84CUYbNjRoTQ6mSW7BVJPSVJNLb1QLo',
|
|
Amount: '1234',
|
|
Destination: 'rfkE1aSy9G8Upk4JssnwBxhEv5p4mn2KTy',
|
|
DestinationTag: 1,
|
|
InvoiceID: '6F1DFD1D0FE8A32E40E1F2C05CF1C15545BAB56B617F9C6C2D63A6B704BEF59B',
|
|
Paths: [[{ account: 'aw0efji', currency: 'XRP', issuer: 'apsoeijf90wp34fh'}]],
|
|
SendMax: '100000000',
|
|
} as any
|
|
})
|
|
|
|
it (`verifies valid PaymentTransaction`, () => {
|
|
assert.doesNotThrow(() => verifyPaymentTransaction(paymentTransaction))
|
|
})
|
|
|
|
it (`throws when Amount is missing`, () => {
|
|
delete paymentTransaction.Amount
|
|
assert.throws(
|
|
() => verifyPaymentTransaction(paymentTransaction),
|
|
ValidationError,
|
|
'PaymentTransaction: missing field Amount'
|
|
)
|
|
})
|
|
|
|
it (`throws when Amount is invalid`, () => {
|
|
paymentTransaction.Amount = 1234
|
|
assert.throws(
|
|
() => verifyPaymentTransaction(paymentTransaction),
|
|
ValidationError,
|
|
'PaymentTransaction: invalid Amount'
|
|
)
|
|
})
|
|
|
|
it (`throws when Destination is missing`, () => {
|
|
delete paymentTransaction.Destination
|
|
assert.throws(
|
|
() => verifyPaymentTransaction(paymentTransaction),
|
|
ValidationError,
|
|
'PaymentTransaction: missing field Destination'
|
|
)
|
|
})
|
|
|
|
it (`throws when Destination is invalid`, () => {
|
|
paymentTransaction.Destination = 7896214
|
|
assert.throws(
|
|
() => verifyPaymentTransaction(paymentTransaction),
|
|
ValidationError,
|
|
'PaymentTransaction: invalid Destination'
|
|
)
|
|
})
|
|
|
|
it (`throws when DestinationTag is not a number`, () => {
|
|
paymentTransaction.DestinationTag = '1'
|
|
assert.throws(
|
|
() => verifyPaymentTransaction(paymentTransaction),
|
|
ValidationError,
|
|
'PaymentTransaction: DestinationTag must be a number'
|
|
)
|
|
})
|
|
|
|
it (`throws when InvoiceID is not a string`, () => {
|
|
paymentTransaction.InvoiceID = 19832
|
|
assert.throws(
|
|
() => verifyPaymentTransaction(paymentTransaction),
|
|
ValidationError,
|
|
'PaymentTransaction: InvoiceID must be a string'
|
|
)
|
|
})
|
|
|
|
it (`throws when Paths is invalid`, () => {
|
|
paymentTransaction.Paths = [[{ account: 123 }]]
|
|
assert.throws(
|
|
() => verifyPaymentTransaction(paymentTransaction),
|
|
ValidationError,
|
|
'PaymentTransaction: invalid Paths'
|
|
)
|
|
})
|
|
|
|
it (`throws when SendMax is invalid`, () => {
|
|
paymentTransaction.SendMax = 100000000
|
|
assert.throws(
|
|
() => verifyPaymentTransaction(paymentTransaction),
|
|
ValidationError,
|
|
'PaymentTransaction: invalid SendMax'
|
|
)
|
|
})
|
|
|
|
it (`verifies valid DeliverMin with tfPartialPayment flag set as a number`, () => {
|
|
paymentTransaction.DeliverMin = '10000'
|
|
paymentTransaction.Flags = PaymentTransactionFlagsEnum.tfPartialPayment,
|
|
assert.doesNotThrow(() => verifyPaymentTransaction(paymentTransaction))
|
|
})
|
|
|
|
it (`verifies valid DeliverMin with tfPartialPayment flag set as a boolean`, () => {
|
|
paymentTransaction.DeliverMin = '10000'
|
|
paymentTransaction.Flags = { tfPartialPayment: true }
|
|
assert.doesNotThrow(() => verifyPaymentTransaction(paymentTransaction))
|
|
})
|
|
|
|
it (`throws when DeliverMin is invalid`, () => {
|
|
paymentTransaction.DeliverMin = 10000
|
|
paymentTransaction.Flags = { tfPartialPayment: true }
|
|
assert.throws(
|
|
() => verifyPaymentTransaction(paymentTransaction),
|
|
ValidationError,
|
|
'PaymentTransaction: invalid DeliverMin'
|
|
)
|
|
})
|
|
|
|
it (`throws when tfPartialPayment flag is missing with valid DeliverMin`, () => {
|
|
paymentTransaction.DeliverMin = '10000'
|
|
assert.throws(
|
|
() => verifyPaymentTransaction(paymentTransaction),
|
|
ValidationError,
|
|
'PaymentTransaction: tfPartialPayment flag required with DeliverMin'
|
|
)
|
|
})
|
|
})
|