mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-11-18 19:25:48 +00:00
217 lines
6.2 KiB
TypeScript
217 lines
6.2 KiB
TypeScript
import { assert } from 'chai'
|
|
|
|
import { validate, ValidationError } from '../../src'
|
|
import { validateSignerListSet } from '../../src/models/transactions/signerListSet'
|
|
|
|
/**
|
|
* SignerListSet Transaction Verification Testing.
|
|
*
|
|
* Providing runtime verification testing for each specific transaction type.
|
|
*/
|
|
describe('SignerListSet', function () {
|
|
let signerListSetTx
|
|
|
|
beforeEach(function () {
|
|
signerListSetTx = {
|
|
Flags: 0,
|
|
TransactionType: 'SignerListSet',
|
|
Account: 'rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn',
|
|
Fee: '12',
|
|
SignerQuorum: 3,
|
|
SignerEntries: [
|
|
{
|
|
SignerEntry: {
|
|
Account: 'rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW',
|
|
SignerWeight: 2,
|
|
},
|
|
},
|
|
{
|
|
SignerEntry: {
|
|
Account: 'rUpy3eEg8rqjqfUoLeBnZkscbKbFsKXC3v',
|
|
SignerWeight: 1,
|
|
},
|
|
},
|
|
{
|
|
SignerEntry: {
|
|
Account: 'raKEEVSGnKSD9Zyvxu4z6Pqpm4ABH8FS6n',
|
|
SignerWeight: 1,
|
|
},
|
|
},
|
|
],
|
|
} as any
|
|
})
|
|
|
|
it(`verifies valid SignerListSet`, function () {
|
|
assert.doesNotThrow(() => validateSignerListSet(signerListSetTx))
|
|
assert.doesNotThrow(() => validate(signerListSetTx))
|
|
})
|
|
|
|
it(`throws w/ missing SignerQuorum`, function () {
|
|
signerListSetTx.SignerQuorum = undefined
|
|
|
|
assert.throws(
|
|
() => validateSignerListSet(signerListSetTx),
|
|
ValidationError,
|
|
'SignerListSet: missing field SignerQuorum',
|
|
)
|
|
assert.throws(
|
|
() => validate(signerListSetTx),
|
|
ValidationError,
|
|
'SignerListSet: missing field SignerQuorum',
|
|
)
|
|
})
|
|
|
|
it(`throws w/ empty SignerEntries`, function () {
|
|
signerListSetTx.SignerEntries = []
|
|
|
|
assert.throws(
|
|
() => validateSignerListSet(signerListSetTx),
|
|
ValidationError,
|
|
'SignerListSet: need at least 1 member in SignerEntries',
|
|
)
|
|
assert.throws(
|
|
() => validate(signerListSetTx),
|
|
ValidationError,
|
|
'SignerListSet: need at least 1 member in SignerEntries',
|
|
)
|
|
})
|
|
|
|
it(`throws w/ invalid SignerEntries`, function () {
|
|
signerListSetTx.SignerEntries = 'khgfgyhujk'
|
|
|
|
assert.throws(
|
|
() => validateSignerListSet(signerListSetTx),
|
|
ValidationError,
|
|
'SignerListSet: invalid SignerEntries',
|
|
)
|
|
assert.throws(
|
|
() => validate(signerListSetTx),
|
|
ValidationError,
|
|
'SignerListSet: invalid SignerEntries',
|
|
)
|
|
})
|
|
|
|
it(`throws w/ maximum of 32 members allowed in SignerEntries`, function () {
|
|
signerListSetTx.SignerEntries = []
|
|
const accounts = [
|
|
'rBFBipte4nAQCTsRxd2czwvSurhCpAf4X6',
|
|
'r3ijUH32iiy9tYNj3rD7hKWYjy1BFUxngm',
|
|
'rpwq8vi4Mn3L5kDJmb8Mg59CanPFPzMCnj',
|
|
'rB72Gzqfejai46nkA4HaKYBHwAnn2yUoT4',
|
|
'rGqsJSAW71pCfUwDD5m52bLw69RzFg6kMW',
|
|
'rs8smPRA31Ym4mGxb1wzgwxtU5eVK82Gyk',
|
|
'rLrugpGxzezUQLDh7Jv1tZpouuV4MQLbU9',
|
|
'rUQ6zLXQdh1jJLGwMXp9P8rgi42kwuafzs',
|
|
'rMjY8sPdfxsyRrnVKQcutxr4mTHNXy9dEF',
|
|
'rUaxYLeFGm6SmMoa2WCqLKSyHwJyvaQmeG',
|
|
'r9wUfeVtqMfqrcDTfCpNYbNZvs5q9M9Rpo',
|
|
'rQncVNak5kvJGPUFa6fuKH7t8Usjs7Np1c',
|
|
'rnwbSSnPbVbUzuBa4etkeYrfy5v7SyhtPu',
|
|
'rDXh5D3t48MdBJyXByXq47k5P8Kuf1758B',
|
|
'rh1D4jd2mAiqUPHfAZ2cY9Nbfa3kAkaQXP',
|
|
'r9T129tXgtnyfGoLeS35c2HctaZAZSQoCH',
|
|
'rUd2uKsyCWfJP7Ve36mKoJbNCA7RYThnYk',
|
|
'r326x8PaAFtnaH7uoxaKrcDWuwpeHn4wDa',
|
|
'rpN3mkXkYhfNadcXPrY4LniM1KpM3egyQM',
|
|
'rsPKbR155hz1zrA4pSJp5Y2fxasZAatcHb',
|
|
'rsyWFLaEKTpaoSJusjpcDvGexuHCwMnqss',
|
|
'rUbc5RXfyF81oLDMgd3d7jpY9YMNMZG4XN',
|
|
'rGpYHM88BZe1iVKFHm5xiWYYxR74oxJEXf',
|
|
'rPsetWAtR1KxDtxzgHjRMD7Rc87rvXk5nD',
|
|
'rwSeNhL6Hi34igr12mCr61jY42psfTkWTq',
|
|
'r46Mygy98qjkDhVB6qs4sBnqaf7FPiA2vU',
|
|
'r4s8GmeYN4CiwVate1nMUvwMQbundqf5cW',
|
|
'rKAr4dQWDYG8cG2hSwJUVp4ry4WNaWiNgp',
|
|
'rPWXRLp1vqeUHEH3WiSKuyo9GM9XhaENQU',
|
|
'rPgmdBdRKGmndxNEYxUrrsYCZaS6go9RvW',
|
|
'rPDJZ9irzgwKRKScfEmuJMvUgrqZAJNCbL',
|
|
'rDuU2uSXMfEaoxN1qW8sj7aUNFLGEn3Hr2',
|
|
'rsbjSjA4TCB9gtm7x7SrWbZHB6g4tt9CGU',
|
|
]
|
|
signerListSetTx.SignerQuorum = accounts.length
|
|
for (const acc of accounts) {
|
|
signerListSetTx.SignerEntries.push({
|
|
SignerEntry: {
|
|
Account: acc,
|
|
SignerWeight: 1,
|
|
},
|
|
})
|
|
}
|
|
|
|
const errorMessage =
|
|
'SignerListSet: maximum of 32 members allowed in SignerEntries'
|
|
assert.throws(
|
|
() => validateSignerListSet(signerListSetTx),
|
|
ValidationError,
|
|
errorMessage,
|
|
)
|
|
assert.throws(
|
|
() => validate(signerListSetTx),
|
|
ValidationError,
|
|
errorMessage,
|
|
)
|
|
})
|
|
|
|
it(`verifies valid WalletLocator in SignerEntries`, function () {
|
|
signerListSetTx.SignerQuorum = 3
|
|
signerListSetTx.SignerEntries = [
|
|
{
|
|
SignerEntry: {
|
|
Account: 'rBFBipte4nAQCTsRxd2czwvSurhCpAf4X6',
|
|
SignerWeight: 1,
|
|
WalletLocator:
|
|
'CAFECAFECAFECAFECAFECAFECAFECAFECAFECAFECAFECAFECAFECAFECAFECAFE',
|
|
},
|
|
},
|
|
{
|
|
SignerEntry: {
|
|
Account: 'r3ijUH32iiy9tYNj3rD7hKWYjy1BFUxngm',
|
|
SignerWeight: 1,
|
|
},
|
|
},
|
|
{
|
|
SignerEntry: {
|
|
Account: 'rpwq8vi4Mn3L5kDJmb8Mg59CanPFPzMCnj',
|
|
SignerWeight: 1,
|
|
WalletLocator:
|
|
'00000000000000000000000000000000000000000000000000000000DEADBEEF',
|
|
},
|
|
},
|
|
]
|
|
|
|
assert.doesNotThrow(() => validateSignerListSet(signerListSetTx))
|
|
assert.doesNotThrow(() => validate(signerListSetTx))
|
|
})
|
|
|
|
it(`throws w/ invalid WalletLocator in SignerEntries`, function () {
|
|
signerListSetTx.SignerQuorum = 2
|
|
signerListSetTx.SignerEntries = [
|
|
{
|
|
SignerEntry: {
|
|
Account: 'rBFBipte4nAQCTsRxd2czwvSurhCpAf4X6',
|
|
SignerWeight: 1,
|
|
WalletLocator: 'not_valid',
|
|
},
|
|
},
|
|
{
|
|
SignerEntry: {
|
|
Account: 'r3ijUH32iiy9tYNj3rD7hKWYjy1BFUxngm',
|
|
SignerWeight: 1,
|
|
},
|
|
},
|
|
]
|
|
const errorMessage =
|
|
'SignerListSet: WalletLocator in SignerEntry must be a 256-bit (32-byte) hexadecimal value'
|
|
assert.throws(
|
|
() => validateSignerListSet(signerListSetTx),
|
|
ValidationError,
|
|
errorMessage,
|
|
)
|
|
assert.throws(
|
|
() => validate(signerListSetTx),
|
|
ValidationError,
|
|
errorMessage,
|
|
)
|
|
})
|
|
})
|