diff --git a/src/models/transactions/checkCancel.ts b/src/models/transactions/checkCancel.ts new file mode 100644 index 00000000..be14edad --- /dev/null +++ b/src/models/transactions/checkCancel.ts @@ -0,0 +1,21 @@ +import { ValidationError } from "../../common/errors"; +import { BaseTransaction, verifyBaseTransaction } from "./common"; + +export interface CheckCancel extends BaseTransaction { + TransactionType: "CheckCancel"; + CheckID: string; +} + +/** + * Verify the form and type of an CheckCancel at runtime. + * + * @param tx - An CheckCancel Transaction + * @returns - Void. + * @throws - When the CheckCancel is Malformed. + */ + export function verifyCheckCancel(tx: CheckCancel): void { + verifyBaseTransaction(tx) + + if (tx.CheckID !== undefined && typeof tx.CheckID !== 'string') + throw new ValidationError("CheckCancel: invalid CheckID") +} \ No newline at end of file diff --git a/src/models/transactions/index.ts b/src/models/transactions/index.ts index 4327de7a..9990f3cd 100644 --- a/src/models/transactions/index.ts +++ b/src/models/transactions/index.ts @@ -1,3 +1,4 @@ export * from './transaction' export * from './offerCreate' -export * from './checkCreate' +export * from './checkCancel' +export * from './checkCreate' \ No newline at end of file diff --git a/src/models/transactions/transaction.ts b/src/models/transactions/transaction.ts index 7f8c8a29..f4d81c5f 100644 --- a/src/models/transactions/transaction.ts +++ b/src/models/transactions/transaction.ts @@ -1,20 +1,20 @@ import Metadata from "../common/metadata"; import { OfferCreate } from "./offerCreate"; +import { CheckCancel } from "./checkCancel"; import { CheckCreate } from "./checkCreate"; - export type Transaction = // AccountSet // | AccountDelete -// | CheckCancel + CheckCancel // | CheckCash - CheckCreate + | CheckCreate // | DepositPreauth // | EscrowCancel // | EscrowCreate // | EscrowFinish // | OfferCancel - | OfferCreate + | OfferCreate // | PaymentTransaction // | PaymentChannelClaim // | PaymentChannelCreate diff --git a/test/models/checkCancel.ts b/test/models/checkCancel.ts new file mode 100644 index 00000000..6989c0a0 --- /dev/null +++ b/test/models/checkCancel.ts @@ -0,0 +1,35 @@ +import { ValidationError } from 'ripple-api/common/errors' +import { verifyCheckCancel} from './../../src/models/transactions/checkCancel' +import { assert } from 'chai' + +/** + * CheckCancel Transaction Verification Testing + * + * Providing runtime verification testing for each specific transaction type + */ +describe('Transaction Verification', function () { + + it (`verifies valid CheckCancel`, () => { + const validCheckCancel = { + Account : "rUn84CUYbNjRoTQ6mSW7BVJPSVJNLb1QLo", + TransactionType : "CheckCancel", + CheckID : "49647F0D748DC3FE26BDACBC57F251AADEFFF391403EC9BF87C97F67E9977FB0" + } as any + + assert.doesNotThrow(() => verifyCheckCancel(validCheckCancel)) + }) + + it (`throws w/ invalid CheckCancel`, () => { + const invalidCheckID = { + Account : "rUn84CUYbNjRoTQ6mSW7BVJPSVJNLb1QLo", + TransactionType : "CheckCancel", + CheckID : 496473456789876545678909876545678 + } as any + + assert.throws( + () => verifyCheckCancel(invalidCheckID), + ValidationError, + "CheckCancel: invalid CheckID" + ) + }) +}) \ No newline at end of file