Files
xahau.js/test/models/depositPreauth.ts
Omar Khan 2ff0dde91d refactor: define DepositPreauth transaction model (#1545)
- Defines a TypeScript type for DepositPreauth
- Provides an optional function to users for verifying a DepositPreauth instance at runtime: verifyDepositPreauth()
- Adds tests for verifyDepositPreauth()
2021-10-04 14:10:08 -04:00

84 lines
2.9 KiB
TypeScript

import { ValidationError } from 'xrpl-local/common/errors'
import { verifyDepositPreauth } from './../../src/models/transactions/depositPreauth'
import { assert } from 'chai'
/**
* DepositPreauth Transaction Verification Testing
*
* Providing runtime verification testing for each specific transaction type
*/
describe('DepositPreauth Transaction Verification', () => {
let depositPreauth
beforeEach(() => {
depositPreauth = {
TransactionType: 'DepositPreauth',
Account: 'rUn84CUYbNjRoTQ6mSW7BVJPSVJNLb1QLo',
} as any
})
it ('verifies valid DepositPreauth when only Authorize is provided', () => {
depositPreauth.Authorize = 'rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW'
assert.doesNotThrow(() => verifyDepositPreauth(depositPreauth))
})
it ('verifies valid DepositPreauth when only Unauthorize is provided', () => {
depositPreauth.Unauthorize = 'raKEEVSGnKSD9Zyvxu4z6Pqpm4ABH8FS6n'
assert.doesNotThrow(() => verifyDepositPreauth(depositPreauth))
})
it ('throws when both Authorize and Unauthorize are provided', () => {
depositPreauth.Authorize = 'rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW'
depositPreauth.Unauthorize = 'raKEEVSGnKSD9Zyvxu4z6Pqpm4ABH8FS6n'
assert.throws(
() => verifyDepositPreauth(depositPreauth),
ValidationError,
"DepositPreauth: can't provide both Authorize and Unauthorize fields"
)
})
it ('throws when neither Authorize nor Unauthorize are provided', () => {
assert.throws(
() => verifyDepositPreauth(depositPreauth),
ValidationError,
'DepositPreauth: must provide either Authorize or Unauthorize field'
)
})
it ('throws when Authorize is not a string', () => {
depositPreauth.Authorize = 1234
assert.throws(
() => verifyDepositPreauth(depositPreauth),
ValidationError,
'DepositPreauth: Authorize must be a string'
)
})
it ('throws when an Account attempts to preauthorize its own address', () => {
depositPreauth.Authorize = depositPreauth.Account
assert.throws(
() => verifyDepositPreauth(depositPreauth),
ValidationError,
"DepositPreauth: Account can't preauthorize its own address"
)
})
it ('throws when Unauthorize is not a string', () => {
depositPreauth.Unauthorize = 1234
assert.throws(
() => verifyDepositPreauth(depositPreauth),
ValidationError,
'DepositPreauth: Unauthorize must be a string'
)
})
it ('throws when an Account attempts to unauthorize its own address', () => {
depositPreauth.Unauthorize = depositPreauth.Account
assert.throws(
() => verifyDepositPreauth(depositPreauth),
ValidationError,
"DepositPreauth: Account can't unauthorize its own address"
)
})
})