Skip to content

Commit cb2ee5a

Browse files
test: extra test for token enablement spoofed data
TICKET: WP-5744
1 parent 718c1b1 commit cb2ee5a

File tree

2 files changed

+120
-0
lines changed

2 files changed

+120
-0
lines changed

modules/sdk-coin-sol/test/fixtures/sol.ts

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1019,6 +1019,108 @@ export const wrwUser = {
10191019
};
10201020

10211021
export const enableTokenFixtures = {
1022+
sendTokenEnablementPayload: {
1023+
enableTokens: [{ name: 'tsol:ray', address: 'Gg8Y2TYjUiW4MdUJU3qR3CTDKG8izuKYpXobDj3uzi1y' }],
1024+
walletPassphrase: 'test-password',
1025+
apiVersion: 'full',
1026+
prebuildTx: {
1027+
walletId: '68bafee43eb5cd22aca2afd6b13ec7ad',
1028+
wallet: {
1029+
id: '68bafee43eb5cd22aca2afd6b13ec7ad',
1030+
users: [{ user: '65f9c6797236825d1b4e1f82a1035b46', permissions: ['admin', 'spend', 'view'] }],
1031+
coin: 'tsol',
1032+
label: 'SOL BLIND SIGNING',
1033+
m: 2,
1034+
n: 3,
1035+
keys: [
1036+
'68bafed588671cf94ed8a5dbba882ad3',
1037+
'68bafed52d6d95694cf596c2a153868b',
1038+
'68bafed42d6d95694cf5956ed640853a',
1039+
],
1040+
keySignatures: {},
1041+
enterprise: '66632c6b42b03d265a939048beaaee55',
1042+
organization: '66632c6d42b03d265a939107d2f586e5',
1043+
bitgoOrg: 'BitGo Trust',
1044+
tags: ['68bafee43eb5cd22aca2afd6b13ec7ad', '66632c6b42b03d265a939048beaaee55'],
1045+
disableTransactionNotifications: false,
1046+
freeze: {},
1047+
deleted: false,
1048+
approvalsRequired: 1,
1049+
isCold: false,
1050+
coinSpecific: {
1051+
rootAddress: 'Gg8Y2TYjUiW4MdUJU3qR3CTDKG8izuKYpXobDj3uzi1y',
1052+
pendingChainInitialization: false,
1053+
minimumFunding: 2447136,
1054+
lastChainIndex: { 0: 1, 1: -1 },
1055+
nonceExpiresAt: '2025-09-05T12:54:16.219Z',
1056+
trustedTokens: [
1057+
{ token: 'tsol:gari', state: 'active' },
1058+
{ token: 'tsol:gmt', state: 'active' },
1059+
{ token: 'tsol:orca', state: 'active' },
1060+
],
1061+
},
1062+
admin: {
1063+
policy: {
1064+
date: '2025-09-05T15:16:52.376Z',
1065+
id: '68bafee43eb5cd22aca2afd9e699a3ac',
1066+
label: 'default',
1067+
rules: [],
1068+
version: 0,
1069+
latest: true,
1070+
},
1071+
},
1072+
clientFlags: [],
1073+
walletFlags: [],
1074+
allowBackupKeySigning: false,
1075+
recoverable: true,
1076+
startDate: '2025-09-05T15:16:52.000Z',
1077+
type: 'hot',
1078+
buildDefaults: {},
1079+
customChangeKeySignatures: {},
1080+
hasLargeNumberOfAddresses: false,
1081+
multisigType: 'tss',
1082+
hasReceiveTransferPolicy: false,
1083+
creator: '65f9c6797236825d1b4e1f82a1035b46',
1084+
walletFullyCreated: true,
1085+
config: {},
1086+
balanceString: '997865920',
1087+
confirmedBalanceString: '997865920',
1088+
spendableBalanceString: '985212384',
1089+
reservedBalanceString: '2447136',
1090+
receiveAddress: {
1091+
id: '68bafee43eb5cd22aca2afe431d4272b',
1092+
address: 'Gg8Y2TYjUiW4MdUJU3qR3CTDKG8izuKYpXobDj3uzi1y',
1093+
chain: 0,
1094+
index: 0,
1095+
coin: 'tsol',
1096+
wallet: '68bafee43eb5cd22aca2afd6b13ec7ad',
1097+
lastConsolidatedTime: '2025-09-08T20:27:43.026Z',
1098+
needsConsolidation: true,
1099+
coinSpecific: {
1100+
rootAddress: 'Gg8Y2TYjUiW4MdUJU3qR3CTDKG8izuKYpXobDj3uzi1y',
1101+
minimumFunding: 2447136,
1102+
type: 'native',
1103+
pendingChainInitialization: false,
1104+
trustedTokens: [
1105+
{ token: 'tsol:gari', state: 'active' },
1106+
{ token: 'tsol:gmt', state: 'active' },
1107+
{ token: 'tsol:orca', state: 'active' },
1108+
],
1109+
},
1110+
},
1111+
pendingApprovals: [],
1112+
},
1113+
txRequestId: 'ba2387ac-3634-47c9-9e68-b303ba3b68ca',
1114+
txHex:
1115+
'0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000449d051689c3b00fbc5469c657df5b6cb933ac474d0413d01b9649927d5efdca0609bbe6ec994303447d0a637bbd66f2bb547cc2821c6a28cad6debd2daf070b0201060ae8e579a7198c71ee38b3ba2ee56af88cb16995a8f0bf46ab2a3702603cb732e41c96172044f1217c3784e8f02f49e2c8fc3591e81294ab54394f9d22fd7b7a8fa0fb8945a3d63fcacb1a209b094f9a829623548631f0afe5a8ed85d94b634512dc83aad01404ee1a3d70813d21e8923ad1d10354802dc3fbfade3d1c4f9547ce000000000000000000000000000000000000000000000000000000000000000081f74cefd3fb844f62ca7ed6f1418b3f86faf0886647d980259bf0aafbe77b6c8c97258f4e2489f1bb3d1029148e0d830b5a1399daff1084048e7bd8dbe9f85906a7d517192c568ee08a845f73d29788cf035c3145b21ab344d8062ea940000006a7d517192c5c51218cc94c3d4af17f58daee089ba1fd44e3dbd98a0000000006ddf6e1d765a193d9cbe146ceeb79ac1cb485ed5f5b37913a8cf5857eff00a93507d1bc739b13daf71ce8000f751dc08956ab0dd441d7fbf7c7666f9e0560ad020403020701040400000006070003000504090800',
1116+
buildParams: {
1117+
apiVersion: 'full',
1118+
enableTokens: [{ name: 'tsol:ray', address: 'Gg8Y2TYjUiW4MdUJU3qR3CTDKG8izuKYpXobDj3uzi1y' }],
1119+
type: 'enabletoken',
1120+
},
1121+
feeInfo: { fee: 2049280, feeString: '2049280' },
1122+
},
1123+
},
10221124
txParams: {
10231125
apiVersion: 'full',
10241126
enableTokens: [

modules/sdk-coin-sol/test/unit/sol.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
MPCSweepTxs,
1616
MPCTx,
1717
MPCTxs,
18+
PrebuildAndSignTransactionOptions,
1819
TransactionPrebuild,
1920
TssUtils,
2021
TxRequest,
@@ -3334,5 +3335,22 @@ describe('SOL:', function () {
33343335
}
33353336
);
33363337
});
3338+
3339+
it('should fail sendTokenEnablement call on spoofed data', async function () {
3340+
const { sendTokenEnablementPayload, walletData, wrongTokenNameTxHex } = testData.enableTokenFixtures;
3341+
const wallet = new Wallet(bitgo, basecoin, walletData);
3342+
nock('https://bitgo.fakeurl').get('/api/v2/tsol/key/68bafed588671cf94ed8a5dbba882ad3').reply(200, {});
3343+
await assert.rejects(
3344+
async () =>
3345+
wallet.sendTokenEnablement({
3346+
verification: { verifyTokenEnablement: true },
3347+
...sendTokenEnablementPayload,
3348+
prebuildTx: { ...sendTokenEnablementPayload.prebuildTx, txHex: wrongTokenNameTxHex },
3349+
} as unknown as PrebuildAndSignTransactionOptions),
3350+
{
3351+
message: 'Invalid token name: expected tsol:ray, got tsol:t22mint on token enablement tx',
3352+
}
3353+
);
3354+
});
33373355
});
33383356
});

0 commit comments

Comments
 (0)