|
1 | 1 | import assert from 'assert'; |
2 | 2 |
|
| 3 | +import { BitGoAPI } from '@bitgo/sdk-api'; |
3 | 4 | import { TransactionType } from '@bitgo/sdk-core'; |
| 5 | +import { TestBitGo, TestBitGoAPI } from '@bitgo/sdk-test'; |
4 | 6 |
|
5 | 7 | import { getCantonBuilderFactory } from '../helper'; |
6 | 8 | import { |
| 9 | + CANTON_RECEIVE_ADDRESS, |
7 | 10 | GenerateTopologyResponse, |
8 | 11 | TransferAcceptRawTransaction, |
9 | 12 | TransferRejectRawTransaction, |
10 | 13 | WalletInitRawTransaction, |
11 | 14 | } from '../resources'; |
| 15 | +import { Tcanton } from '../../src'; |
12 | 16 |
|
13 | 17 | describe('Canton integration tests', function () { |
| 18 | + let bitgo: TestBitGoAPI; |
| 19 | + let basecoin: Tcanton; |
| 20 | + before(() => { |
| 21 | + bitgo = TestBitGo.decorate(BitGoAPI, { env: 'mock' }); |
| 22 | + bitgo.safeRegister('tcanton', Tcanton.createInstance); |
| 23 | + basecoin = bitgo.coin('tcanton') as Tcanton; |
| 24 | + }); |
| 25 | + |
14 | 26 | describe('Explain raw transaction', function () { |
15 | 27 | const factory = getCantonBuilderFactory('tcanton'); |
16 | 28 | it('should explain raw wallet init transaction', function () { |
@@ -41,4 +53,71 @@ describe('Canton integration tests', function () { |
41 | 53 | assert.equal(explainTxData.inputAmount, '5.0000000000'); |
42 | 54 | }); |
43 | 55 | }); |
| 56 | + |
| 57 | + describe('isWalletAddress', function () { |
| 58 | + let keychains; |
| 59 | + let commonKeychain: string; |
| 60 | + before(function () { |
| 61 | + commonKeychain = |
| 62 | + '19bdfe2a4b498a05511381235a8892d54267807c4a3f654e310b938b8b424ff4adedbe92f4c146de641c67508a961324c8504cdf8e0c0acbb68d6104ccccd781'; |
| 63 | + keychains = [ |
| 64 | + { |
| 65 | + id: '6424c353eaf78d000766e95949868468', |
| 66 | + source: 'user', |
| 67 | + type: 'tss', |
| 68 | + commonKeychain: |
| 69 | + '19bdfe2a4b498a05511381235a8892d54267807c4a3f654e310b938b8b424ff4adedbe92f4c146de641c67508a961324c8504cdf8e0c0acbb68d6104ccccd781', |
| 70 | + encryptedPrv: |
| 71 | + '{"iv":"cZd5i7L4RxtwrALW2rK7UA==","v":1,"iter":10000,"ks":256,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"5zgoH1Bd3Fw=","ct":"9vVlnXFRtrM9FVEo+d2chbGHlM9lFZemueBuAs3BIkPo33Fo7jzwwNK/kIWkEyg+NmEBd5IaqAS157nvvvwzzsmMWlQdUz9qbmXNv3pg987cXFR08exS+4uhwP1YNOjJTRvRNcO9ZqHb46d4fmyJ/yC9/susCge7r/EsbaN5C3afv1dzybuq912FwaQElZLYYp5BICudFOMZ9k0UDMfKM/PMDkH7WexoGHr9GKq/bgCH2B39TZZyHKU6Uy47lXep2s6h0DrMwHOrnmiL3DZjOj88Ynvphlzxuo4eOlD2UHia2+nvIaISYs29Pr0DAvREutchvcBpExj1kWWPv7hQYrv8F0NAdatsbWl3w+xKyfiMKo1USlrwyJviypGtQtXOJyw0XPN0rv2+L5lW8BbjpzHfYYN13fJTedlGTFhhkzVtbbPAKE02kx7zCJcjYaiexdSTsrDLScYNT9/Jhdt27KpsooehwVohLfSKz4vbFfRu2MPZw3/+c/hfiJNgtz6esWbnxGrcE8U2IwPYCaK+Ghk4DcqWNIni59RI5B5kAsQOToII40qPN510uTgxBSPO7q7MHgkxdd4CqBq+ojr9j0P7oao8E5Y+CBDJrojDoCh1oCCDW9vo2dXlVcD8SIbw7U/9AfvEbA4xyE/5md1M7CIwLnWs2Ynv0YtaKoqhdS9x6FmHlMDhN/DKHinrwmowtrTT82fOkpO5g9saSmgU7Qy3gLt8t+VwdEyeFeQUKRSyci8qgqXQaZIg4+aXgaSOnlCFMtmB8ekYxEhTY5uzRfrNgS4s1QeqFBpNtUF+Ydi297pbVXnJoXAN+SVWd80GCx+yI2dpVC89k3rOWK9WeyqlnzuLJWp2RIOB9cdW8GFv/fN+QAJpYeVxOE4+nZDsKnsj8nKcg9t4Dlx1G6gLM1/Vq9YxNLbuzuRC0asUYvdMnoMvszmpm++TxndYisgNYscpZSoz7wvcazJNEPfhPVjEkd6tUUuN4GM35H0DmKCUQNT+a6B6hmHlTZvjxiyGAg5bY59hdjvJ+22QduazlEEC6LI3HrA7uK0TpplWzS1tCIFvTMUhj65DEZmNJ2+ZY9bQ4vsMf+DRR3OOG4t+DMlNfjOd3zNv3QoY95BjfWpryFwPzDq7bCP67JDsoj7j2TY5FRSrRkD77H0Ewlux2cWfjRTwcMHcdQxxuV0OP0aNjGDjybFN"}', |
| 72 | + }, |
| 73 | + { |
| 74 | + id: '6424c353eaf78d000766e96137d4404b', |
| 75 | + source: 'backup', |
| 76 | + type: 'tss', |
| 77 | + commonKeychain: |
| 78 | + '19bdfe2a4b498a05511381235a8892d54267807c4a3f654e310b938b8b424ff4adedbe92f4c146de641c67508a961324c8504cdf8e0c0acbb68d6104ccccd781', |
| 79 | + encryptedPrv: |
| 80 | + '{"iv":"vi0dPef/Rx7kG/pRySQi6Q==","v":1,"iter":10000,"ks":256,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"9efhQsiEvVs=","ct":"Gw6atvf6gxKzsjtl3xseipO3rAxp1mAz7Yu1ihFsi5/lf2vMZegApgZx+pyILFS9KKLHbNF3U6WgSYdrr2t4vzdLsXkH1WIxfHS+cd2C5N59yADZDnPJBT6pv/IRvaYelP0Ck3nIYQ2hSMm8op+VOWC/SzHeh7slYDqwEHTGan0Wigfvk1yRd7CCJTaEAomnc/4eFi2NY3X3gt/3opy9IAgknnwUFohn96EWpEQ0F6pbzH/Z8VF6gF+DUcrrByAxExUPnHQZiFk3YHU/vVV4FxBU/mVAE8xBsBn5ul5e5SUMPfc7TBuJWv4BByTNg9xDShF/91Yx2nbfUm5d9QmM8lpKgzzQvcK8POAPk87gRCuKnsGh5vNS0UppkHc+ocfzRQlGA6jze7QyyQO0rMj5Ly8kWjwk2vISvKYHYS1NR7VU549UIXo7NXjatunKSc3+IreoRUHIshiaLg6hl+pxCCuc0qQ43V0mdIfCjTN8gkGWLNk8R7tAGPz9jyapQPcPEGHgEz0ATIi6yMNWCsibS2eLiE1uVEJONoM4lk6FPl3Q2CHbW2MeEbqjY8hbaw18mNb2xSBH/Fwpiial+Tvi2imqgnCO4ZpO9bllKftZPcQy0stN+eGBlb5ufyflKkDSiChHYroGjEpmiFicdde48cJszF52uKNnf1q67fA9/S2FAHQab3EXojxH2Gbk+kkV2h/TYKFFZSWC3vi4e8mO+vjMUcR0AdsgPFyEIz0SCGuba3CnTLNdEuZwsauAeHkx2vUTnRgJPVgNeeuXmsVG76Sy2ggJHuals0Hj8U2Xda0qO1RuFfoCWfss9wn6HGRwPPkhSB/8oNguAqmRVGKkd8Zwt3IvrTd9fk0/rFFDJKGz7WyNHkYgUmNiGcItD12v0jx7FZ52EJzl3Av1RyJUQK18+8EYPh3SGiU9dt7VX0aF0uo6JouKhOeldUvMP+AugQz8fUclwTQsbboVg27Yxo0DyATVwThW5a56R6Qf5ZiQJluFuzs5y98rq0S5q046lE6o3vVmJpEdwjeSCJoET5CL4nTgkXyWvhm4eB8u/e66l3o0qbaSx8q9YYmT9EpRcl5TP4ThLBKETYdzVvg4exjQfektMatk5EyUpEIhZPXh5vXpJZesdfO9LJ8zTaHBsBjDPU7cdNgQMbebpataRi8A0el2/IJXl+E+olgAz5zC4i2O1Q=="}', |
| 81 | + }, |
| 82 | + { |
| 83 | + id: '6424c353eaf78d000766e9510b125fba', |
| 84 | + source: 'bitgo', |
| 85 | + type: 'tss', |
| 86 | + commonKeychain: |
| 87 | + '19bdfe2a4b498a05511381235a8892d54267807c4a3f654e310b938b8b424ff4adedbe92f4c146de641c67508a961324c8504cdf8e0c0acbb68d6104ccccd781', |
| 88 | + verifiedVssProof: true, |
| 89 | + isBitGo: true, |
| 90 | + }, |
| 91 | + ]; |
| 92 | + }); |
| 93 | + it('should return true when receive address is valid', async function () { |
| 94 | + const address = CANTON_RECEIVE_ADDRESS.VALID_ADDRESS; |
| 95 | + const index = '1'; |
| 96 | + const params = { commonKeychain, address: address, index, keychains }; |
| 97 | + const isValid = await basecoin.isWalletAddress(params); |
| 98 | + isValid.should.equal(true); |
| 99 | + }); |
| 100 | + |
| 101 | + it('should throw error when receive address is invalid', async function () { |
| 102 | + const address = CANTON_RECEIVE_ADDRESS.INVALID_ADDRESS; |
| 103 | + const index = '1'; |
| 104 | + const params = { commonKeychain, address: address, index, keychains }; |
| 105 | + try { |
| 106 | + await basecoin.isWalletAddress(params); |
| 107 | + } catch (e) { |
| 108 | + assert.equal(e.message, 'invalid address: ' + address); |
| 109 | + } |
| 110 | + }); |
| 111 | + |
| 112 | + it('should throw error when receive address memoId is incorrect index', async function () { |
| 113 | + const address = CANTON_RECEIVE_ADDRESS.VALID_ADDRESS; |
| 114 | + const index = '2'; |
| 115 | + const params = { commonKeychain, address: address, index, keychains }; |
| 116 | + try { |
| 117 | + await basecoin.isWalletAddress(params); |
| 118 | + } catch (e) { |
| 119 | + assert.equal(e.message, 'invalid memoId index: 1'); |
| 120 | + } |
| 121 | + }); |
| 122 | + }); |
44 | 123 | }); |
0 commit comments