UNPKG

@coolwallet/xrp

Version:
199 lines (182 loc) 7.75 kB
import { CardType, Transport } from '@coolwallet/core'; import { createTransport } from '@coolwallet/transport-jre-http'; import { initialize } from '@coolwallet/testing-library'; import XRP from '../src/index'; type PromiseValue<T> = T extends Promise<infer V> ? V : never; type Mandatory = PromiseValue<ReturnType<typeof initialize>>; describe('Test XRP SDK', () => { let transport: Transport; let cardType: CardType; let props: Mandatory; const xrpSDK = new XRP(); const mnemonic = 'zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo zoo abstract'; beforeAll(async () => { if (process.env.CARD === 'go') { cardType = CardType.Go; } else { cardType = CardType.Pro; } if (cardType === CardType.Go) { transport = (await createTransport('http://localhost:9527', CardType.Go))!; } else { transport = (await createTransport())!; } props = await initialize(transport, mnemonic); }); describe('Test Get Address', () => { it('index 0 address', async () => { const address = await xrpSDK.getAddress(transport, props.appPrivateKey, props.appId, 0); expect(address).toMatchInlineSnapshot(`"rUFN5unZ7WEA5KcC5v5JN24FJcNFaAL6Wz"`); }); }); describe('Test Transfer XRP', () => { it('transfer with address 0', async () => { const signData = { transport, appPrivateKey: props.appPrivateKey, appId: props.appId, addressIndex: 0, payment: { TransactionType: 'Payment', Flags: 2147483648, Sequence: 82710910, DestinationTag: 2121215551, LastLedgerSequence: 94113337, Amount: '100000', Fee: '10', Destination: 'rwjPKE7LqyYYcccwRoJLuGn7TA1Jyw5c6v', }, confirmCB: () => {}, authorizedCB: () => {}, }; expect(await xrpSDK.signTransaction(signData)).toMatchInlineSnapshot( `"12000022800000002404EE117E2E7E6F2E3F201B059C0E396140000000000186A068400000000000000A7321035659B8E4B0D46DC5B22F62EF6211206C2F9AA4C28689217BE99FDD5C706516F1744730450221008B3D86039E2266E8850EFB069D8C2FA4DC847DFC918945F53233E3EA0D535924022005A92BE665F501DA3FE3BBE70A5696D142B7CF53ACA0AB05A64A2334E4105F308114819863812B0B9EA1F48EF5297D2F4EE1119BD87283146ABD3AD2BD443171175B7E7FD6C0BF547A6C5A78"` ); }); }); describe('Test Transfer XRP with new script', () => { it('transfer without flags and destination tag', async () => { const signData = { transport, appPrivateKey: props.appPrivateKey, appId: props.appId, addressIndex: 0, payment: { TransactionType: 'Payment', Sequence: 82710910, LastLedgerSequence: 94113337, Amount: '100000', Fee: '10', Destination: 'rwjPKE7LqyYYcccwRoJLuGn7TA1Jyw5c6v', }, confirmCB: () => {}, authorizedCB: () => {}, }; expect(await xrpSDK.signTransaction(signData)).toMatchInlineSnapshot( `"1200002404EE117E201B059C0E396140000000000186A068400000000000000A7321035659B8E4B0D46DC5B22F62EF6211206C2F9AA4C28689217BE99FDD5C706516F174473045022100F9D55E27D707C1E582F63AEE1D7FD1877C1BA65C1F9D3EA69A2BD7A73BCC3172022059AE14C16A94B32204B9B3B47225107BD3C7DBDD1AEC17306D1F48A8B696AD9F8114819863812B0B9EA1F48EF5297D2F4EE1119BD87283146ABD3AD2BD443171175B7E7FD6C0BF547A6C5A78"` ); }); it('transfer with memo', async () => { const signData = { transport, appPrivateKey: props.appPrivateKey, appId: props.appId, addressIndex: 0, payment: { TransactionType: 'Payment', Sequence: 82710910, LastLedgerSequence: 94113337, Amount: '100000', Fee: '10', Destination: 'rwjPKE7LqyYYcccwRoJLuGn7TA1Jyw5c6v', Memos: [ { Memo: { MemoData: '31303030303030', // withdraw 金額(1000000)的 hex code }, }, ], }, confirmCB: () => {}, authorizedCB: () => {}, }; expect(await xrpSDK.signTransaction(signData)).toMatchInlineSnapshot( `"1200002404EE117E201B059C0E396140000000000186A068400000000000000A7321035659B8E4B0D46DC5B22F62EF6211206C2F9AA4C28689217BE99FDD5C706516F17446304402206E2E146CEA0CC9EE86D914136F8C4C1854A0D11F5C7818ED1E612B77C0ED7EF002207EC0106D0A195E338656810D3AF1DDC0B966EFC26457EA0C8178601BD48B50948114819863812B0B9EA1F48EF5297D2F4EE1119BD87283146ABD3AD2BD443171175B7E7FD6C0BF547A6C5A78F9EA7D0731303030303030E1F1"` ); }); }); describe('Test sign message', () => { it('sign Hello XRP', async () => { const message = 'Hello XRP'; const signData = { transport, appPrivateKey: props.appPrivateKey, appId: props.appId, message, addressIndex: 0, confirmCB: () => {}, authorizedCB: () => {}, }; expect(await xrpSDK.signMessage(signData)).toMatchInlineSnapshot( `"30450221008EBF9D0AA6A38160717CC7774CA9F64D6975C2B814CA1EF7C8A015ED6BA4488B022053231B762184A9534ADF43BF46100CC69CD1E7E4C4140DF11812CCA5BD0C4366"` ); }); }); describe('Test Trust Set RLUSD', () => { it('trust set with RLUSD token', async () => { const signData = { transport, appPrivateKey: props.appPrivateKey, appId: props.appId, addressIndex: 0, tokenPayment: { TransactionType: 'TrustSet', Flags: 2147483648, Sequence: 82710910, LastLedgerSequence: 94113337, Fee: '10', Token: { name: 'RLUSD', code: '524C555344000000000000000000000000000000', issuer: 'rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De', value: '1000000000', }, }, confirmCB: () => {}, authorizedCB: () => {}, }; expect(await xrpSDK.signTrustSet(signData)).toMatchInlineSnapshot( `"12001422800000002404EE117E201B059C0E3963D6C38D7EA4C68000524C555344000000000000000000000000000000E5E961C6A025C9404AA7B662DD1DF975BE75D13E68400000000000000A7321035659B8E4B0D46DC5B22F62EF6211206C2F9AA4C28689217BE99FDD5C706516F17446304402201DE7855C2222B3C499889457917332AA6BA85AFDCC46FF4208789B4BA7ABDC0002207C24050D0BFF666830DE535EF0D54A13E0E065F25BC4D79BB43CCE65C5D326538114819863812B0B9EA1F48EF5297D2F4EE1119BD872"` ); }); }); describe('Test IOU Transfer RLUSD', () => { it('iou transfer with RLUSD token', async () => { const signData = { transport, appPrivateKey: props.appPrivateKey, appId: props.appId, addressIndex: 0, iouPayment: { TransactionType: 'Payment', Flags: 2147483648, Sequence: 82710910, LastLedgerSequence: 94113337, Fee: '10', Destination: 'rwjPKE7LqyYYcccwRoJLuGn7TA1Jyw5c6v', Token: { name: 'RLUSD', code: '524C555344000000000000000000000000000000', issuer: 'rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De', value: '100', }, }, confirmCB: () => {}, authorizedCB: () => {}, }; expect(await xrpSDK.signIouTransfer(signData)).toMatchInlineSnapshot( `"12000022800000002404EE117E201B059C0E3961D5038D7EA4C68000524C555344000000000000000000000000000000E5E961C6A025C9404AA7B662DD1DF975BE75D13E68400000000000000A7321035659B8E4B0D46DC5B22F62EF6211206C2F9AA4C28689217BE99FDD5C706516F174473045022100EFA90B162D936A2E6145F39AF28F8ADFACEB95FCE4D72F9760C56B0DFC6EFA5B0220393D506879C5D7398B0F19FDB6A44676700E00B68ACF8CBCB33DE1462F6A27668114819863812B0B9EA1F48EF5297D2F4EE1119BD87283146ABD3AD2BD443171175B7E7FD6C0BF547A6C5A78"` ); }); }); });