@bitgo-beta/abstract-eth 1.2.3-alpha.40 → 1.2.3-alpha.400
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1760 -0
- package/dist/src/abstractEthLikeCoin.d.ts +18 -9
- package/dist/src/abstractEthLikeCoin.d.ts.map +1 -1
- package/dist/src/abstractEthLikeCoin.js +39 -15
- package/dist/src/abstractEthLikeNewCoins.d.ts +749 -0
- package/dist/src/abstractEthLikeNewCoins.d.ts.map +1 -0
- package/dist/src/abstractEthLikeNewCoins.js +2229 -0
- package/dist/src/ethLikeToken.d.ts +36 -6
- package/dist/src/ethLikeToken.d.ts.map +1 -1
- package/dist/src/ethLikeToken.js +286 -10
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +8 -2
- package/dist/src/lib/contractCall.d.ts +8 -0
- package/dist/src/lib/contractCall.d.ts.map +1 -0
- package/dist/src/lib/contractCall.js +17 -0
- package/dist/src/lib/iface.d.ts +133 -0
- package/dist/src/lib/iface.d.ts.map +1 -0
- package/dist/src/lib/iface.js +8 -0
- package/dist/src/lib/index.d.ts +16 -0
- package/dist/src/lib/index.d.ts.map +1 -0
- package/dist/src/lib/index.js +57 -0
- package/dist/src/lib/keyPair.d.ts +26 -0
- package/dist/src/lib/keyPair.d.ts.map +1 -0
- package/dist/src/lib/keyPair.js +65 -0
- package/dist/src/lib/messages/eip191/eip191Message.d.ts +12 -0
- package/dist/src/lib/messages/eip191/eip191Message.d.ts.map +1 -0
- package/dist/src/lib/messages/eip191/eip191Message.js +25 -0
- package/dist/src/lib/messages/eip191/eip191MessageBuilder.d.ts +19 -0
- package/dist/src/lib/messages/eip191/eip191MessageBuilder.d.ts.map +1 -0
- package/dist/src/lib/messages/eip191/eip191MessageBuilder.js +27 -0
- package/dist/src/lib/messages/eip191/index.d.ts +3 -0
- package/dist/src/lib/messages/eip191/index.d.ts.map +1 -0
- package/dist/src/lib/messages/eip191/index.js +19 -0
- package/dist/src/lib/messages/eip712/eip712Message.d.ts +6 -0
- package/dist/src/lib/messages/eip712/eip712Message.d.ts.map +1 -0
- package/dist/src/lib/messages/eip712/eip712Message.js +27 -0
- package/dist/src/lib/messages/eip712/eip712MessageBuilder.d.ts +7 -0
- package/dist/src/lib/messages/eip712/eip712MessageBuilder.d.ts.map +1 -0
- package/dist/src/lib/messages/eip712/eip712MessageBuilder.js +15 -0
- package/dist/src/lib/messages/eip712/index.d.ts +3 -0
- package/dist/src/lib/messages/eip712/index.d.ts.map +1 -0
- package/dist/src/lib/messages/eip712/index.js +19 -0
- package/dist/src/lib/messages/index.d.ts +4 -0
- package/dist/src/lib/messages/index.d.ts.map +1 -0
- package/dist/src/lib/messages/index.js +20 -0
- package/dist/src/lib/messages/messageBuilderFactory.d.ts +7 -0
- package/dist/src/lib/messages/messageBuilderFactory.d.ts.map +1 -0
- package/dist/src/lib/messages/messageBuilderFactory.js +23 -0
- package/dist/src/lib/transaction.d.ts +67 -0
- package/dist/src/lib/transaction.d.ts.map +1 -0
- package/dist/src/lib/transaction.js +142 -0
- package/dist/src/lib/transactionBuilder.d.ts +270 -0
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder.js +822 -0
- package/dist/src/lib/transferBuilder.d.ts +76 -0
- package/dist/src/lib/transferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferBuilder.js +307 -0
- package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.d.ts +54 -0
- package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferBuilders/baseNFTTransferBuilder.js +120 -0
- package/dist/src/lib/transferBuilders/index.d.ts +4 -0
- package/dist/src/lib/transferBuilders/index.d.ts.map +1 -0
- package/dist/src/lib/transferBuilders/index.js +20 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC1155.d.ts +17 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC1155.d.ts.map +1 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC1155.js +96 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC721.d.ts +16 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC721.d.ts.map +1 -0
- package/dist/src/lib/transferBuilders/transferBuilderERC721.js +81 -0
- package/dist/src/lib/types.d.ts +39 -0
- package/dist/src/lib/types.d.ts.map +1 -0
- package/dist/src/lib/types.js +137 -0
- package/dist/src/lib/utils.d.ts +310 -0
- package/dist/src/lib/utils.d.ts.map +1 -0
- package/dist/src/lib/utils.js +829 -0
- package/dist/src/lib/walletUtil.d.ts +40 -0
- package/dist/src/lib/walletUtil.d.ts.map +1 -0
- package/dist/src/lib/walletUtil.js +43 -0
- package/dist/src/types.d.ts +9 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +3 -0
- package/dist/test/index.d.ts +2 -0
- package/dist/test/index.d.ts.map +1 -0
- package/dist/test/index.js +18 -0
- package/dist/test/unit/coin.d.ts +8 -0
- package/dist/test/unit/coin.d.ts.map +1 -0
- package/dist/test/unit/coin.js +577 -0
- package/dist/test/unit/index.d.ts +6 -0
- package/dist/test/unit/index.d.ts.map +1 -0
- package/dist/test/unit/index.js +22 -0
- package/dist/test/unit/messages/abstractEthMessageBuilderTests.d.ts +3 -0
- package/dist/test/unit/messages/abstractEthMessageBuilderTests.d.ts.map +1 -0
- package/dist/test/unit/messages/abstractEthMessageBuilderTests.js +110 -0
- package/dist/test/unit/messages/abstractEthMessageTestTypes.d.ts +43 -0
- package/dist/test/unit/messages/abstractEthMessageTestTypes.d.ts.map +1 -0
- package/dist/test/unit/messages/abstractEthMessageTestTypes.js +3 -0
- package/dist/test/unit/messages/abstractEthMessagesTests.d.ts +3 -0
- package/dist/test/unit/messages/abstractEthMessagesTests.d.ts.map +1 -0
- package/dist/test/unit/messages/abstractEthMessagesTests.js +129 -0
- package/dist/test/unit/messages/eip191/eip191Message.d.ts +2 -0
- package/dist/test/unit/messages/eip191/eip191Message.d.ts.map +1 -0
- package/dist/test/unit/messages/eip191/eip191Message.js +15 -0
- package/dist/test/unit/messages/eip191/eip191MessageBuilder.d.ts +2 -0
- package/dist/test/unit/messages/eip191/eip191MessageBuilder.d.ts.map +1 -0
- package/dist/test/unit/messages/eip191/eip191MessageBuilder.js +16 -0
- package/dist/test/unit/messages/eip191/fixtures.d.ts +109 -0
- package/dist/test/unit/messages/eip191/fixtures.d.ts.map +1 -0
- package/dist/test/unit/messages/eip191/fixtures.js +63 -0
- package/dist/test/unit/messages/eip712/eip712Message.d.ts +2 -0
- package/dist/test/unit/messages/eip712/eip712Message.d.ts.map +1 -0
- package/dist/test/unit/messages/eip712/eip712Message.js +15 -0
- package/dist/test/unit/messages/eip712/eip712MessageBuilder.d.ts +2 -0
- package/dist/test/unit/messages/eip712/eip712MessageBuilder.d.ts.map +1 -0
- package/dist/test/unit/messages/eip712/eip712MessageBuilder.js +16 -0
- package/dist/test/unit/messages/eip712/fixtures.d.ts +76 -0
- package/dist/test/unit/messages/eip712/fixtures.d.ts.map +1 -0
- package/dist/test/unit/messages/eip712/fixtures.js +120 -0
- package/dist/test/unit/messages/index.d.ts +4 -0
- package/dist/test/unit/messages/index.d.ts.map +1 -0
- package/dist/test/unit/messages/index.js +20 -0
- package/dist/test/unit/messages/messageBuilderFactory.d.ts +2 -0
- package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
- package/dist/test/unit/messages/messageBuilderFactory.js +52 -0
- package/dist/test/unit/token.d.ts +2 -0
- package/dist/test/unit/token.d.ts.map +1 -0
- package/dist/test/unit/token.js +37 -0
- package/dist/test/unit/transaction.d.ts +3 -0
- package/dist/test/unit/transaction.d.ts.map +1 -0
- package/dist/test/unit/transaction.js +60 -0
- package/dist/test/unit/transactionBuilder/addressInitialization.d.ts +8 -0
- package/dist/test/unit/transactionBuilder/addressInitialization.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/addressInitialization.js +95 -0
- package/dist/test/unit/transactionBuilder/flushNft.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/flushNft.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/flushNft.js +381 -0
- package/dist/test/unit/transactionBuilder/index.d.ts +5 -0
- package/dist/test/unit/transactionBuilder/index.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/index.js +21 -0
- package/dist/test/unit/transactionBuilder/send.d.ts +3 -0
- package/dist/test/unit/transactionBuilder/send.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/send.js +197 -0
- package/dist/test/unit/transactionBuilder/walletInitialization.d.ts +10 -0
- package/dist/test/unit/transactionBuilder/walletInitialization.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/walletInitialization.js +124 -0
- package/dist/test/unit/transferBuilder.d.ts +2 -0
- package/dist/test/unit/transferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transferBuilder.js +76 -0
- package/dist/test/unit/utils.d.ts +2 -0
- package/dist/test/unit/utils.d.ts.map +1 -0
- package/dist/test/unit/utils.js +184 -0
- package/dist/tsconfig.tsbuildinfo +1 -8244
- package/index.ts +2 -0
- package/package.json +30 -9
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./addressInitialization"), exports);
|
|
18
|
+
__exportStar(require("./send"), exports);
|
|
19
|
+
__exportStar(require("./walletInitialization"), exports);
|
|
20
|
+
__exportStar(require("./flushNft"), exports);
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb25CdWlsZGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwREFBd0M7QUFDeEMseUNBQXVCO0FBQ3ZCLHlEQUF1QztBQUN2Qyw2Q0FBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FkZHJlc3NJbml0aWFsaXphdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3NlbmQnO1xuZXhwb3J0ICogZnJvbSAnLi93YWxsZXRJbml0aWFsaXphdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2ZsdXNoTmZ0JztcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/send.ts"],"names":[],"mappings":"AAMA,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,KAAA,EAAE,UAAU,KAAA,EAAE,QAAQ,KAAA,QA+I7E;AAED,wBAAsB,wBAAwB,CAAC,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,KAAA,EAAE,QAAQ,EAAE,GAAG,iBA+BrG"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.runSendTests = runSendTests;
|
|
40
|
+
exports.testSendFundsTransaction = testSendFundsTransaction;
|
|
41
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
42
|
+
const ethereumjs_abi_1 = __importDefault(require("ethereumjs-abi"));
|
|
43
|
+
const should_1 = __importDefault(require("should"));
|
|
44
|
+
const ethUtil = __importStar(require("ethereumjs-util"));
|
|
45
|
+
const src_1 = require("../../../src");
|
|
46
|
+
function runSendTests(coinName, txBuilder, getBuilder, testData) {
|
|
47
|
+
describe(`${coinName} transaction builder send`, () => {
|
|
48
|
+
describe('should sign and build', () => {
|
|
49
|
+
let key;
|
|
50
|
+
let contractAddress;
|
|
51
|
+
const networkTokenIdentifier = testData.NETWORK_TOKEN_IDENTIFIER;
|
|
52
|
+
const coin = testData.COIN;
|
|
53
|
+
const getOperationHash = function (tx) {
|
|
54
|
+
const { data } = tx.toJson();
|
|
55
|
+
const { tokenContractAddress, expireTime, sequenceId, amount, to } = (0, src_1.decodeTransferData)(data);
|
|
56
|
+
const operationParams = [
|
|
57
|
+
['string', 'address', 'uint', 'address', 'uint', 'uint'],
|
|
58
|
+
[
|
|
59
|
+
`${testData.CHAIN_ID}-ERC20`,
|
|
60
|
+
new ethUtil.BN(ethUtil.stripHexPrefix(to), 16),
|
|
61
|
+
amount,
|
|
62
|
+
new ethUtil.BN(ethUtil.stripHexPrefix(tokenContractAddress || ''), 16),
|
|
63
|
+
expireTime,
|
|
64
|
+
sequenceId,
|
|
65
|
+
],
|
|
66
|
+
];
|
|
67
|
+
return ethereumjs_abi_1.default.soliditySHA3(...operationParams);
|
|
68
|
+
};
|
|
69
|
+
beforeEach(() => {
|
|
70
|
+
contractAddress = '0x8f977e912ef500548a0c3be6ddde9899f1199b81';
|
|
71
|
+
txBuilder = getBuilder(coin);
|
|
72
|
+
key = testData.KEYPAIR_PRV.getKeys().prv;
|
|
73
|
+
txBuilder.fee({
|
|
74
|
+
fee: '1000000000',
|
|
75
|
+
gasLimit: '12100000',
|
|
76
|
+
});
|
|
77
|
+
txBuilder.counter(2);
|
|
78
|
+
txBuilder.type(sdk_core_1.TransactionType.Send);
|
|
79
|
+
txBuilder.contract(contractAddress);
|
|
80
|
+
});
|
|
81
|
+
it('a send funds transaction', async () => {
|
|
82
|
+
const recipient = '0x19645032c7f1533395d44a629462e751084d3e4c';
|
|
83
|
+
const amount = '1000000000';
|
|
84
|
+
const expireTime = 1590066728;
|
|
85
|
+
const sequenceId = 5;
|
|
86
|
+
txBuilder
|
|
87
|
+
.transfer()
|
|
88
|
+
.amount(amount)
|
|
89
|
+
.to(recipient)
|
|
90
|
+
.expirationTime(expireTime)
|
|
91
|
+
.contractSequenceId(sequenceId)
|
|
92
|
+
.key(key);
|
|
93
|
+
txBuilder.sign({ key: testData.PRIVATE_KEY_1 });
|
|
94
|
+
const tx = await txBuilder.build();
|
|
95
|
+
should_1.default.equal(tx.toJson().chainId, testData.TXDATA.chainId);
|
|
96
|
+
should_1.default.equal(tx.toBroadcastFormat(), testData.SEND_TX_BROADCAST_LEGACY);
|
|
97
|
+
should_1.default.equal(tx.signature.length, 2);
|
|
98
|
+
should_1.default.equal(tx.inputs.length, 1);
|
|
99
|
+
should_1.default.equal(tx.inputs[0].address, contractAddress);
|
|
100
|
+
should_1.default.equal(tx.inputs[0].value, amount);
|
|
101
|
+
should_1.default.equal(tx.outputs.length, 1);
|
|
102
|
+
should_1.default.equal(tx.outputs[0].address, recipient);
|
|
103
|
+
should_1.default.equal(tx.outputs[0].value, amount);
|
|
104
|
+
const data = tx.toJson().data;
|
|
105
|
+
const { to, amount: parsedAmount, expireTime: parsedExpireTime, sequenceId: parsedSequenceId, } = (0, src_1.decodeTransferData)(data);
|
|
106
|
+
should_1.default.equal(to, recipient);
|
|
107
|
+
should_1.default.equal(parsedAmount, amount);
|
|
108
|
+
should_1.default.equal(parsedExpireTime, expireTime);
|
|
109
|
+
should_1.default.equal(parsedSequenceId, sequenceId);
|
|
110
|
+
});
|
|
111
|
+
it('a send funds with amount 0 transaction', async () => {
|
|
112
|
+
txBuilder
|
|
113
|
+
.transfer()
|
|
114
|
+
.amount('0')
|
|
115
|
+
.to('0x19645032c7f1533395d44a629462e751084d3e4c')
|
|
116
|
+
.expirationTime(1590066728)
|
|
117
|
+
.contractSequenceId(5)
|
|
118
|
+
.key(key);
|
|
119
|
+
txBuilder.sign({ key: testData.PRIVATE_KEY_1 });
|
|
120
|
+
const tx = await txBuilder.build();
|
|
121
|
+
should_1.default.equal(tx.toBroadcastFormat(), testData.SEND_TX_AMOUNT_ZERO_BROADCAST);
|
|
122
|
+
});
|
|
123
|
+
it('a send token transaction', async () => {
|
|
124
|
+
const recipient = '0x72c2c8e08bf91d755cd7d26b49a2ee3dc99de1b9';
|
|
125
|
+
const contractAddress = '0xdf7decb1baa8f529f0c8982cbb4be50357195299';
|
|
126
|
+
const amount = '100';
|
|
127
|
+
const key = testData.KEYPAIR_PRV.getKeys().prv;
|
|
128
|
+
txBuilder.contract(contractAddress);
|
|
129
|
+
txBuilder
|
|
130
|
+
.transfer()
|
|
131
|
+
.coin(networkTokenIdentifier)
|
|
132
|
+
.amount(amount)
|
|
133
|
+
.to(recipient)
|
|
134
|
+
.expirationTime(1590066728)
|
|
135
|
+
.contractSequenceId(5)
|
|
136
|
+
.key(key);
|
|
137
|
+
txBuilder.sign({
|
|
138
|
+
key: testData.PRIVATE_KEY_1,
|
|
139
|
+
});
|
|
140
|
+
const tx = await txBuilder.build();
|
|
141
|
+
const operationHash = getOperationHash(tx);
|
|
142
|
+
should_1.default.equal(tx.toBroadcastFormat(), testData.SEND_TOKEN_TX_BROADCAST);
|
|
143
|
+
should_1.default.equal(tx.signature.length, 2);
|
|
144
|
+
should_1.default.equal(tx.inputs.length, 1);
|
|
145
|
+
should_1.default.equal(tx.inputs[0].address, contractAddress);
|
|
146
|
+
should_1.default.equal(tx.inputs[0].value, amount);
|
|
147
|
+
should_1.default.equal(tx.inputs[0].coin, networkTokenIdentifier);
|
|
148
|
+
should_1.default.equal(tx.outputs.length, 1);
|
|
149
|
+
should_1.default.equal(tx.outputs[0].address, recipient);
|
|
150
|
+
should_1.default.equal(tx.outputs[0].value, amount);
|
|
151
|
+
should_1.default.equal(tx.outputs[0].coin, networkTokenIdentifier);
|
|
152
|
+
const { signature } = (0, src_1.decodeTransferData)(tx.toJson().data);
|
|
153
|
+
const { v, r, s } = ethUtil.fromRpcSig(signature);
|
|
154
|
+
const senderPubKey = ethUtil.ecrecover(Buffer.from(operationHash, 'hex'), v, r, s);
|
|
155
|
+
const senderAddress = ethUtil.pubToAddress(senderPubKey);
|
|
156
|
+
const senderKey = new src_1.KeyPair({ prv: testData.PRIVATE_KEY_1 });
|
|
157
|
+
ethUtil.bufferToHex(senderAddress).should.equal(senderKey.getAddress());
|
|
158
|
+
});
|
|
159
|
+
it('a send token transactions from serialized', async () => {
|
|
160
|
+
txBuilder.from(testData.SEND_TOKEN_TX_BROADCAST);
|
|
161
|
+
const tx = await txBuilder.build();
|
|
162
|
+
const operationHash = getOperationHash(tx);
|
|
163
|
+
should_1.default.equal(tx.toBroadcastFormat(), testData.SEND_TOKEN_TX_BROADCAST);
|
|
164
|
+
const { signature } = (0, src_1.decodeTransferData)(tx.toJson().data);
|
|
165
|
+
const { v, r, s } = ethUtil.fromRpcSig(signature);
|
|
166
|
+
const senderPubKey = ethUtil.ecrecover(Buffer.from(operationHash || ''), v, r, s);
|
|
167
|
+
const senderAddress = ethUtil.pubToAddress(senderPubKey);
|
|
168
|
+
const senderKey = new src_1.KeyPair({ prv: testData.PRIVATE_KEY_1 });
|
|
169
|
+
ethUtil.bufferToHex(senderAddress).should.equal(senderKey.getAddress());
|
|
170
|
+
});
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
async function testSendFundsTransaction(tx, operationHash, txParams, testData) {
|
|
175
|
+
const { recipient, amount, contractAddress, expireTime, sequenceId } = txParams;
|
|
176
|
+
should_1.default.equal(tx.toJson().chainId, testData.TXDATA.chainId);
|
|
177
|
+
should_1.default.equal(tx.toBroadcastFormat(), testData.SEND_TX_BROADCAST_LEGACY);
|
|
178
|
+
should_1.default.equal(tx.signature.length, 2);
|
|
179
|
+
should_1.default.equal(tx.inputs.length, 1);
|
|
180
|
+
should_1.default.equal(tx.inputs[0].address, contractAddress);
|
|
181
|
+
should_1.default.equal(tx.inputs[0].value, amount);
|
|
182
|
+
should_1.default.equal(tx.outputs.length, 1);
|
|
183
|
+
should_1.default.equal(tx.outputs[0].address, recipient);
|
|
184
|
+
should_1.default.equal(tx.outputs[0].value, amount);
|
|
185
|
+
const data = tx.toJson().data;
|
|
186
|
+
const { to, amount: parsedAmount, expireTime: parsedExpireTime, sequenceId: parsedSequenceId, signature, } = (0, src_1.decodeTransferData)(data);
|
|
187
|
+
should_1.default.equal(to, recipient);
|
|
188
|
+
should_1.default.equal(parsedAmount, amount);
|
|
189
|
+
should_1.default.equal(parsedExpireTime, expireTime);
|
|
190
|
+
should_1.default.equal(parsedSequenceId, sequenceId);
|
|
191
|
+
const { v, r, s } = ethUtil.fromRpcSig(signature);
|
|
192
|
+
const senderPubKey = ethUtil.ecrecover(Buffer.from(ethUtil.stripHexPrefix(operationHash), 'hex'), v, r, s);
|
|
193
|
+
const senderAddress = ethUtil.pubToAddress(senderPubKey);
|
|
194
|
+
const senderKey = new src_1.KeyPair({ prv: testData.PRIVATE_KEY_1 });
|
|
195
|
+
ethUtil.bufferToHex(senderAddress).should.equal(senderKey.getAddress());
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvc2VuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU1BLG9DQStJQztBQUVELDREQStCQztBQXRMRCxtREFBd0U7QUFDeEUsb0VBQXlDO0FBQ3pDLG9EQUE0QjtBQUM1Qix5REFBMkM7QUFDM0Msc0NBQStFO0FBRS9FLFNBQWdCLFlBQVksQ0FBQyxRQUFnQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUTtJQUM1RSxRQUFRLENBQUMsR0FBRyxRQUFRLDJCQUEyQixFQUFFLEdBQUcsRUFBRTtRQUNwRCxRQUFRLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxFQUFFO1lBQ3JDLElBQUksR0FBRyxDQUFDO1lBQ1IsSUFBSSxlQUFlLENBQUM7WUFDcEIsTUFBTSxzQkFBc0IsR0FBRyxRQUFRLENBQUMsd0JBQXdCLENBQUM7WUFDakUsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztZQUMzQixNQUFNLGdCQUFnQixHQUFHLFVBQVUsRUFBbUI7Z0JBQ3BELE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sRUFBRSxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFBLHdCQUFrQixFQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM5RixNQUFNLGVBQWUsR0FBRztvQkFDdEIsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQztvQkFDeEQ7d0JBQ0UsR0FBRyxRQUFRLENBQUMsUUFBUSxRQUFRO3dCQUM1QixJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFD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QVMsR0FBRyxJQUFJLGFBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUMvRCxPQUFPLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7QUFDMUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSwgQmFzZVRyYW5zYWN0aW9uIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IEV0aGVyZXVtQWJpIGZyb20gJ2V0aGVyZXVtanMtYWJpJztcbmltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCAqIGFzIGV0aFV0aWwgZnJvbSAnZXRoZXJldW1qcy11dGlsJztcbmltcG9ydCB7IGRlY29kZVRyYW5zZmVyRGF0YSwgS2V5UGFpciwgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi4vLi4vLi4vc3JjJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJ1blNlbmRUZXN0cyhjb2luTmFtZTogc3RyaW5nLCB0eEJ1aWxkZXIsIGdldEJ1aWxkZXIsIHRlc3REYXRhKSB7XG4gIGRlc2NyaWJlKGAke2NvaW5OYW1lfSB0cmFuc2FjdGlvbiBidWlsZGVyIHNlbmRgLCAoKSA9PiB7XG4gICAgZGVzY3JpYmUoJ3Nob3VsZCBzaWduIGFuZCBidWlsZCcsICgpID0+IHtcbiAgICAgIGxldCBrZXk7XG4gICAgICBsZXQgY29udHJhY3RBZGRyZXNzO1xuICAgICAgY29uc3QgbmV0d29ya1Rva2VuSWRlbnRpZmllciA9IHRlc3REYXRhLk5FVFdPUktfVE9LRU5fSURFTlRJRklFUjtcbiAgICAgIGNvbnN0IGNvaW4gPSB0ZXN0RGF0YS5DT0lOO1xuICAgICAgY29uc3QgZ2V0T3BlcmF0aW9uSGFzaCA9IGZ1bmN0aW9uICh0eDogQmFzZVRyYW5zYWN0aW9uKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSB0eC50b0pzb24oKTtcbiAgICAgICAgY29uc3QgeyB0b2tlbkNvbnRyYWN0QWRkcmVzcywgZXhwaXJlVGltZSwgc2VxdWVuY2VJZCwgYW1vdW50LCB0byB9ID0gZGVjb2RlVHJhbnNmZXJEYXRhKGRhdGEpO1xuICAgICAgICBjb25zdCBvcGVyYXRpb25QYXJhbXMgPSBbXG4gICAgICAgICAgWydzdHJpbmcnLCAnYWRkcmVzcycsICd1aW50JywgJ2FkZHJlc3MnLCAndWludCcsICd1aW50J10sXG4gICAgICAgICAgW1xuICAgICAgICAgICAgYCR7dGVzdERhdGEuQ0hBSU5fSUR9LUVSQzIwYCxcbiAgICAgICAgICAgIG5ldyBldGhVdGlsLkJOKGV0aFV0aWwuc3RyaXBIZXhQcmVmaXgodG8pLCAxNiksXG4gICAgICAgICAgICBhbW91bnQsXG4gICAgICAgICAgICBuZXcgZXRoVXRpbC5CTihldGhVdGlsLnN0cmlwSGV4UHJlZml4KHRva2VuQ29udHJhY3RBZGRyZXNzIHx8ICcnKSwgMTYpLFxuICAgICAgICAgICAgZXhwaXJlVGltZSxcbiAgICAgICAgICAgIHNlcXVlbmNlSWQsXG4gICAgICAgICAgXSxcbiAgICAgICAgXTtcbiAgICAgICAgcmV0dXJuIEV0aGVyZXVtQWJpLnNvbGlkaXR5U0hBMyguLi5vcGVyYXRpb25QYXJhbXMpO1xuICAgICAgfTtcblxuICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICAgIGNvbnRyYWN0QWRkcmVzcyA9ICcweDhmOTc3ZTkxMmVmNTAwNTQ4YTBjM2JlNmRkZGU5ODk5ZjExOTliODEnO1xuICAgICAgICB0eEJ1aWxkZXIgPSBnZXRCdWlsZGVyKGNvaW4pIGFzIFRyYW5zYWN0aW9uQnVpbGRlcjtcbiAgICAgICAga2V5ID0gdGVzdERhdGEuS0VZUEFJUl9QUlYuZ2V0S2V5cygpLnBydiBhcyBzdHJpbmc7XG4gICAgICAgIHR4QnVpbGRlci5mZWUoe1xuICAgICAgICAgIGZlZTogJzEwMDAwMDAwMDAnLFxuICAgICAgICAgIGdhc0xpbWl0OiAnMTIxMDAwMDAnLFxuICAgICAgICB9KTtcbiAgICAgICAgdHhCdWlsZGVyLmNvdW50ZXIoMik7XG4gICAgICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICAgICAgdHhCdWlsZGVyLmNvbnRyYWN0KGNvbnRyYWN0QWRkcmVzcyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2Egc2VuZCBmdW5kcyB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVjaXBpZW50ID0gJzB4MTk2NDUwMzJjN2YxNTMzMzk1ZDQ0YTYyOTQ2MmU3NTEwODRkM2U0Yyc7XG4gICAgICAgIGNvbnN0IGFtb3VudCA9ICcxMDAwMDAwMDAwJztcbiAgICAgICAgY29uc3QgZXhwaXJlVGltZSA9IDE1OTAwNjY3Mjg7XG4gICAgICAgIGNvbnN0IHNlcXVlbmNlSWQgPSA1O1xuICAgICAgICB0eEJ1aWxkZXJcbiAgICAgICAgICAudHJhbnNmZXIoKVxuICAgICAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgICAgIC50byhyZWNpcGllbnQpXG4gICAgICAgICAgLmV4cGlyYXRpb25UaW1lKGV4cGlyZVRpbWUpXG4gICAgICAgICAgLmNvbnRyYWN0U2VxdWVuY2VJZChzZXF1ZW5jZUlkKVxuICAgICAgICAgIC5rZXkoa2V5KTtcbiAgICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IHRlc3REYXRhLlBSSVZBVEVfS0VZXzEgfSk7XG4gICAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC50b0pzb24oKS5jaGFpbklkLCB0ZXN0RGF0YS5UWERBVEEuY2hhaW5JZCk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLCB0ZXN0RGF0YS5TRU5EX1RYX0JST0FEQ0FTVF9MRUdBQ1kpO1xuICAgICAgICBzaG91bGQuZXF1YWwodHguc2lnbmF0dXJlLmxlbmd0aCwgMik7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC5pbnB1dHMubGVuZ3RoLCAxKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LmlucHV0c1swXS5hZGRyZXNzLCBjb250cmFjdEFkZHJlc3MpO1xuICAgICAgICBzaG91bGQuZXF1YWwodHguaW5wdXRzWzBdLnZhbHVlLCBhbW91bnQpO1xuXG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzLmxlbmd0aCwgMSk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzWzBdLmFkZHJlc3MsIHJlY2lwaWVudCk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzWzBdLnZhbHVlLCBhbW91bnQpO1xuXG4gICAgICAgIGNvbnN0IGRhdGEgPSB0eC50b0pzb24oKS5kYXRhO1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgdG8sXG4gICAgICAgICAgYW1vdW50OiBwYXJzZWRBbW91bnQsXG4gICAgICAgICAgZXhwaXJlVGltZTogcGFyc2VkRXhwaXJlVGltZSxcbiAgICAgICAgICBzZXF1ZW5jZUlkOiBwYXJzZWRTZXF1ZW5jZUlkLFxuICAgICAgICB9ID0gZGVjb2RlVHJhbnNmZXJEYXRhKGRhdGEpO1xuICAgICAgICBzaG91bGQuZXF1YWwodG8sIHJlY2lwaWVudCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChwYXJzZWRBbW91bnQsIGFtb3VudCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChwYXJzZWRFeHBpcmVUaW1lLCBleHBpcmVUaW1lKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHBhcnNlZFNlcXVlbmNlSWQsIHNlcXVlbmNlSWQpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdhIHNlbmQgZnVuZHMgd2l0aCBhbW91bnQgMCB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgICAgdHhCdWlsZGVyXG4gICAgICAgICAgLnRyYW5zZmVyKClcbiAgICAgICAgICAuYW1vdW50KCcwJylcbiAgICAgICAgICAudG8oJzB4MTk2NDUwMzJjN2YxNTMzMzk1ZDQ0YTYyOTQ2MmU3NTEwODRkM2U0YycpXG4gICAgICAgICAgLmV4cGlyYXRpb25UaW1lKDE1OTAwNjY3MjgpXG4gICAgICAgICAgLmNvbnRyYWN0U2VxdWVuY2VJZCg1KVxuICAgICAgICAgIC5rZXkoa2V5KTtcbiAgICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IHRlc3REYXRhLlBSSVZBVEVfS0VZXzEgfSk7XG4gICAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLCB0ZXN0RGF0YS5TRU5EX1RYX0FNT1VOVF9aRVJPX0JST0FEQ0FTVCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2Egc2VuZCB0b2tlbiB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVjaXBpZW50ID0gJzB4NzJjMmM4ZTA4YmY5MWQ3NTVjZDdkMjZiNDlhMmVlM2RjOTlkZTFiOSc7XG4gICAgICAgIGNvbnN0IGNvbnRyYWN0QWRkcmVzcyA9ICcweGRmN2RlY2IxYmFhOGY1MjlmMGM4OTgyY2JiNGJlNTAzNTcxOTUyOTknO1xuICAgICAgICBjb25zdCBhbW91bnQgPSAnMTAwJztcbiAgICAgICAgY29uc3Qga2V5ID0gdGVzdERhdGEuS0VZUEFJUl9QUlYuZ2V0S2V5cygpLnBydiBhcyBzdHJpbmc7XG4gICAgICAgIHR4QnVpbGRlci5jb250cmFjdChjb250cmFjdEFkZHJlc3MpO1xuICAgICAgICB0eEJ1aWxkZXJcbiAgICAgICAgICAudHJhbnNmZXIoKVxuICAgICAgICAgIC5jb2luKG5ldHdvcmtUb2tlbklkZW50aWZpZXIpXG4gICAgICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAgICAgLnRvKHJlY2lwaWVudClcbiAgICAgICAgICAuZXhwaXJhdGlvblRpbWUoMTU5MDA2NjcyOClcbiAgICAgICAgICAuY29udHJhY3RTZXF1ZW5jZUlkKDUpXG4gICAgICAgICAgLmtleShrZXkpO1xuICAgICAgICB0eEJ1aWxkZXIuc2lnbih7XG4gICAgICAgICAga2V5OiB0ZXN0RGF0YS5QUklWQVRFX0tFWV8xLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgICAgY29uc3Qgb3BlcmF0aW9uSGFzaCA9IGdldE9wZXJhdGlvbkhhc2godHgpO1xuICAgICAgICBzaG91bGQuZXF1YWwodHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgdGVzdERhdGEuU0VORF9UT0tFTl9UWF9CUk9BRENBU1QpO1xuICAgICAgICBzaG91bGQuZXF1YWwodHguc2lnbmF0dXJlLmxlbmd0aCwgMik7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC5pbnB1dHMubGVuZ3RoLCAxKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LmlucHV0c1swXS5hZGRyZXNzLCBjb250cmFjdEFkZHJlc3MpO1xuICAgICAgICBzaG91bGQuZXF1YWwodHguaW5wdXRzWzBdLnZhbHVlLCBhbW91bnQpO1xuICAgICAgICBzaG91bGQuZXF1YWwodHguaW5wdXRzWzBdLmNvaW4sIG5ldHdvcmtUb2tlbklkZW50aWZpZXIpO1xuXG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzLmxlbmd0aCwgMSk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzWzBdLmFkZHJlc3MsIHJlY2lwaWVudCk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzWzBdLnZhbHVlLCBhbW91bnQpO1xuICAgICAgICBzaG91bGQuZXF1YWwodHgub3V0cHV0c1swXS5jb2luLCBuZXR3b3JrVG9rZW5JZGVudGlmaWVyKTtcblxuICAgICAgICBjb25zdCB7IHNpZ25hdHVyZSB9ID0gZGVjb2RlVHJhbnNmZXJEYXRhKHR4LnRvSnNvbigpLmRhdGEpO1xuXG4gICAgICAgIGNvbnN0IHsgdiwgciwgcyB9ID0gZXRoVXRpbC5mcm9tUnBjU2lnKHNpZ25hdHVyZSk7XG4gICAgICAgIGNvbnN0IHNlbmRlclB1YktleSA9IGV0aFV0aWwuZWNyZWNvdmVyKEJ1ZmZlci5mcm9tKG9wZXJhdGlvbkhhc2gsICdoZXgnKSwgdiwgciwgcyk7XG4gICAgICAgIGNvbnN0IHNlbmRlckFkZHJlc3MgPSBldGhVdGlsLnB1YlRvQWRkcmVzcyhzZW5kZXJQdWJLZXkpO1xuICAgICAgICBjb25zdCBzZW5kZXJLZXkgPSBuZXcgS2V5UGFpcih7IHBydjogdGVzdERhdGEuUFJJVkFURV9LRVlfMSB9KTtcbiAgICAgICAgZXRoVXRpbC5idWZmZXJUb0hleChzZW5kZXJBZGRyZXNzKS5zaG91bGQuZXF1YWwoc2VuZGVyS2V5LmdldEFkZHJlc3MoKSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2Egc2VuZCB0b2tlbiB0cmFuc2FjdGlvbnMgZnJvbSBzZXJpYWxpemVkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICB0eEJ1aWxkZXIuZnJvbSh0ZXN0RGF0YS5TRU5EX1RPS0VOX1RYX0JST0FEQ0FTVCk7XG4gICAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgIGNvbnN0IG9wZXJhdGlvbkhhc2ggPSBnZXRPcGVyYXRpb25IYXNoKHR4KTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCksIHRlc3REYXRhLlNFTkRfVE9LRU5fVFhfQlJPQURDQVNUKTtcblxuICAgICAgICBjb25zdCB7IHNpZ25hdHVyZSB9ID0gZGVjb2RlVHJhbnNmZXJEYXRhKHR4LnRvSnNvbigpLmRhdGEpO1xuICAgICAgICBjb25zdCB7IHYsIHIsIHMgfSA9IGV0aFV0aWwuZnJvbVJwY1NpZyhzaWduYXR1cmUpO1xuICAgICAgICBjb25zdCBzZW5kZXJQdWJLZXkgPSBldGhVdGlsLmVjcmVjb3ZlcihCdWZmZXIuZnJvbShvcGVyYXRpb25IYXNoIHx8ICcnKSwgdiwgciwgcyk7XG4gICAgICAgIGNvbnN0IHNlbmRlckFkZHJlc3MgPSBldGhVdGlsLnB1YlRvQWRkcmVzcyhzZW5kZXJQdWJLZXkpO1xuICAgICAgICBjb25zdCBzZW5kZXJLZXkgPSBuZXcgS2V5UGFpcih7IHBydjogdGVzdERhdGEuUFJJVkFURV9LRVlfMSB9KTtcbiAgICAgICAgZXRoVXRpbC5idWZmZXJUb0hleChzZW5kZXJBZGRyZXNzKS5zaG91bGQuZXF1YWwoc2VuZGVyS2V5LmdldEFkZHJlc3MoKSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXN0U2VuZEZ1bmRzVHJhbnNhY3Rpb24odHg6IGFueSwgb3BlcmF0aW9uSGFzaDogc3RyaW5nLCB0eFBhcmFtcywgdGVzdERhdGE6IGFueSkge1xuICBjb25zdCB7IHJlY2lwaWVudCwgYW1vdW50LCBjb250cmFjdEFkZHJlc3MsIGV4cGlyZVRpbWUsIHNlcXVlbmNlSWQgfSA9IHR4UGFyYW1zO1xuICBzaG91bGQuZXF1YWwodHgudG9Kc29uKCkuY2hhaW5JZCwgdGVzdERhdGEuVFhEQVRBLmNoYWluSWQpO1xuICBzaG91bGQuZXF1YWwodHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgdGVzdERhdGEuU0VORF9UWF9CUk9BRENBU1RfTEVHQUNZKTtcbiAgc2hvdWxkLmVxdWFsKHR4LnNpZ25hdHVyZS5sZW5ndGgsIDIpO1xuICBzaG91bGQuZXF1YWwodHguaW5wdXRzLmxlbmd0aCwgMSk7XG4gIHNob3VsZC5lcXVhbCh0eC5pbnB1dHNbMF0uYWRkcmVzcywgY29udHJhY3RBZGRyZXNzKTtcbiAgc2hvdWxkLmVxdWFsKHR4LmlucHV0c1swXS52YWx1ZSwgYW1vdW50KTtcblxuICBzaG91bGQuZXF1YWwodHgub3V0cHV0cy5sZW5ndGgsIDEpO1xuICBzaG91bGQuZXF1YWwodHgub3V0cHV0c1swXS5hZGRyZXNzLCByZWNpcGllbnQpO1xuICBzaG91bGQuZXF1YWwodHgub3V0cHV0c1swXS52YWx1ZSwgYW1vdW50KTtcblxuICBjb25zdCBkYXRhID0gdHgudG9Kc29uKCkuZGF0YTtcbiAgY29uc3Qge1xuICAgIHRvLFxuICAgIGFtb3VudDogcGFyc2VkQW1vdW50LFxuICAgIGV4cGlyZVRpbWU6IHBhcnNlZEV4cGlyZVRpbWUsXG4gICAgc2VxdWVuY2VJZDogcGFyc2VkU2VxdWVuY2VJZCxcbiAgICBzaWduYXR1cmUsXG4gIH0gPSBkZWNvZGVUcmFuc2ZlckRhdGEoZGF0YSk7XG5cbiAgc2hvdWxkLmVxdWFsKHRvLCByZWNpcGllbnQpO1xuICBzaG91bGQuZXF1YWwocGFyc2VkQW1vdW50LCBhbW91bnQpO1xuICBzaG91bGQuZXF1YWwocGFyc2VkRXhwaXJlVGltZSwgZXhwaXJlVGltZSk7XG4gIHNob3VsZC5lcXVhbChwYXJzZWRTZXF1ZW5jZUlkLCBzZXF1ZW5jZUlkKTtcbiAgY29uc3QgeyB2LCByLCBzIH0gPSBldGhVdGlsLmZyb21ScGNTaWcoc2lnbmF0dXJlKTtcbiAgY29uc3Qgc2VuZGVyUHViS2V5ID0gZXRoVXRpbC5lY3JlY292ZXIoQnVmZmVyLmZyb20oZXRoVXRpbC5zdHJpcEhleFByZWZpeChvcGVyYXRpb25IYXNoKSwgJ2hleCcpLCB2LCByLCBzKTtcbiAgY29uc3Qgc2VuZGVyQWRkcmVzcyA9IGV0aFV0aWwucHViVG9BZGRyZXNzKHNlbmRlclB1YktleSk7XG4gIGNvbnN0IHNlbmRlcktleSA9IG5ldyBLZXlQYWlyKHsgcHJ2OiB0ZXN0RGF0YS5QUklWQVRFX0tFWV8xIH0pO1xuICBldGhVdGlsLmJ1ZmZlclRvSGV4KHNlbmRlckFkZHJlc3MpLnNob3VsZC5lcXVhbChzZW5kZXJLZXkuZ2V0QWRkcmVzcygpKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { TransactionBuilder } from '../../../src';
|
|
2
|
+
export declare function testInitTransaction(txBuilder: TransactionBuilder, testData: any): Promise<void>;
|
|
3
|
+
export declare function testWalletInitTransaction(txBuilder: TransactionBuilder, testData: any): Promise<void>;
|
|
4
|
+
export declare function testSignedInitTransaction(newTxBuilder: TransactionBuilder, testData: any): Promise<void>;
|
|
5
|
+
export declare function testUnsignedInitTransaction(txBuilder: TransactionBuilder, newTxBuilder: TransactionBuilder, testData: any): Promise<void>;
|
|
6
|
+
export declare function testUnsignedInitTransactionFromSerialized(txBuilder: TransactionBuilder, newTxBuilder: TransactionBuilder, testData: any): Promise<void>;
|
|
7
|
+
export declare function testFinalVCheck(txBuilder: TransactionBuilder, testData: any): Promise<void>;
|
|
8
|
+
export declare function testRecoveryWalletDeployment(txBuilder: TransactionBuilder, testData: any): Promise<void>;
|
|
9
|
+
export declare function testRecoveryTransactionWithoutData(txBuilder: TransactionBuilder): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=walletInitialization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"walletInitialization.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/walletInitialization.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAQlD,wBAAsB,mBAAmB,CAAC,SAAS,EAAE,kBAAkB,EAAE,QAAQ,EAAE,GAAG,iBAerF;AAED,wBAAsB,yBAAyB,CAAC,SAAS,EAAE,kBAAkB,EAAE,QAAQ,EAAE,GAAG,iBAc3F;AAED,wBAAsB,yBAAyB,CAAC,YAAY,EAAE,kBAAkB,EAAE,QAAQ,EAAE,GAAG,iBAY9F;AAED,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,kBAAkB,EAC7B,YAAY,EAAE,kBAAkB,EAChC,QAAQ,EAAE,GAAG,iBAUd;AAED,wBAAsB,yCAAyC,CAC7D,SAAS,EAAE,kBAAkB,EAC7B,YAAY,EAAE,kBAAkB,EAChC,QAAQ,EAAE,GAAG,iBAUd;AAED,wBAAsB,eAAe,CAAC,SAAS,EAAE,kBAAkB,EAAE,QAAQ,EAAE,GAAG,iBAMjF;AAED,wBAAsB,4BAA4B,CAAC,SAAS,EAAE,kBAAkB,EAAE,QAAQ,EAAE,GAAG,iBAmB9F;AAED,wBAAsB,kCAAkC,CAAC,SAAS,EAAE,kBAAkB,iBAcrF"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.testInitTransaction = testInitTransaction;
|
|
7
|
+
exports.testWalletInitTransaction = testWalletInitTransaction;
|
|
8
|
+
exports.testSignedInitTransaction = testSignedInitTransaction;
|
|
9
|
+
exports.testUnsignedInitTransaction = testUnsignedInitTransaction;
|
|
10
|
+
exports.testUnsignedInitTransactionFromSerialized = testUnsignedInitTransactionFromSerialized;
|
|
11
|
+
exports.testFinalVCheck = testFinalVCheck;
|
|
12
|
+
exports.testRecoveryWalletDeployment = testRecoveryWalletDeployment;
|
|
13
|
+
exports.testRecoveryTransactionWithoutData = testRecoveryTransactionWithoutData;
|
|
14
|
+
const should_1 = __importDefault(require("should"));
|
|
15
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
16
|
+
function addOwner(txBuilder, testData) {
|
|
17
|
+
txBuilder.owner(testData.ACCOUNT_1);
|
|
18
|
+
txBuilder.owner(testData.ACCOUNT_2);
|
|
19
|
+
txBuilder.owner(testData.ACCOUNT_3);
|
|
20
|
+
}
|
|
21
|
+
async function testInitTransaction(txBuilder, testData) {
|
|
22
|
+
it('an init transaction', async () => {
|
|
23
|
+
addOwner(txBuilder, testData);
|
|
24
|
+
txBuilder.sign({ key: testData.PRIVATE_KEY_1 });
|
|
25
|
+
const tx = await txBuilder.build();
|
|
26
|
+
tx.type.should.equal(sdk_core_1.TransactionType.WalletInitialization);
|
|
27
|
+
const txJson = tx.toJson();
|
|
28
|
+
txJson.gasLimit.should.equal('6800000');
|
|
29
|
+
txJson.gasPrice.should.equal('10000000000');
|
|
30
|
+
should_1.default.equal(txJson.nonce, 1);
|
|
31
|
+
should_1.default.equal(txJson.chainId, testData.TXDATA.chainId);
|
|
32
|
+
should_1.default.equal(tx.toBroadcastFormat(), testData.TX_BROADCAST);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
async function testWalletInitTransaction(txBuilder, testData) {
|
|
36
|
+
it('a wallet initialization transaction with nonce 0', async () => {
|
|
37
|
+
addOwner(txBuilder, testData);
|
|
38
|
+
txBuilder.counter(0);
|
|
39
|
+
txBuilder.sign({ key: testData.PRIVATE_KEY_1 });
|
|
40
|
+
const tx = await txBuilder.build();
|
|
41
|
+
tx.type.should.equal(sdk_core_1.TransactionType.WalletInitialization);
|
|
42
|
+
const txJson = tx.toJson();
|
|
43
|
+
txJson.gasLimit.should.equal('6800000');
|
|
44
|
+
txJson.gasPrice.should.equal('10000000000');
|
|
45
|
+
should_1.default.equal(txJson.nonce, 0);
|
|
46
|
+
should_1.default.equal(txJson.chainId, testData.TXDATA.chainId);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
async function testSignedInitTransaction(newTxBuilder, testData) {
|
|
50
|
+
it('a signed init transaction from serialized', async () => {
|
|
51
|
+
newTxBuilder.from(testData.TX_BROADCAST);
|
|
52
|
+
const newTx = await newTxBuilder.build();
|
|
53
|
+
should_1.default.equal(newTx.toBroadcastFormat(), testData.TX_BROADCAST);
|
|
54
|
+
should_1.default.equal(newTx.id, testData.EXPECTED_NEW_TX_ID);
|
|
55
|
+
const txJson = newTx.toJson();
|
|
56
|
+
should_1.default.exist(txJson.v);
|
|
57
|
+
should_1.default.exist(txJson.r);
|
|
58
|
+
should_1.default.exist(txJson.s);
|
|
59
|
+
should_1.default.exist(txJson.from);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
async function testUnsignedInitTransaction(txBuilder, newTxBuilder, testData) {
|
|
63
|
+
it('an unsigned init transaction from serialized with 0-prefixed address', async () => {
|
|
64
|
+
addOwner(txBuilder, testData);
|
|
65
|
+
const tx = await txBuilder.build();
|
|
66
|
+
const serialized = tx.toBroadcastFormat();
|
|
67
|
+
newTxBuilder.from(serialized);
|
|
68
|
+
const newTx = await newTxBuilder.build();
|
|
69
|
+
should_1.default.equal(newTx.toBroadcastFormat(), serialized);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
async function testUnsignedInitTransactionFromSerialized(txBuilder, newTxBuilder, testData) {
|
|
73
|
+
it('an unsigned init transaction from serialized', async () => {
|
|
74
|
+
addOwner(txBuilder, testData);
|
|
75
|
+
const tx = await txBuilder.build();
|
|
76
|
+
const serialized = tx.toBroadcastFormat();
|
|
77
|
+
newTxBuilder.from(serialized);
|
|
78
|
+
const newTx = await newTxBuilder.build();
|
|
79
|
+
should_1.default.equal(newTx.toBroadcastFormat(), serialized);
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
async function testFinalVCheck(txBuilder, testData) {
|
|
83
|
+
it('an unsigned transaction with final v check', async () => {
|
|
84
|
+
addOwner(txBuilder, testData);
|
|
85
|
+
const tx = await txBuilder.build();
|
|
86
|
+
should_1.default.equal(tx.toJson().v, testData.FINAL_V);
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
async function testRecoveryWalletDeployment(txBuilder, testData) {
|
|
90
|
+
it('wallet deployment transaction for recovery', async () => {
|
|
91
|
+
txBuilder.type(sdk_core_1.TransactionType.RecoveryWalletDeployment);
|
|
92
|
+
txBuilder.data(testData.RECOVERY_WALLET_BYTE_CODE);
|
|
93
|
+
txBuilder.fee({
|
|
94
|
+
eip1559: {
|
|
95
|
+
maxFeePerGas: '100',
|
|
96
|
+
maxPriorityFeePerGas: '10',
|
|
97
|
+
},
|
|
98
|
+
fee: '100',
|
|
99
|
+
gasLimit: '10000',
|
|
100
|
+
});
|
|
101
|
+
txBuilder.counter(1);
|
|
102
|
+
const tx = await txBuilder.build();
|
|
103
|
+
const txJson = tx.toJson();
|
|
104
|
+
should_1.default.equal(txJson._type, 'EIP1559');
|
|
105
|
+
should_1.default.equal(txJson.gasLimit, '10000');
|
|
106
|
+
should_1.default.exists(tx.toBroadcastFormat());
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
async function testRecoveryTransactionWithoutData(txBuilder) {
|
|
110
|
+
it('fail when data is not passed recovery', async () => {
|
|
111
|
+
txBuilder.type(sdk_core_1.TransactionType.RecoveryWalletDeployment);
|
|
112
|
+
txBuilder.fee({
|
|
113
|
+
eip1559: {
|
|
114
|
+
maxFeePerGas: '100',
|
|
115
|
+
maxPriorityFeePerGas: '10',
|
|
116
|
+
},
|
|
117
|
+
fee: '100',
|
|
118
|
+
gasLimit: '10000',
|
|
119
|
+
});
|
|
120
|
+
txBuilder.counter(1);
|
|
121
|
+
await txBuilder.build().should.be.rejectedWith('Invalid transaction: missing contract call data field');
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0SW5pdGlhbGl6YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb25CdWlsZGVyL3dhbGxldEluaXRpYWxpemF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBVUEsa0RBZUM7QUFFRCw4REFjQztBQUVELDhEQVlDO0FBRUQsa0VBYUM7QUFFRCw4RkFhQztBQUVELDBDQU1DO0FBRUQsb0VBbUJDO0FBRUQsZ0ZBY0M7QUFsSUQsb0RBQTRCO0FBQzVCLG1EQUF1RDtBQUd2RCxTQUFTLFFBQVEsQ0FBQyxTQUE2QixFQUFFLFFBQVE7SUFDdkQsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDdEMsQ0FBQztBQUVNLEtBQUssVUFBVSxtQkFBbUIsQ0FBQyxTQUE2QixFQUFFLFFBQWE7SUFDcEYsRUFBRSxDQUFDLHFCQUFxQixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ25DLFFBQVEsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDOUIsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUVoRCxNQUFNLEVBQUUsR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUVuQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsMEJBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzNELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMzQixNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMs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QUMsSUFBSSxDQUFDLDBCQUFlLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUN6RCxTQUFTLENBQUMsR0FBRyxDQUFDO1lBQ1osT0FBTyxFQUFFO2dCQUNQLFlBQVksRUFBRSxLQUFLO2dCQUNuQixvQkFBb0IsRUFBRSxJQUFJO2FBQzNCO1lBQ0QsR0FBRyxFQUFFLEtBQUs7WUFDVixRQUFRLEVBQUUsT0FBTztTQUNsQixDQUFDLENBQUM7UUFDSCxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLHVEQUF1RCxDQUFDLENBQUM7SUFDMUcsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi4vLi4vLi4vc3JjJztcblxuZnVuY3Rpb24gYWRkT3duZXIodHhCdWlsZGVyOiBUcmFuc2FjdGlvbkJ1aWxkZXIsIHRlc3REYXRhKSB7XG4gIHR4QnVpbGRlci5vd25lcih0ZXN0RGF0YS5BQ0NPVU5UXzEpO1xuICB0eEJ1aWxkZXIub3duZXIodGVzdERhdGEuQUNDT1VOVF8yKTtcbiAgdHhCdWlsZGVyLm93bmVyKHRlc3REYXRhLkFDQ09VTlRfMyk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXN0SW5pdFRyYW5zYWN0aW9uKHR4QnVpbGRlcjogVHJhbnNhY3Rpb25CdWlsZGVyLCB0ZXN0RGF0YTogYW55KSB7XG4gIGl0KCdhbiBpbml0IHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgIGFkZE93bmVyKHR4QnVpbGRlciwgdGVzdERhdGEpO1xuICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiB0ZXN0RGF0YS5QUklWQVRFX0tFWV8xIH0pO1xuXG4gICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgIHR4LnR5cGUuc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbik7XG4gICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgdHhKc29uLmdhc0xpbWl0LnNob3VsZC5lcXVhbCgnNjgwMDAwMCcpO1xuICAgIHR4SnNvbi5nYXNQcmljZS5zaG91bGQuZXF1YWwoJzEwMDAwMDAwMDAwJyk7XG4gICAgc2hvdWxkLmVxdWFsKHR4SnNvbi5ub25jZSwgMSk7XG4gICAgc2hvdWxkLmVxdWFsKHR4SnNvbi5jaGFpbklkLCB0ZXN0RGF0YS5UWERBVEEuY2hhaW5JZCk7XG4gICAgc2hvdWxkLmVxdWFsKHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCksIHRlc3REYXRhLlRYX0JST0FEQ0FTVCk7XG4gIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGVzdFdhbGxldEluaXRUcmFuc2FjdGlvbih0eEJ1aWxkZXI6IFRyYW5zYWN0aW9uQnVpbGRlciwgdGVzdERhdGE6IGFueSkge1xuICBpdCgnYSB3YWxsZXQgaW5pdGlhbGl6YXRpb24gdHJhbnNhY3Rpb24gd2l0aCBub25jZSAwJywgYXN5bmMgKCkgPT4ge1xuICAgIGFkZE93bmVyKHR4QnVpbGRlciwgdGVzdERhdGEpO1xuICAgIHR4QnVpbGRlci5jb3VudGVyKDApO1xuICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiB0ZXN0RGF0YS5QUklWQVRFX0tFWV8xIH0pO1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICB0eC50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pO1xuICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgIHR4SnNvbi5nYXNMaW1pdC5zaG91bGQuZXF1YWwoJzY4MDAwMDAnKTtcbiAgICB0eEpzb24uZ2FzUHJpY2Uuc2hvdWxkLmVxdWFsKCcxMDAwMDAwMDAwMCcpO1xuICAgIHNob3VsZC5lcXVhbCh0eEpzb24ubm9uY2UsIDApO1xuICAgIHNob3VsZC5lcXVhbCh0eEpzb24uY2hhaW5JZCwgdGVzdERhdGEuVFhEQVRBLmNoYWluSWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRlc3RTaWduZWRJbml0VHJhbnNhY3Rpb24obmV3VHhCdWlsZGVyOiBUcmFuc2FjdGlvbkJ1aWxkZXIsIHRlc3REYXRhOiBhbnkpIHtcbiAgaXQoJ2Egc2lnbmVkIGluaXQgdHJhbnNhY3Rpb24gZnJvbSBzZXJpYWxpemVkJywgYXN5bmMgKCkgPT4ge1xuICAgIG5ld1R4QnVpbGRlci5mcm9tKHRlc3REYXRhLlRYX0JST0FEQ0FTVCk7XG4gICAgY29uc3QgbmV3VHggPSBhd2FpdCBuZXdUeEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBzaG91bGQuZXF1YWwobmV3VHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgdGVzdERhdGEuVFhfQlJPQURDQVNUKTtcbiAgICBzaG91bGQuZXF1YWwobmV3VHguaWQsIHRlc3REYXRhLkVYUEVDVEVEX05FV19UWF9JRCk7XG4gICAgY29uc3QgdHhKc29uID0gbmV3VHgudG9Kc29uKCk7XG4gICAgc2hvdWxkLmV4aXN0KHR4SnNvbi52KTtcbiAgICBzaG91bGQuZXhpc3QodHhKc29uLnIpO1xuICAgIHNob3VsZC5leGlzdCh0eEpzb24ucyk7XG4gICAgc2hvdWxkLmV4aXN0KHR4SnNvbi5mcm9tKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXN0VW5zaWduZWRJbml0VHJhbnNhY3Rpb24oXG4gIHR4QnVpbGRlcjogVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBuZXdUeEJ1aWxkZXI6IFRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdGVzdERhdGE6IGFueVxuKSB7XG4gIGl0KCdhbiB1bnNpZ25lZCBpbml0IHRyYW5zYWN0aW9uIGZyb20gc2VyaWFsaXplZCB3aXRoIDAtcHJlZml4ZWQgYWRkcmVzcycsIGFzeW5jICgpID0+IHtcbiAgICBhZGRPd25lcih0eEJ1aWxkZXIsIHRlc3REYXRhKTtcbiAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgIG5ld1R4QnVpbGRlci5mcm9tKHNlcmlhbGl6ZWQpO1xuICAgIGNvbnN0IG5ld1R4ID0gYXdhaXQgbmV3VHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgc2hvdWxkLmVxdWFsKG5ld1R4LnRvQnJvYWRjYXN0Rm9ybWF0KCksIHNlcmlhbGl6ZWQpO1xuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRlc3RVbnNpZ25lZEluaXRUcmFuc2FjdGlvbkZyb21TZXJpYWxpemVkKFxuICB0eEJ1aWxkZXI6IFRyYW5zYWN0aW9uQnVpbGRlcixcbiAgbmV3VHhCdWlsZGVyOiBUcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRlc3REYXRhOiBhbnlcbikge1xuICBpdCgnYW4gdW5zaWduZWQgaW5pdCB0cmFuc2FjdGlvbiBmcm9tIHNlcmlhbGl6ZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgYWRkT3duZXIodHhCdWlsZGVyLCB0ZXN0RGF0YSk7XG4gICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBjb25zdCBzZXJpYWxpemVkID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICBuZXdUeEJ1aWxkZXIuZnJvbShzZXJpYWxpemVkKTtcbiAgICBjb25zdCBuZXdUeCA9IGF3YWl0IG5ld1R4QnVpbGRlci5idWlsZCgpO1xuICAgIHNob3VsZC5lcXVhbChuZXdUeC50b0Jyb2FkY2FzdEZvcm1hdCgpLCBzZXJpYWxpemVkKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXN0RmluYWxWQ2hlY2sodHhCdWlsZGVyOiBUcmFuc2FjdGlvbkJ1aWxkZXIsIHRlc3REYXRhOiBhbnkpIHtcbiAgaXQoJ2FuIHVuc2lnbmVkIHRyYW5zYWN0aW9uIHdpdGggZmluYWwgdiBjaGVjaycsIGFzeW5jICgpID0+IHtcbiAgICBhZGRPd25lcih0eEJ1aWxkZXIsIHRlc3REYXRhKTtcbiAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIHNob3VsZC5lcXVhbCh0eC50b0pzb24oKS52LCB0ZXN0RGF0YS5GSU5BTF9WKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXN0UmVjb3ZlcnlXYWxsZXREZXBsb3ltZW50KHR4QnVpbGRlcjogVHJhbnNhY3Rpb25CdWlsZGVyLCB0ZXN0RGF0YTogYW55KSB7XG4gIGl0KCd3YWxsZXQgZGVwbG95bWVudCB0cmFuc2FjdGlvbiBmb3IgcmVjb3ZlcnknLCBhc3luYyAoKSA9PiB7XG4gICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLlJlY292ZXJ5V2FsbGV0RGVwbG95bWVudCk7XG4gICAgdHhCdWlsZGVyLmRhdGEodGVzdERhdGEuUkVDT1ZFUllfV0FMTEVUX0JZVEVfQ09ERSk7XG4gICAgdHhCdWlsZGVyLmZlZSh7XG4gICAgICBlaXAxNTU5OiB7XG4gICAgICAgIG1heEZlZVBlckdhczogJzEwMCcsXG4gICAgICAgIG1heFByaW9yaXR5RmVlUGVyR2FzOiAnMTAnLFxuICAgICAgfSxcbiAgICAgIGZlZTogJzEwMCcsXG4gICAgICBnYXNMaW1pdDogJzEwMDAwJyxcbiAgICB9KTtcbiAgICB0eEJ1aWxkZXIuY291bnRlcigxKTtcbiAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgIHNob3VsZC5lcXVhbCh0eEpzb24uX3R5cGUsICdFSVAxNTU5Jyk7XG4gICAgc2hvdWxkLmVxdWFsKHR4SnNvbi5nYXNMaW1pdCwgJzEwMDAwJyk7XG4gICAgc2hvdWxkLmV4aXN0cyh0eC50b0Jyb2FkY2FzdEZvcm1hdCgpKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXN0UmVjb3ZlcnlUcmFuc2FjdGlvbldpdGhvdXREYXRhKHR4QnVpbGRlcjogVHJhbnNhY3Rpb25CdWlsZGVyKSB7XG4gIGl0KCdmYWlsIHdoZW4gZGF0YSBpcyBub3QgcGFzc2VkIHJlY292ZXJ5JywgYXN5bmMgKCkgPT4ge1xuICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5SZWNvdmVyeVdhbGxldERlcGxveW1lbnQpO1xuICAgIHR4QnVpbGRlci5mZWUoe1xuICAgICAgZWlwMTU1OToge1xuICAgICAgICBtYXhGZWVQZXJHYXM6ICcxMDAnLFxuICAgICAgICBtYXhQcmlvcml0eUZlZVBlckdhczogJzEwJyxcbiAgICAgIH0sXG4gICAgICBmZWU6ICcxMDAnLFxuICAgICAgZ2FzTGltaXQ6ICcxMDAwMCcsXG4gICAgfSk7XG4gICAgdHhCdWlsZGVyLmNvdW50ZXIoMSk7XG4gICAgYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBjb250cmFjdCBjYWxsIGRhdGEgZmllbGQnKTtcbiAgfSk7XG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../test/unit/transferBuilder.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const assert_1 = __importDefault(require("assert"));
|
|
7
|
+
const should_1 = __importDefault(require("should"));
|
|
8
|
+
const statics_1 = require("@bitgo-beta/statics");
|
|
9
|
+
const src_1 = require("../../src");
|
|
10
|
+
describe('Eth send multi sig builder', function () {
|
|
11
|
+
const toAddress = '0x7325A3F7d4f9E86AE62Cf742426078C3755730d5';
|
|
12
|
+
const xprv = 'xprv9s21ZrQH143K3D8TXfvAJgHVfTEeQNW5Ys9wZtnUZkqPzFzSjbEJrWC1vZ4GnXCvR7rQL2UFX3RSuYeU9MrERm1XBvACow7c36vnz5iYyj2';
|
|
13
|
+
const key = new src_1.KeyPair({ prv: xprv }).getKeys().prv;
|
|
14
|
+
const amount = '100000000000000000'; // equivalent to 0.1 ether
|
|
15
|
+
const ethLikeCoins = ['hteth', 'tarbeth', 'topeth', 'zketh'];
|
|
16
|
+
describe('should fail', () => {
|
|
17
|
+
it('should fail if a coin does not exists in @bitgo-beta/statics', () => {
|
|
18
|
+
(0, should_1.default)(() => {
|
|
19
|
+
new src_1.TransferBuilder().coin('inexistentcoin');
|
|
20
|
+
}).throw();
|
|
21
|
+
});
|
|
22
|
+
ethLikeCoins.forEach((coin) => {
|
|
23
|
+
it('should fail with an invalid key', () => {
|
|
24
|
+
const staticsCoin = statics_1.coins.get(coin);
|
|
25
|
+
const builder = new src_1.TransferBuilder()
|
|
26
|
+
.coin(coin)
|
|
27
|
+
.expirationTime(1590078260)
|
|
28
|
+
.amount(amount)
|
|
29
|
+
.to(toAddress)
|
|
30
|
+
.contractSequenceId(2)
|
|
31
|
+
.key('invalidkey');
|
|
32
|
+
(0, should_1.default)(() => {
|
|
33
|
+
builder.signAndBuild(`${staticsCoin.chainId}`);
|
|
34
|
+
}).throw('private key length is invalid');
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
it('should fail with an invalid sequence id', () => {
|
|
38
|
+
(0, should_1.default)(() => {
|
|
39
|
+
new src_1.TransferBuilder().contractSequenceId(-1);
|
|
40
|
+
}).throw('Invalid contract sequence id');
|
|
41
|
+
});
|
|
42
|
+
it('should fail with an invalid destination address', () => {
|
|
43
|
+
(0, should_1.default)(() => {
|
|
44
|
+
new src_1.TransferBuilder().to('invalidaddress');
|
|
45
|
+
}).throw('Invalid address');
|
|
46
|
+
});
|
|
47
|
+
it('should fail with an invalid amount: text value', () => {
|
|
48
|
+
(0, should_1.default)(() => {
|
|
49
|
+
new src_1.TransferBuilder().amount('invalidamount');
|
|
50
|
+
}).throw('Invalid amount');
|
|
51
|
+
});
|
|
52
|
+
it('should fail with an invalid amount: negative value', () => {
|
|
53
|
+
(0, should_1.default)(() => {
|
|
54
|
+
new src_1.TransferBuilder().amount('-10');
|
|
55
|
+
}).throw('Invalid amount');
|
|
56
|
+
});
|
|
57
|
+
it('should fail with an invalid expiration time', () => {
|
|
58
|
+
(0, should_1.default)(() => {
|
|
59
|
+
new src_1.TransferBuilder().expirationTime(-1);
|
|
60
|
+
}).throw('Invalid expiration time');
|
|
61
|
+
});
|
|
62
|
+
it('should fail if a sequenceId param is missing', () => {
|
|
63
|
+
const builder = new src_1.TransferBuilder().amount(amount).to(toAddress).key(key);
|
|
64
|
+
assert_1.default.throws(() => builder.signAndBuild(''));
|
|
65
|
+
});
|
|
66
|
+
it('should fail if a destination param is missing', () => {
|
|
67
|
+
const builder = new src_1.TransferBuilder().amount(amount).contractSequenceId(2).key(key);
|
|
68
|
+
assert_1.default.throws(() => builder.signAndBuild(''));
|
|
69
|
+
});
|
|
70
|
+
it('should fail if a amount param is missing', () => {
|
|
71
|
+
const builder = new src_1.TransferBuilder().to(toAddress).contractSequenceId(2).key(key);
|
|
72
|
+
assert_1.default.throws(() => builder.signAndBuild(''));
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zZmVyQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUE0QjtBQUM1QixvREFBNEI7QUFDNUIsaURBQStFO0FBQy9FLG1DQUFxRDtBQUVyRCxRQUFRLENBQUMsNEJBQTRCLEVBQUU7SUFDckMsTUFBTSxTQUFTLEdBQUcsNENBQTRDLENBQUM7SUFDL0QsTUFBTSxJQUFJLEdBQ1IsaUhBQWlILENBQUM7SUFDcEgsTUFBTSxHQUFHLEdBQUcsSUFBSSxhQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFhLENBQUM7SUFDL0QsTUFBTSxNQUFNLEdBQUcsb0JBQW9CLENBQUMsQ0FBQywwQkFBMEI7SUFDL0QsTUFBTSxZQUFZLEdBQUcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUU3RCxRQUFRLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRTtRQUMzQixFQUFFLENBQUMsOERBQThELEVBQUUsR0FBRyxFQUFFO1lBQ3RFLElBQUEsZ0JBQU0sRUFBQyxHQUFHLEVBQUU7Z0JBQ1YsSUFBSSxxQkFBZSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDL0MsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixDQUFDLENBQUMsQ0FBQztRQUVILFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM1QixFQUFFLENBQUMsaUNBQWlDLEVBQUUsR0FBRyxFQUFFO2dCQUN6QyxNQUFNLFdBQVcsR0FBRyxlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBOEIsQ0FBQztnQkFDakUsTUFBTSxPQUFPLEdBQUcsSUFBSSxxQkFBZSxFQUFFO3FCQUNsQyxJQUFJ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Q2hELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDBDQUEwQyxFQUFFLEdBQUcsRUFBRTtZQUNsRCxNQUFNLE9BQU8sR0FBRyxJQUFJLHFCQUFlLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25GLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBjb2lucywgRXRoZXJldW1OZXR3b3JrIGFzIEV0aExpa2VOZXR3b3JrIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBLZXlQYWlyLCBUcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuLi8uLi9zcmMnO1xuXG5kZXNjcmliZSgnRXRoIHNlbmQgbXVsdGkgc2lnIGJ1aWxkZXInLCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHRvQWRkcmVzcyA9ICcweDczMjVBM0Y3ZDRmOUU4NkFFNjJDZjc0MjQyNjA3OEMzNzU1NzMwZDUnO1xuICBjb25zdCB4cHJ2ID1cbiAgICAneHBydjlzMjFaclFIMTQzSzNEOFRYZnZBSmdIVmZURWVRTlc1WXM5d1p0blVaa3FQekZ6U2piRUpyV0Mxdlo0R25YQ3ZSN3JRTDJVRlgzUlN1WWVVOU1yRVJtMVhCdkFDb3c3YzM2dm56NWlZeWoyJztcbiAgY29uc3Qga2V5ID0gbmV3IEtleVBhaXIoeyBwcnY6IHhwcnYgfSkuZ2V0S2V5cygpLnBydiBhcyBzdHJpbmc7XG4gIGNvbnN0IGFtb3VudCA9ICcxMDAwMDAwMDAwMDAwMDAwMDAnOyAvLyBlcXVpdmFsZW50IHRvIDAuMSBldGhlclxuICBjb25zdCBldGhMaWtlQ29pbnMgPSBbJ2h0ZXRoJywgJ3RhcmJldGgnLCAndG9wZXRoJywgJ3prZXRoJ107XG5cbiAgZGVzY3JpYmUoJ3Nob3VsZCBmYWlsJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgZmFpbCBpZiBhIGNvaW4gZG9lcyBub3QgZXhpc3RzIGluIEBiaXRnby1iZXRhL3N0YXRpY3MnLCAoKSA9PiB7XG4gICAgICBzaG91bGQoKCkgPT4ge1xuICAgICAgICBuZXcgVHJhbnNmZXJCdWlsZGVyKCkuY29pbignaW5leGlzdGVudGNvaW4nKTtcbiAgICAgIH0pLnRocm93KCk7XG4gICAgfSk7XG5cbiAgICBldGhMaWtlQ29pbnMuZm9yRWFjaCgoY29pbikgPT4ge1xuICAgICAgaXQoJ3Nob3VsZCBmYWlsIHdpdGggYW4gaW52YWxpZCBrZXknLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0YXRpY3NDb2luID0gY29pbnMuZ2V0KGNvaW4pIGFzIHVua25vd24gYXMgRXRoTGlrZU5ldHdvcms7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgVHJhbnNmZXJCdWlsZGVyKClcbiAgICAgICAgICAuY29pbihjb2luKVxuICAgICAgICAgIC5leHBpcmF0aW9uVGltZSgxNTkwMDc4MjYwKVxuICAgICAgICAgIC5hbW91bnQoYW1vdW50KVxuICAgICAgICAgIC50byh0b0FkZHJlc3MpXG4gICAgICAgICAgLmNvbnRyYWN0U2VxdWVuY2VJZCgyKVxuICAgICAgICAgIC5rZXkoJ2ludmFsaWRrZXknKTtcbiAgICAgICAgc2hvdWxkKCgpID0+IHtcbiAgICAgICAgICBidWlsZGVyLnNpZ25BbmRCdWlsZChgJHtzdGF0aWNzQ29pbi5jaGFpbklkfWApO1xuICAgICAgICB9KS50aHJvdygncHJpdmF0ZSBrZXkgbGVuZ3RoIGlzIGludmFsaWQnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHdpdGggYW4gaW52YWxpZCBzZXF1ZW5jZSBpZCcsICgpID0+IHtcbiAgICAgIHNob3VsZCgoKSA9PiB7XG4gICAgICAgIG5ldyBUcmFuc2ZlckJ1aWxkZXIoKS5jb250cmFjdFNlcXVlbmNlSWQoLTEpO1xuICAgICAgfSkudGhyb3coJ0ludmFsaWQgY29udHJhY3Qgc2VxdWVuY2UgaWQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB3aXRoIGFuIGludmFsaWQgZGVzdGluYXRpb24gYWRkcmVzcycsICgpID0+IHtcbiAgICAgIHNob3VsZCgoKSA9PiB7XG4gICAgICAgIG5ldyBUcmFuc2ZlckJ1aWxkZXIoKS50bygnaW52YWxpZGFkZHJlc3MnKTtcbiAgICAgIH0pLnRocm93KCdJbnZhbGlkIGFkZHJlc3MnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB3aXRoIGFuIGludmFsaWQgYW1vdW50OiB0ZXh0IHZhbHVlJywgKCkgPT4ge1xuICAgICAgc2hvdWxkKCgpID0+IHtcbiAgICAgICAgbmV3IFRyYW5zZmVyQnVpbGRlcigpLmFtb3VudCgnaW52YWxpZGFtb3VudCcpO1xuICAgICAgfSkudGhyb3coJ0ludmFsaWQgYW1vdW50Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgd2l0aCBhbiBpbnZhbGlkIGFtb3VudDogbmVnYXRpdmUgdmFsdWUnLCAoKSA9PiB7XG4gICAgICBzaG91bGQoKCkgPT4ge1xuICAgICAgICBuZXcgVHJhbnNmZXJCdWlsZGVyKCkuYW1vdW50KCctMTAnKTtcbiAgICAgIH0pLnRocm93KCdJbnZhbGlkIGFtb3VudCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHdpdGggYW4gaW52YWxpZCBleHBpcmF0aW9uIHRpbWUnLCAoKSA9PiB7XG4gICAgICBzaG91bGQoKCkgPT4ge1xuICAgICAgICBuZXcgVHJhbnNmZXJCdWlsZGVyKCkuZXhwaXJhdGlvblRpbWUoLTEpO1xuICAgICAgfSkudGhyb3coJ0ludmFsaWQgZXhwaXJhdGlvbiB0aW1lJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgaWYgYSBzZXF1ZW5jZUlkIHBhcmFtIGlzIG1pc3NpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IFRyYW5zZmVyQnVpbGRlcigpLmFtb3VudChhbW91bnQpLnRvKHRvQWRkcmVzcykua2V5KGtleSk7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IGJ1aWxkZXIuc2lnbkFuZEJ1aWxkKCcnKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgaWYgYSBkZXN0aW5hdGlvbiBwYXJhbSBpcyBtaXNzaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBUcmFuc2ZlckJ1aWxkZXIoKS5hbW91bnQoYW1vdW50KS5jb250cmFjdFNlcXVlbmNlSWQoMikua2V5KGtleSk7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IGJ1aWxkZXIuc2lnbkFuZEJ1aWxkKCcnKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgaWYgYSBhbW91bnQgcGFyYW0gaXMgbWlzc2luZycsICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgVHJhbnNmZXJCdWlsZGVyKCkudG8odG9BZGRyZXNzKS5jb250cmFjdFNlcXVlbmNlSWQoMikua2V5KGtleSk7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IGJ1aWxkZXIuc2lnbkFuZEJ1aWxkKCcnKSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../test/unit/utils.ts"],"names":[],"mappings":""}
|