Files
xahau.js/test/models/escrowCreate.ts
Mayukha Vadari eb0445817e refactor: adds error response object (#1619)
* add error response object

* export error response properly

* type mockRippled

* fix linter

* fix ts

* fix comments
2021-10-04 14:10:13 -04:00

183 lines
4.4 KiB
TypeScript

import { assert } from 'chai'
import { ValidationError } from 'xrpl-local/common/errors'
import { verify } from '../../src/models/transactions'
import { verifyEscrowCreate } from '../../src/models/transactions/escrowCreate'
/**
* EscrowCreate Transaction Verification Testing.
*
* Providing runtime verification testing for each specific transaction type.
*/
describe('EscrowCreate', function () {
let escrow
beforeEach(function () {
escrow = {
Account: 'rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn',
TransactionType: 'EscrowCreate',
Amount: '10000',
Destination: 'rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW',
CancelAfter: 533257958,
FinishAfter: 533171558,
Condition:
'A0258020E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855810100',
DestinationTag: 23480,
SourceTag: 11747,
}
})
it(`verifies valid EscrowCreate`, function () {
assert.doesNotThrow(() => verifyEscrowCreate(escrow))
assert.doesNotThrow(() => verify(escrow))
})
it(`Missing amount`, function () {
delete escrow.Amount
assert.throws(
() => verifyEscrowCreate(escrow),
ValidationError,
'EscrowCreate: missing field Amount',
)
assert.throws(
() => verify(escrow),
ValidationError,
'EscrowCreate: missing field Amount',
)
})
it(`Missing destination`, function () {
delete escrow.Destination
assert.throws(
() => verifyEscrowCreate(escrow),
ValidationError,
'EscrowCreate: missing field Destination',
)
assert.throws(
() => verify(escrow),
ValidationError,
'EscrowCreate: missing field Destination',
)
})
it(`throws w/ invalid Destination`, function () {
escrow.Destination = 10
assert.throws(
() => verifyEscrowCreate(escrow),
ValidationError,
'EscrowCreate: Destination must be a string',
)
assert.throws(
() => verify(escrow),
ValidationError,
'EscrowCreate: Destination must be a string',
)
})
it(`throws w/ invalid Amount`, function () {
escrow.Amount = 1000
assert.throws(
() => verifyEscrowCreate(escrow),
ValidationError,
'EscrowCreate: Amount must be a string',
)
assert.throws(
() => verify(escrow),
ValidationError,
'EscrowCreate: Amount must be a string',
)
})
it(`invalid CancelAfter`, function () {
escrow.CancelAfter = '100'
assert.throws(
() => verifyEscrowCreate(escrow),
ValidationError,
'EscrowCreate: CancelAfter must be a number',
)
assert.throws(
() => verify(escrow),
ValidationError,
'EscrowCreate: CancelAfter must be a number',
)
})
it(`invalid FinishAfter`, function () {
escrow.FinishAfter = '1000'
assert.throws(
() => verifyEscrowCreate(escrow),
ValidationError,
'EscrowCreate: FinishAfter must be a number',
)
})
it(`invalid Condition`, function () {
escrow.Condition = 0x141243
assert.throws(
() => verifyEscrowCreate(escrow),
ValidationError,
'EscrowCreate: Condition must be a string',
)
assert.throws(
() => verify(escrow),
ValidationError,
'EscrowCreate: Condition must be a string',
)
})
it(`invalid DestinationTag`, function () {
escrow.DestinationTag = '100'
assert.throws(
() => verifyEscrowCreate(escrow),
ValidationError,
'EscrowCreate: DestinationTag must be a number',
)
assert.throws(
() => verify(escrow),
ValidationError,
'EscrowCreate: DestinationTag must be a number',
)
})
it(`Missing both CancelAfter and FinishAfter`, function () {
delete escrow.CancelAfter
delete escrow.FinishAfter
assert.throws(
() => verifyEscrowCreate(escrow),
ValidationError,
'EscrowCreate: Either CancelAfter or FinishAfter must be specified',
)
assert.throws(
() => verify(escrow),
ValidationError,
'EscrowCreate: Either CancelAfter or FinishAfter must be specified',
)
})
it(`Missing both Condition and FinishAfter`, function () {
delete escrow.Condition
delete escrow.FinishAfter
assert.throws(
() => verifyEscrowCreate(escrow),
ValidationError,
'EscrowCreate: Either Condition or FinishAfter must be specified',
)
assert.throws(
() => verify(escrow),
ValidationError,
'EscrowCreate: Either Condition or FinishAfter must be specified',
)
})
})