mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-12-06 09:18:02 +00:00
fix: enable the removal of a signer list (#2377)
`SignerQuorum` field has to be 0 and the `SignerEntrys` field has to be `undefined` Co-authored-by: Caleb Kniffen <ckniffen@ripple.com>
This commit is contained in:
@@ -23,7 +23,7 @@ export interface SignerListSet extends BaseTransaction {
|
||||
* more than 32 members. No address may appear more than once in the list, nor
|
||||
* may the Account submitting the transaction appear in the list.
|
||||
*/
|
||||
SignerEntries: SignerEntry[]
|
||||
SignerEntries?: SignerEntry[]
|
||||
}
|
||||
|
||||
const MAX_SIGNERS = 32
|
||||
@@ -36,6 +36,7 @@ const HEX_WALLET_LOCATOR_REGEX = /^[0-9A-Fa-f]{64}$/u
|
||||
* @param tx - An SignerListSet Transaction.
|
||||
* @throws When the SignerListSet is Malformed.
|
||||
*/
|
||||
// eslint-disable-next-line complexity -- validation can be complex
|
||||
export function validateSignerListSet(tx: Record<string, unknown>): void {
|
||||
validateBaseTransaction(tx)
|
||||
|
||||
@@ -47,6 +48,11 @@ export function validateSignerListSet(tx: Record<string, unknown>): void {
|
||||
throw new ValidationError('SignerListSet: invalid SignerQuorum')
|
||||
}
|
||||
|
||||
// All other checks are for if SignerQuorum is greater than 0
|
||||
if (tx.SignerQuorum === 0) {
|
||||
return
|
||||
}
|
||||
|
||||
if (tx.SignerEntries === undefined) {
|
||||
throw new ValidationError('SignerListSet: missing field SignerEntries')
|
||||
}
|
||||
|
||||
@@ -18,8 +18,9 @@ describe('SignerListSet', function () {
|
||||
})
|
||||
afterEach(async () => teardownClient(testContext))
|
||||
|
||||
// Add signerlist
|
||||
it(
|
||||
'base',
|
||||
'add',
|
||||
async () => {
|
||||
const tx: SignerListSet = {
|
||||
TransactionType: 'SignerListSet',
|
||||
@@ -44,4 +45,18 @@ describe('SignerListSet', function () {
|
||||
},
|
||||
TIMEOUT,
|
||||
)
|
||||
|
||||
// Remove signerlist
|
||||
it(
|
||||
'remove',
|
||||
async () => {
|
||||
const tx: SignerListSet = {
|
||||
TransactionType: 'SignerListSet',
|
||||
Account: testContext.wallet.classicAddress,
|
||||
SignerQuorum: 0,
|
||||
}
|
||||
await testTransaction(testContext.client, tx, testContext.wallet)
|
||||
},
|
||||
TIMEOUT,
|
||||
)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user