From f79d2adcee6759409456bc824b0c436f09e5bede Mon Sep 17 00:00:00 2001 From: kds Date: Mon, 17 Nov 2025 19:38:24 +0530 Subject: [PATCH] feat(sdk-coin-canton): added memoId check for isValidAddress Ticket: COIN-6566 --- modules/sdk-coin-canton/src/lib/utils.ts | 7 +++++-- modules/sdk-coin-canton/test/resources.ts | 1 + modules/sdk-coin-canton/test/unit/utils.ts | 6 ++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/modules/sdk-coin-canton/src/lib/utils.ts b/modules/sdk-coin-canton/src/lib/utils.ts index 37c6ad0eda..3d12ee8c97 100644 --- a/modules/sdk-coin-canton/src/lib/utils.ts +++ b/modules/sdk-coin-canton/src/lib/utils.ts @@ -15,8 +15,11 @@ export class Utils implements BaseUtils { isValidAddress(address: string): boolean { if (!address || address.trim() === '') return false; const [partyHint, fingerprint] = address.trim().split('::'); - if (!partyHint || !fingerprint) return false; - return this.isValidCantonHex(fingerprint); + if (!fingerprint) return false; + // all memoIds are considered valid as long as strings are passed + const [fingerprintPart] = fingerprint.trim().split('?memoId='); + if (!partyHint || !fingerprintPart) return false; + return this.isValidCantonHex(fingerprintPart); } /** @inheritdoc */ diff --git a/modules/sdk-coin-canton/test/resources.ts b/modules/sdk-coin-canton/test/resources.ts index 8b163b9e50..c3a2af279f 100644 --- a/modules/sdk-coin-canton/test/resources.ts +++ b/modules/sdk-coin-canton/test/resources.ts @@ -84,6 +84,7 @@ export const CANTON_ADDRESSES = { INVALID_FINGERPRINT: '12205::12205b4e3537a95126d9060459234gd8ad3c3ddccda4f79901954280ee19c576714d', MISSING_PARTY_HINT: '::12205b4e3537a95126d9060459234gd8ad3c3ddccda4f79901954280ee19c576714d', MISSING_FINGERPRINT: '12205::', + VALID_MEMO_ID: '1220a::1220a43d89dc7d8f85316116aac093667f769fce55411aef6846ccb933b2e1a3b598?memoId=1', }; export const CANTON_BLOCK_HEIGHT = { diff --git a/modules/sdk-coin-canton/test/unit/utils.ts b/modules/sdk-coin-canton/test/unit/utils.ts index 40b31af04d..b1f3ab3711 100644 --- a/modules/sdk-coin-canton/test/unit/utils.ts +++ b/modules/sdk-coin-canton/test/unit/utils.ts @@ -137,6 +137,12 @@ describe('Canton Util', function () { should.exist(isValid); assert.strictEqual(isValid, false); }); + + it('should return true when memo id is valid', function () { + const isValid = utils.isValidAddress(CANTON_ADDRESSES.VALID_MEMO_ID); + should.exist(isValid); + assert.strictEqual(isValid, true); + }); }); describe('Check if block hash is valid', function () {