Files
xahau.js/packages/xrpl/test/models/MPTokenIssuanceCreate.test.ts
Shawn Xie b04efe8c9e MPT (#2661)
MPT Support for library and binary codec
2024-12-11 13:38:13 -08:00

125 lines
3.2 KiB
TypeScript

import { assert } from 'chai'
import {
convertStringToHex,
validate,
ValidationError,
MPTokenIssuanceCreateFlags,
} from '../../src'
/**
* MPTokenIssuanceCreate Transaction Verification Testing.
*
* Providing runtime verification testing for each specific transaction type.
*/
describe('MPTokenIssuanceCreate', function () {
it(`verifies valid MPTokenIssuanceCreate`, function () {
const validMPTokenIssuanceCreate = {
TransactionType: 'MPTokenIssuanceCreate',
Account: 'rWYkbWkCeg8dP6rXALnjgZSjjLyih5NXm',
// 0x7fffffffffffffff
MaximumAmount: '9223372036854775807',
AssetScale: 2,
TransferFee: 1,
Flags: 2,
MPTokenMetadata: convertStringToHex('http://xrpl.org'),
} as any
assert.doesNotThrow(() => validate(validMPTokenIssuanceCreate))
})
it(`throws w/ MPTokenMetadata being an empty string`, function () {
const invalid = {
TransactionType: 'MPTokenIssuanceCreate',
Account: 'rWYkbWkCeg8dP6rXALnjgZSjjLyih5NXm',
Flags: MPTokenIssuanceCreateFlags.tfMPTCanLock,
MPTokenMetadata: '',
} as any
assert.throws(
() => validate(invalid),
ValidationError,
'MPTokenIssuanceCreate: MPTokenMetadata must not be empty string',
)
})
it(`throws w/ MPTokenMetadata not in hex format`, function () {
const invalid = {
TransactionType: 'MPTokenIssuanceCreate',
Account: 'rWYkbWkCeg8dP6rXALnjgZSjjLyih5NXm',
Flags: MPTokenIssuanceCreateFlags.tfMPTCanLock,
MPTokenMetadata: 'http://xrpl.org',
} as any
assert.throws(
() => validate(invalid),
ValidationError,
'MPTokenIssuanceCreate: MPTokenMetadata must be in hex format',
)
})
it(`throws w/ Invalid MaximumAmount`, function () {
let invalid = {
TransactionType: 'MPTokenIssuanceCreate',
Account: 'rWYkbWkCeg8dP6rXALnjgZSjjLyih5NXm',
MaximumAmount: '9223372036854775808',
} as any
assert.throws(
() => validate(invalid),
ValidationError,
'MPTokenIssuanceCreate: MaximumAmount out of range',
)
invalid = {
TransactionType: 'MPTokenIssuanceCreate',
Account: 'rWYkbWkCeg8dP6rXALnjgZSjjLyih5NXm',
MaximumAmount: '-1',
} as any
assert.throws(
() => validate(invalid),
ValidationError,
'MPTokenIssuanceCreate: Invalid MaximumAmount',
)
invalid = {
TransactionType: 'MPTokenIssuanceCreate',
Account: 'rWYkbWkCeg8dP6rXALnjgZSjjLyih5NXm',
MaximumAmount: '0x12',
} as any
assert.throws(
() => validate(invalid),
ValidationError,
'MPTokenIssuanceCreate: Invalid MaximumAmount',
)
})
it(`throws w/ Invalid TransferFee`, function () {
let invalid = {
TransactionType: 'MPTokenIssuanceCreate',
Account: 'rWYkbWkCeg8dP6rXALnjgZSjjLyih5NXm',
TransferFee: -1,
} as any
assert.throws(
() => validate(invalid),
ValidationError,
'MPTokenIssuanceCreate: TransferFee out of range',
)
invalid = {
TransactionType: 'MPTokenIssuanceCreate',
Account: 'rWYkbWkCeg8dP6rXALnjgZSjjLyih5NXm',
TransferFee: 50001,
} as any
assert.throws(
() => validate(invalid),
ValidationError,
'MPTokenIssuanceCreate: TransferFee out of range',
)
})
})