From 61a8923e2a4c7c761fb207f27f0a67bd0e8832dd Mon Sep 17 00:00:00 2001 From: Mukul Jangid <49061120+mukulljangid@users.noreply.github.com> Date: Mon, 16 Aug 2021 17:31:17 -0400 Subject: [PATCH] refactor: define typescript types for CheckCancel Transaction Model (#1526) * offer * accountroot * amendments * check * deposit preauth * directory node * escrow * fee settings * ledger hashes * negative unl * pay channel * ripple state * signer list * ticket * export * account_channels * account_currencies * account_info * account_lines * account_objects * account_offers * account_tx * gateway_balances * no ripple check * respond to comments * rename files to camelCase * account_channels * account_currencies * account_info * account_lines * account_objects * account_offers * account_tx * gateway_balances * no ripple check * respond to comments * export methods * fix typos * refactor: Define type for CommonFields * refactor: Define OfferCreate transaction type * add a commented out SignedTransaction * add tests for verifyCommonFields * remove outdated files * refactor: Define OfferCreate transaction * define checkCancel model * add tests * fix: add tests and resolve conflicts * fix: resolve typos and seperate out test * fix: commenting issue * refactor: add checkCreate to tx/index Co-authored-by: Mayukha Vadari Co-authored-by: Nathan Nichols --- src/models/transactions/checkCancel.ts | 21 ++++++++++++++++ src/models/transactions/index.ts | 3 ++- src/models/transactions/transaction.ts | 8 +++--- test/models/checkCancel.ts | 35 ++++++++++++++++++++++++++ 4 files changed, 62 insertions(+), 5 deletions(-) create mode 100644 src/models/transactions/checkCancel.ts create mode 100644 test/models/checkCancel.ts 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