Skip to content

Commit

Permalink
fix linter errors. Use AuthorizeCreds nested object format
Browse files Browse the repository at this point in the history
  • Loading branch information
ckeshava committed Jan 14, 2025
1 parent 035bf0d commit ce9193c
Show file tree
Hide file tree
Showing 8 changed files with 66 additions and 31 deletions.
11 changes: 3 additions & 8 deletions packages/xrpl/src/models/ledger/PermissionedDomain.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
import { BaseLedgerEntry, HasPreviousTxnID } from './BaseLedgerEntry'
import { AuthorizeCredential } from '../common'

export interface Credential {
Credential: {
Issuer: string
CredentialType: string
}
}
import { BaseLedgerEntry, HasPreviousTxnID } from './BaseLedgerEntry'

export default interface PermissionedDomain
extends BaseLedgerEntry,
Expand All @@ -20,5 +15,5 @@ export default interface PermissionedDomain

Sequence: number

AcceptedCredentials: Credential[]
AcceptedCredentials: AuthorizeCredential[]
}
6 changes: 6 additions & 0 deletions packages/xrpl/src/models/transactions/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -502,6 +502,12 @@ export function validateCredentialsList(
}
}

/**
* Check if an array of objects contains any duplicates.
*
* @param objectList - Array of objects to check for duplicates
* @returns True if duplicates exist, false otherwise
*/
export function containsDuplicates(objectList: object[]): boolean {
const objSet = new Set(objectList.map((obj) => JSON.stringify(obj)))
return objSet.size !== objectList.length
Expand Down
12 changes: 10 additions & 2 deletions packages/xrpl/src/models/transactions/permissionedDomainDelete.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import {
BaseTransaction,
isString,
validateBaseTransaction,
validateRequiredField
validateRequiredField,
} from './common'

export interface PermissionedDomainDelete extends BaseTransaction {
Expand All @@ -11,7 +11,15 @@ export interface PermissionedDomainDelete extends BaseTransaction {
DomainID: string
}

export function validatePermissionedDomainDelete(tx: Record<string, unknown>): void {
/**
* Verify the form and type of a PermissionedDomainDelete transaction.
*
* @param tx - The transaction to verify.
* @throws When the transaction is malformed.
*/
export function validatePermissionedDomainDelete(
tx: Record<string, unknown>,
): void {
validateBaseTransaction(tx)

validateRequiredField(tx, 'DomainID', isString)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { ValidationError } from '../../errors'
import { Credential } from '../ledger/PermissionedDomain'
import { AuthorizeCredential } from '../common'

import {
BaseTransaction,
Expand All @@ -17,7 +17,7 @@ export interface PermissionedDomainSet extends BaseTransaction {
TransactionType: 'PermissionedDomainSet'

DomainID?: string
AcceptedCredentials: Credential[]
AcceptedCredentials: AuthorizeCredential[]
}

/**
Expand Down
10 changes: 8 additions & 2 deletions packages/xrpl/src/models/transactions/transaction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,14 @@ import {
PaymentChannelFund,
validatePaymentChannelFund,
} from './paymentChannelFund'
import { PermissionedDomainDelete, validatePermissionedDomainDelete } from './permissionedDomainDelete'
import { PermissionedDomainSet, validatePermissionedDomainSet } from './permissionedDomainSet'
import {
PermissionedDomainDelete,
validatePermissionedDomainDelete,
} from './permissionedDomainDelete'
import {
PermissionedDomainSet,
validatePermissionedDomainSet,
} from './permissionedDomainSet'
import { SetFee } from './setFee'
import { SetRegularKey, validateSetRegularKey } from './setRegularKey'
import { SignerListSet, validateSignerListSet } from './signerListSet'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
import { stringToHex } from '@xrplf/isomorphic/utils'
import { assert } from 'chai'

import { LedgerEntryRequest, PermissionedDomainDelete, PermissionedDomainSet } from '../../../src'
import PermissionedDomain, { Credential } from '../../../src/models/ledger/PermissionedDomain'
import {
LedgerEntryRequest,
PermissionedDomainDelete,
PermissionedDomainSet,
AuthorizeCredential,
} from '../../../src'
import PermissionedDomain from '../../../src/models/ledger/PermissionedDomain'
import serverUrl from '../serverUrl'
import {
setupClient,
Expand All @@ -25,18 +30,18 @@ describe('PermissionedDomainSet', function () {
it(
'Lifecycle of PermissionedDomain ledger object',
async () => {
const sampleCredential: Credential = {
const sampleCredential: AuthorizeCredential = {
Credential: {
CredentialType: stringToHex('Passport'),
Issuer: testContext.wallet.classicAddress
}
Issuer: testContext.wallet.classicAddress,
},
}

// Step-1: Test the PermissionedDomainSet transaction
const tx_pd_set: PermissionedDomainSet = {
TransactionType: 'PermissionedDomainSet',
Account: testContext.wallet.classicAddress,
AcceptedCredentials: [sampleCredential]
AcceptedCredentials: [sampleCredential],
}

await testTransaction(testContext.client, tx_pd_set, testContext.wallet)
Expand All @@ -59,20 +64,26 @@ describe('PermissionedDomainSet', function () {
const ledger_entry_request: LedgerEntryRequest = {
command: 'ledger_entry',
// fetch the PD `index` from the previous account_objects RPC response
index: pd.index
index: pd.index,
}
const ledger_entry_result = await testContext.client.request(ledger_entry_request)
const ledger_entry_result = await testContext.client.request(
ledger_entry_request,
)
assert.deepEqual(pd, ledger_entry_result.result.node)

// Step-3: Test the PDDelete transaction
const tx_pd_delete: PermissionedDomainDelete = {
TransactionType: 'PermissionedDomainDelete',
Account: testContext.wallet.classicAddress,
// fetch the PD `index` from the previous account_objects RPC response
DomainID: pd.index
DomainID: pd.index,
}

await testTransaction(testContext.client, tx_pd_delete, testContext.wallet)
await testTransaction(
testContext.client,
tx_pd_delete,
testContext.wallet,
)
},
TIMEOUT,
)
Expand Down
15 changes: 12 additions & 3 deletions packages/xrpl/test/models/permissionedDomainDelete.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ describe('PermissionedDomainDelete', function () {
tx = {
TransactionType: 'PermissionedDomainDelete',
Account: 'rfmDuhDyLGgx94qiwf3YF8BUV5j6KSvE8',
DomainID: 'D88930B33C2B6831660BFD006D91FF100011AD4E67CBB78B460AF0A215103737',
DomainID:
'D88930B33C2B6831660BFD006D91FF100011AD4E67CBB78B460AF0A215103737',
} as any
})

Expand All @@ -27,14 +28,22 @@ describe('PermissionedDomainDelete', function () {
it(`throws w/ missing field DomainID`, function () {
delete tx.DomainID
const errorMessage = 'PermissionedDomainDelete: missing field DomainID'
assert.throws(() => validatePermissionedDomainDelete(tx), ValidationError, errorMessage)
assert.throws(
() => validatePermissionedDomainDelete(tx),
ValidationError,
errorMessage,
)
assert.throws(() => validate(tx), ValidationError, errorMessage)
})

it(`throws w/ invalid DomainID`, function () {
tx.DomainID = 1234
const errorMessage = 'PermissionedDomainDelete: invalid field DomainID'
assert.throws(() => validatePermissionedDomainDelete(tx), ValidationError, errorMessage)
assert.throws(
() => validatePermissionedDomainDelete(tx),
ValidationError,
errorMessage,
)
assert.throws(() => validate(tx), ValidationError, errorMessage)
})
})
8 changes: 4 additions & 4 deletions packages/xrpl/test/models/permissionedDomainSet.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import { stringToHex } from '@xrplf/isomorphic/dist/utils'
import { assert } from 'chai'

import { validate, ValidationError } from '../../src'
import { Credential } from '../../src/models/ledger/PermissionedDomain'
import { AuthorizeCredential, validate, ValidationError } from '../../src'
import { validatePermissionedDomainSet } from '../../src/models/transactions/permissionedDomainSet'

/**
Expand All @@ -12,7 +11,7 @@ import { validatePermissionedDomainSet } from '../../src/models/transactions/per
*/
describe('PermissionedDomainSet', function () {
let tx
const sampleCredential: Credential = {
const sampleCredential: AuthorizeCredential = {
Credential: {
CredentialType: stringToHex('Passport'),
Issuer: 'rfmDuhDyLGgx94qiwf3YF8BUV5j6KSvE8',
Expand All @@ -35,7 +34,8 @@ describe('PermissionedDomainSet', function () {
})

it(`throws with invalid field DomainID`, function () {
tx.DomainID = 1234 // DomainID is expected to be a string
// DomainID is expected to be a string
tx.DomainID = 1234
const errorMessage = 'PermissionedDomainSet: invalid field DomainID'
assert.throws(
() => validatePermissionedDomainSet(tx),
Expand Down

0 comments on commit ce9193c

Please sign in to comment.