Files
xahau.js/packages/xrpl/test/models/XChainCommit.test.ts
Mayukha Vadari 91e7369f1b feat: add support for current sidechain design (#2039)
* Update definitions.json

* add new st types

* add tests

* add XChainClaim tx

* add XChainCommit tx

* add XChainCreateBridge tx

* add XChainCreateClaimID tx

* update definitions.json

* rename Bridge -> XChainBridge in binary codec, fix tests

* rename Bridge -> XChainBridge in models

* add codec support for XChainAddAttestation

* add XChainAddAttestation model

* undo debugging change

* fix linting issues

* update definitions.json for new rippled code, add new tests/update old tests

* add/update models

* update history

* update binary-codec

* add XChainModifyBridge model

* update RPCs

* update to latest rippled

* more fixes

* fix definitions.json

* fix spacing

* update definitions.json to avoid conflict with amm

* update definitions.json to resolve amm conflicts

* audit code

* more updates

* update rpcs

* switch to beta version

* add destination tag to XChainClaim

* rename IssuedCurrency -> Issue to match rippled

* update Issue form

* fix account object filters

* fix issue from typing

* fix LedgerEntry types

* fix attestation destination type

* Update definitions.json

* rename XChainAddAttestation -> XChainAddAttestationBatch

* add XChainAddClaimAttestation

* add XChainAddAccountCreateAttestation

* remove XChainAddAttestationBatch

* update definitions

* fix attestation txns

* fix attestation object

* add validate for new txs

* add Bridge ledger object

* add XChainOwnedClaimID ledger object

* add XChainOwnedCreateAccountClaimID ledger object

* update account_objects

* update models to latest rippled

* fix minor issues

* fix bridge ledger_entry

* add XChainModifyBridge flag

* Update definitions.json

* add rbc tests for the new txs

* update validateXChainModifyBridge

* add validate methods to other xchain txs

* fix isXChainBridge

* fix isIssue typing

* fix model types

* update changelog

* switch prepare to prepublishOnly

* add docs

* fix AccountObjectsType filter

* export common types

* fix account_objects filter

* update LedgerEntry

* add sidechain faucet info

* add snippet

* improve snippet

* fix spacing issues

* update ledger_entry

* remove AMMDelete tests for now

* Update definitions.json

* fix unit tests

* convert createValidate script to JS
* remove unneeded linter ignores

* respond to comments

* more snippet fixes

* make validate functions more readable

* add getXChainClaimID method to parse metadata

* re-add linter rules

* clean up common

* fix getXChainClaimID test

* return undefined for failed tx

* test: add model tests for new sidechain transactions (#2059)

* add XChainAddAttestation tests, fix model

* add XChainClaim model tests

* add XChainCommit model tests, fix typo

* add XChainCreateBridge model tests

* add XChainCreateClaimID model tests

* add XChainModifyBridge tests

* update to most recent version of code

* remove XChainAddAttestationBatch tests

* add more validation tests

* switch createValidateTests to JS
2023-09-26 10:01:21 -04:00

146 lines
3.5 KiB
TypeScript

import { assert } from 'chai'
import { validate, ValidationError } from '../../src'
import { validateXChainCommit } from '../../src/models/transactions/XChainCommit'
/**
* XChainCommit Transaction Verification Testing.
*
* Providing runtime verification testing for each specific transaction type.
*/
describe('XChainCommit', function () {
let tx
beforeEach(function () {
tx = {
Account: 'rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh',
Amount: '10000',
XChainBridge: {
LockingChainDoor: 'rGzx83BVoqTYbGn7tiVAnFw7cbxjin13jL',
LockingChainIssue: {
currency: 'XRP',
},
IssuingChainDoor: 'r3kmLJN5D28dHuH8vZNUZpMC43pEHpaocV',
IssuingChainIssue: {
currency: 'XRP',
},
},
Fee: '10',
Flags: 2147483648,
Sequence: 1,
TransactionType: 'XChainCommit',
XChainClaimID: '0000000000000001',
} as any
})
it('verifies valid XChainCommit', function () {
assert.doesNotThrow(() => validateXChainCommit(tx))
assert.doesNotThrow(() => validate(tx))
})
it('throws w/ missing XChainBridge', function () {
delete tx.XChainBridge
assert.throws(
() => validateXChainCommit(tx),
ValidationError,
'XChainCommit: missing field XChainBridge',
)
assert.throws(
() => validate(tx),
ValidationError,
'XChainCommit: missing field XChainBridge',
)
})
it('throws w/ invalid XChainBridge', function () {
tx.XChainBridge = { XChainDoor: 'test' }
assert.throws(
() => validateXChainCommit(tx),
ValidationError,
'XChainCommit: invalid field XChainBridge',
)
assert.throws(
() => validate(tx),
ValidationError,
'XChainCommit: invalid field XChainBridge',
)
})
it('throws w/ missing XChainClaimID', function () {
delete tx.XChainClaimID
assert.throws(
() => validateXChainCommit(tx),
ValidationError,
'XChainCommit: missing field XChainClaimID',
)
assert.throws(
() => validate(tx),
ValidationError,
'XChainCommit: missing field XChainClaimID',
)
})
it('throws w/ invalid XChainClaimID', function () {
tx.XChainClaimID = { currency: 'ETH' }
assert.throws(
() => validateXChainCommit(tx),
ValidationError,
'XChainCommit: invalid field XChainClaimID',
)
assert.throws(
() => validate(tx),
ValidationError,
'XChainCommit: invalid field XChainClaimID',
)
})
it('throws w/ invalid OtherChainDestination', function () {
tx.OtherChainDestination = 123
assert.throws(
() => validateXChainCommit(tx),
ValidationError,
'XChainCommit: invalid field OtherChainDestination',
)
assert.throws(
() => validate(tx),
ValidationError,
'XChainCommit: invalid field OtherChainDestination',
)
})
it('throws w/ missing Amount', function () {
delete tx.Amount
assert.throws(
() => validateXChainCommit(tx),
ValidationError,
'XChainCommit: missing field Amount',
)
assert.throws(
() => validate(tx),
ValidationError,
'XChainCommit: missing field Amount',
)
})
it('throws w/ invalid Amount', function () {
tx.Amount = { currency: 'ETH' }
assert.throws(
() => validateXChainCommit(tx),
ValidationError,
'XChainCommit: invalid field Amount',
)
assert.throws(
() => validate(tx),
ValidationError,
'XChainCommit: invalid field Amount',
)
})
})