mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-11-20 04:05:52 +00:00
139 lines
4.1 KiB
TypeScript
139 lines
4.1 KiB
TypeScript
import { assert } from "chai";
|
|
|
|
import { ValidationError } from "xrpl-local/common/errors";
|
|
|
|
import {
|
|
PaymentTransactionFlagsEnum,
|
|
verifyPayment,
|
|
} from "../../src/models/transactions/payment";
|
|
|
|
/**
|
|
* PaymentTransaction Verification Testing.
|
|
*
|
|
* Providing runtime verification testing for each specific transaction type.
|
|
*/
|
|
describe("Payment", function () {
|
|
let paymentTransaction;
|
|
|
|
beforeEach(function () {
|
|
paymentTransaction = {
|
|
TransactionType: "Payment",
|
|
Account: "rUn84CUYbNjRoTQ6mSW7BVJPSVJNLb1QLo",
|
|
Amount: "1234",
|
|
Destination: "rfkE1aSy9G8Upk4JssnwBxhEv5p4mn2KTy",
|
|
DestinationTag: 1,
|
|
InvoiceID:
|
|
"6F1DFD1D0FE8A32E40E1F2C05CF1C15545BAB56B617F9C6C2D63A6B704BEF59B",
|
|
Paths: [[{ currency: "BTC", issuer: "apsoeijf90wp34fh" }]],
|
|
SendMax: "100000000",
|
|
} as any;
|
|
});
|
|
|
|
it(`verifies valid PaymentTransaction`, function () {
|
|
assert.doesNotThrow(() => verifyPayment(paymentTransaction));
|
|
});
|
|
|
|
it(`throws when Amount is missing`, function () {
|
|
delete paymentTransaction.Amount;
|
|
assert.throws(
|
|
() => verifyPayment(paymentTransaction),
|
|
ValidationError,
|
|
"PaymentTransaction: missing field Amount"
|
|
);
|
|
});
|
|
|
|
it(`throws when Amount is invalid`, function () {
|
|
paymentTransaction.Amount = 1234;
|
|
assert.throws(
|
|
() => verifyPayment(paymentTransaction),
|
|
ValidationError,
|
|
"PaymentTransaction: invalid Amount"
|
|
);
|
|
});
|
|
|
|
it(`throws when Destination is missing`, function () {
|
|
delete paymentTransaction.Destination;
|
|
assert.throws(
|
|
() => verifyPayment(paymentTransaction),
|
|
ValidationError,
|
|
"PaymentTransaction: missing field Destination"
|
|
);
|
|
});
|
|
|
|
it(`throws when Destination is invalid`, function () {
|
|
paymentTransaction.Destination = 7896214;
|
|
assert.throws(
|
|
() => verifyPayment(paymentTransaction),
|
|
ValidationError,
|
|
"PaymentTransaction: invalid Destination"
|
|
);
|
|
});
|
|
|
|
it(`throws when DestinationTag is not a number`, function () {
|
|
paymentTransaction.DestinationTag = "1";
|
|
assert.throws(
|
|
() => verifyPayment(paymentTransaction),
|
|
ValidationError,
|
|
"PaymentTransaction: DestinationTag must be a number"
|
|
);
|
|
});
|
|
|
|
it(`throws when InvoiceID is not a string`, function () {
|
|
paymentTransaction.InvoiceID = 19832;
|
|
assert.throws(
|
|
() => verifyPayment(paymentTransaction),
|
|
ValidationError,
|
|
"PaymentTransaction: InvoiceID must be a string"
|
|
);
|
|
});
|
|
|
|
it(`throws when Paths is invalid`, function () {
|
|
paymentTransaction.Paths = [[{ account: 123 }]];
|
|
assert.throws(
|
|
() => verifyPayment(paymentTransaction),
|
|
ValidationError,
|
|
"PaymentTransaction: invalid Paths"
|
|
);
|
|
});
|
|
|
|
it(`throws when SendMax is invalid`, function () {
|
|
paymentTransaction.SendMax = 100000000;
|
|
assert.throws(
|
|
() => verifyPayment(paymentTransaction),
|
|
ValidationError,
|
|
"PaymentTransaction: invalid SendMax"
|
|
);
|
|
});
|
|
|
|
it(`verifies valid DeliverMin with tfPartialPayment flag set as a number`, function () {
|
|
paymentTransaction.DeliverMin = "10000";
|
|
paymentTransaction.Flags = PaymentTransactionFlagsEnum.tfPartialPayment;
|
|
assert.doesNotThrow(() => verifyPayment(paymentTransaction));
|
|
});
|
|
|
|
it(`verifies valid DeliverMin with tfPartialPayment flag set as a boolean`, function () {
|
|
paymentTransaction.DeliverMin = "10000";
|
|
paymentTransaction.Flags = { tfPartialPayment: true };
|
|
assert.doesNotThrow(() => verifyPayment(paymentTransaction));
|
|
});
|
|
|
|
it(`throws when DeliverMin is invalid`, function () {
|
|
paymentTransaction.DeliverMin = 10000;
|
|
paymentTransaction.Flags = { tfPartialPayment: true };
|
|
assert.throws(
|
|
() => verifyPayment(paymentTransaction),
|
|
ValidationError,
|
|
"PaymentTransaction: invalid DeliverMin"
|
|
);
|
|
});
|
|
|
|
it(`throws when tfPartialPayment flag is missing with valid DeliverMin`, function () {
|
|
paymentTransaction.DeliverMin = "10000";
|
|
assert.throws(
|
|
() => verifyPayment(paymentTransaction),
|
|
ValidationError,
|
|
"PaymentTransaction: tfPartialPayment flag required with DeliverMin"
|
|
);
|
|
});
|
|
});
|