diff --git a/packages/advanced-logic/test/extensions/payment-network/any-to-near.test.ts b/packages/advanced-logic/test/extensions/payment-network/any-to-near.test.ts index ce3f3daa2..29ccedcb9 100644 --- a/packages/advanced-logic/test/extensions/payment-network/any-to-near.test.ts +++ b/packages/advanced-logic/test/extensions/payment-network/any-to-near.test.ts @@ -5,6 +5,7 @@ import { extensionStateWithAnyToNativeTokenPaymentAndRefund, extensionStateAnyToNativeWithPaymentAddressAdded, extensionStateAnyToNativeWithFeeAdded, + extensionStateWithAnyToNativeTokenPaymentAndRefundTGExtension, } from '../../utils/payment-network/any/generator-data-create'; import { AdvancedLogic } from '../../../src'; import { arbitraryTimestamp, payeeRaw, payerRaw } from '../../utils/test-data-generator'; @@ -308,6 +309,22 @@ describe('extensions/payment-network/any-to-native-token', () => { expect(newExtensionState).toEqual(extensionStateWithAnyToNativeTokenPaymentAndRefund); }); + it('works when payment address extension is .tg', () => { + const tgAddress = 'pay.tg'; + creationAction.parameters.paymentAddress = tgAddress; + + const newExtensionState = advancedLogic.applyActionToExtensions( + validRequestState.extensions, + creationAction, + validRequestState, + payeeRaw.identity, + arbitraryTimestamp, + ); + + expect(newExtensionState).toEqual( + extensionStateWithAnyToNativeTokenPaymentAndRefundTGExtension, + ); + }); it('throws when currency is not supported', () => { const invalidRequestState: typeof requestStateNoExtensions = { ...requestStateNoExtensions, diff --git a/packages/advanced-logic/test/utils/payment-network/any/generator-data-create.ts b/packages/advanced-logic/test/utils/payment-network/any/generator-data-create.ts index a2185101e..9e4e3df8f 100644 --- a/packages/advanced-logic/test/utils/payment-network/any/generator-data-create.ts +++ b/packages/advanced-logic/test/utils/payment-network/any/generator-data-create.ts @@ -282,6 +282,46 @@ export const extensionStateWithAnyToNativeTokenPaymentAndRefund: RequestLogicTyp version: '0.1.0', }, }; +export const extensionStateWithAnyToNativeTokenPaymentAndRefundTGExtension: RequestLogicTypes.IExtensionStates = + { + [ExtensionTypes.PAYMENT_NETWORK_ID.ANY_TO_NATIVE_TOKEN as string]: { + events: [ + { + name: 'create', + parameters: { + paymentAddress: 'pay.tg', + refundAddress: 'refund.near', + salt: arbitrarySalt, + feeAddress: 'fee.near', + feeAmount: '100', + maxRateTimespan: 1000000, + network: 'aurora', + }, + timestamp: arbitraryTimestamp, + }, + ], + id: ExtensionTypes.PAYMENT_NETWORK_ID.ANY_TO_NATIVE_TOKEN, + type: ExtensionTypes.TYPE.PAYMENT_NETWORK, + values: { + paymentAddress: 'pay.tg', + refundAddress: 'refund.near', + feeAddress: 'fee.near', + salt: arbitrarySalt, + payeeDelegate: undefined, + payerDelegate: undefined, + paymentInfo: undefined, + receivedPaymentAmount: '0', + receivedRefundAmount: '0', + refundInfo: undefined, + sentPaymentAmount: '0', + sentRefundAmount: '0', + network: 'aurora', + maxRateTimespan: 1000000, + feeAmount: '100', + }, + version: '0.1.0', + }, + }; export const extensionStateAnyToNativeWithPaymentAddressAdded: RequestLogicTypes.IExtensionStates = { [ExtensionTypes.PAYMENT_NETWORK_ID.ANY_TO_NATIVE_TOKEN as string]: { diff --git a/packages/currency/src/currency-utils.ts b/packages/currency/src/currency-utils.ts index 0464b9d4b..d0f82037a 100644 --- a/packages/currency/src/currency-utils.ts +++ b/packages/currency/src/currency-utils.ts @@ -27,7 +27,7 @@ export const isValidNearAddress = (address: string, network?: string): boolean = switch (network) { case 'aurora': case 'near': - return !!address.match(/\.near$/); + return !!address.match(/\.(?:near|tg)$/); case 'aurora-testnet': case 'near-testnet': return !!address.match(/\.testnet$/); diff --git a/packages/currency/test/address-validation/near-validation.test.ts b/packages/currency/test/address-validation/near-validation.test.ts index dd03e39e1..3ec3aadaa 100644 --- a/packages/currency/test/address-validation/near-validation.test.ts +++ b/packages/currency/test/address-validation/near-validation.test.ts @@ -1,6 +1,7 @@ import { isValidNearAddress } from '../../src/currency-utils'; const validNearAccount = 'testaccount.near'; +const validNearTgAccount = 'testaccount.tg'; const validNearHexAccount = 'f336b7833496cdcae230463c3daff7b2fe187a93be8df5b1326ce7a595033163'; const badNearHexAccount = 'f336b7833496cdcae230463c3daff7b2fe187a93be8df5b1326ce7a595033163'; const badNearAccount = 'testaccount.badnear'; @@ -13,6 +14,7 @@ describe('Near address validation', () => { it('Should accepts specfic near format', () => { expect(isValidNearAddress(validNearAccount)).toBeTruthy; + expect(isValidNearAddress(validNearTgAccount)).toBeTruthy; }); it('Should not accept accepts other format', () => {