@bitgo-beta/sdk-coin-vet 1.0.1-beta.42 → 1.0.1-beta.420
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/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -1
- package/dist/src/lib/constants.d.ts +24 -1
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +26 -3
- package/dist/src/lib/iface.d.ts +26 -2
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +1 -1
- package/dist/src/lib/index.d.ts +15 -0
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +32 -2
- package/dist/src/lib/transaction/addressInitializationTransaction.d.ts +31 -0
- package/dist/src/lib/transaction/addressInitializationTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/addressInitializationTransaction.js +170 -0
- package/dist/src/lib/transaction/burnNftTransaction.d.ts +26 -0
- package/dist/src/lib/transaction/burnNftTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/burnNftTransaction.js +131 -0
- package/dist/src/lib/transaction/claimRewards.d.ts +41 -0
- package/dist/src/lib/transaction/claimRewards.d.ts.map +1 -0
- package/dist/src/lib/transaction/claimRewards.js +210 -0
- package/dist/src/lib/transaction/exitDelegation.d.ts +26 -0
- package/dist/src/lib/transaction/exitDelegation.d.ts.map +1 -0
- package/dist/src/lib/transaction/exitDelegation.js +136 -0
- package/dist/src/lib/transaction/flushTokenTransaction.d.ts +20 -0
- package/dist/src/lib/transaction/flushTokenTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/flushTokenTransaction.js +98 -0
- package/dist/src/lib/transaction/nftTransaction.d.ts +17 -0
- package/dist/src/lib/transaction/nftTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/nftTransaction.js +108 -0
- package/dist/src/lib/transaction/stakingTransaction.d.ts +31 -0
- package/dist/src/lib/transaction/stakingTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/stakingTransaction.js +169 -0
- package/dist/src/lib/transaction/tokenTransaction.d.ts +14 -0
- package/dist/src/lib/transaction/tokenTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/tokenTransaction.js +95 -0
- package/dist/src/lib/transaction/transaction.d.ts +18 -28
- package/dist/src/lib/transaction/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction/transaction.js +95 -57
- package/dist/src/lib/transactionBuilder/addressInitializationBuilder.d.ts +78 -0
- package/dist/src/lib/transactionBuilder/addressInitializationBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/addressInitializationBuilder.js +158 -0
- package/dist/src/lib/transactionBuilder/burnNftBuilder.d.ts +59 -0
- package/dist/src/lib/transactionBuilder/burnNftBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/burnNftBuilder.js +118 -0
- package/dist/src/lib/transactionBuilder/claimRewardsBuilder.d.ts +57 -0
- package/dist/src/lib/transactionBuilder/claimRewardsBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/claimRewardsBuilder.js +142 -0
- package/dist/src/lib/transactionBuilder/exitDelegationBuilder.d.ts +58 -0
- package/dist/src/lib/transactionBuilder/exitDelegationBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/exitDelegationBuilder.js +115 -0
- package/dist/src/lib/transactionBuilder/flushTokenTransactionBuilder.d.ts +66 -0
- package/dist/src/lib/transactionBuilder/flushTokenTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/flushTokenTransactionBuilder.js +129 -0
- package/dist/src/lib/transactionBuilder/nftTransactionBuilder.d.ts +23 -0
- package/dist/src/lib/transactionBuilder/nftTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/nftTransactionBuilder.js +93 -0
- package/dist/src/lib/transactionBuilder/stakingBuilder.d.ts +73 -0
- package/dist/src/lib/transactionBuilder/stakingBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/stakingBuilder.js +147 -0
- package/dist/src/lib/transactionBuilder/tokenTransactionBuilder.d.ts +21 -0
- package/dist/src/lib/transactionBuilder/tokenTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/tokenTransactionBuilder.js +70 -0
- package/dist/src/lib/transactionBuilder/transactionBuilder.d.ts +10 -9
- package/dist/src/lib/transactionBuilder/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder/transactionBuilder.js +25 -19
- package/dist/src/lib/transactionBuilderFactory.d.ts +46 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +97 -1
- package/dist/src/lib/types.d.ts +24 -0
- package/dist/src/lib/types.d.ts.map +1 -1
- package/dist/src/lib/types.js +1 -1
- package/dist/src/lib/utils.d.ts +79 -1
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +219 -10
- package/dist/src/register.d.ts.map +1 -1
- package/dist/src/register.js +9 -1
- package/dist/src/vet.d.ts +80 -2
- package/dist/src/vet.d.ts.map +1 -1
- package/dist/src/vet.js +478 -8
- package/dist/src/vetNFTCollection.d.ts +18 -0
- package/dist/src/vetNFTCollection.d.ts.map +1 -0
- package/dist/src/vetNFTCollection.js +52 -0
- package/dist/src/vetToken.d.ts +19 -0
- package/dist/src/vetToken.d.ts.map +1 -0
- package/dist/src/vetToken.js +52 -0
- package/dist/test/resources/vet.d.ts +68 -0
- package/dist/test/resources/vet.d.ts.map +1 -0
- package/dist/test/resources/vet.js +123 -0
- package/dist/test/transactionBuilder/addressInitializationBuilder.d.ts +2 -0
- package/dist/test/transactionBuilder/addressInitializationBuilder.d.ts.map +1 -0
- package/dist/test/transactionBuilder/addressInitializationBuilder.js +141 -0
- package/dist/test/transactionBuilder/burnNftBuilder.d.ts +2 -0
- package/dist/test/transactionBuilder/burnNftBuilder.d.ts.map +1 -0
- package/dist/test/transactionBuilder/burnNftBuilder.js +154 -0
- package/dist/test/transactionBuilder/claimRewardsBuilder.d.ts +2 -0
- package/dist/test/transactionBuilder/claimRewardsBuilder.d.ts.map +1 -0
- package/dist/test/transactionBuilder/claimRewardsBuilder.js +246 -0
- package/dist/test/transactionBuilder/exitDelegationBuilder.d.ts +2 -0
- package/dist/test/transactionBuilder/exitDelegationBuilder.d.ts.map +1 -0
- package/dist/test/transactionBuilder/exitDelegationBuilder.js +154 -0
- package/dist/test/transactionBuilder/flushTokenTransactionBuilder.d.ts +2 -0
- package/dist/test/transactionBuilder/flushTokenTransactionBuilder.d.ts.map +1 -0
- package/dist/test/transactionBuilder/flushTokenTransactionBuilder.js +132 -0
- package/dist/test/transactionBuilder/nftTransactionBuilder.d.ts +2 -0
- package/dist/test/transactionBuilder/nftTransactionBuilder.d.ts.map +1 -0
- package/dist/test/transactionBuilder/nftTransactionBuilder.js +242 -0
- package/dist/test/transactionBuilder/stakingTransaction.d.ts +2 -0
- package/dist/test/transactionBuilder/stakingTransaction.d.ts.map +1 -0
- package/dist/test/transactionBuilder/stakingTransaction.js +250 -0
- package/dist/test/transactionBuilder/tokenTransactionBuilder.d.ts +2 -0
- package/dist/test/transactionBuilder/tokenTransactionBuilder.d.ts.map +1 -0
- package/dist/test/transactionBuilder/tokenTransactionBuilder.js +249 -0
- package/dist/test/transactionBuilder/transferBuilder.d.ts +2 -0
- package/dist/test/transactionBuilder/transferBuilder.d.ts.map +1 -0
- package/dist/test/transactionBuilder/transferBuilder.js +214 -0
- package/dist/test/unit/keyPair.d.ts +2 -0
- package/dist/test/unit/keyPair.d.ts.map +1 -0
- package/dist/test/unit/keyPair.js +181 -0
- package/dist/test/unit/stakingFlowE2E.d.ts +2 -0
- package/dist/test/unit/stakingFlowE2E.d.ts.map +1 -0
- package/dist/test/unit/stakingFlowE2E.js +229 -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 +106 -0
- package/dist/test/unit/vet.d.ts +2 -0
- package/dist/test/unit/vet.d.ts.map +1 -0
- package/dist/test/unit/vet.js +251 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +16 -10
- package/.eslintignore +0 -5
- package/.mocharc.yml +0 -8
- package/CHANGELOG.md +0 -28
|
@@ -0,0 +1,249 @@
|
|
|
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
|
+
const should_1 = __importDefault(require("should"));
|
|
40
|
+
const statics_1 = require("@bitgo-beta/statics");
|
|
41
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
42
|
+
const src_1 = require("../../src");
|
|
43
|
+
const testData = __importStar(require("../resources/vet"));
|
|
44
|
+
describe('tokenTransactionBuilder', () => {
|
|
45
|
+
const factory = new src_1.TransactionBuilderFactory(statics_1.coins.get('tvet:vtho'));
|
|
46
|
+
describe('Succeed', () => {
|
|
47
|
+
it('should build a token transfer transaction', async function () {
|
|
48
|
+
const transaction = new src_1.TokenTransaction(statics_1.coins.get('tvet:vtho'));
|
|
49
|
+
const txBuilder = factory.getTokenTransactionBuilder(transaction);
|
|
50
|
+
txBuilder.sender(testData.addresses.validAddresses[0]);
|
|
51
|
+
txBuilder.gas(21000);
|
|
52
|
+
txBuilder.nonce('64248');
|
|
53
|
+
txBuilder.blockRef('0x014ead140e77bbc1');
|
|
54
|
+
txBuilder.expiration(64);
|
|
55
|
+
txBuilder.gasPriceCoef(128);
|
|
56
|
+
txBuilder.tokenAddress(testData.TOKEN_ADDRESS);
|
|
57
|
+
txBuilder.recipients(testData.recipients);
|
|
58
|
+
txBuilder.addFeePayerAddress(testData.feePayer.address);
|
|
59
|
+
const tx = (await txBuilder.build());
|
|
60
|
+
should_1.default.equal(tx.sender, testData.addresses.validAddresses[0]);
|
|
61
|
+
should_1.default.equal(tx.recipients[0].address, testData.recipients[0].address);
|
|
62
|
+
should_1.default.equal(tx.recipients[0].amount, testData.recipients[0].amount);
|
|
63
|
+
should_1.default.equal(tx.gas, 21000);
|
|
64
|
+
should_1.default.equal(tx.getFee(), '315411764705882352');
|
|
65
|
+
should_1.default.equal(tx.nonce, '64248');
|
|
66
|
+
should_1.default.equal(tx.expiration, 64);
|
|
67
|
+
should_1.default.equal(tx.type, sdk_core_1.TransactionType.Send);
|
|
68
|
+
tx.inputs.length.should.equal(1);
|
|
69
|
+
tx.inputs[0].should.deepEqual({
|
|
70
|
+
address: testData.addresses.validAddresses[0],
|
|
71
|
+
value: testData.recipients[0].amount,
|
|
72
|
+
coin: 'tvet:vtho',
|
|
73
|
+
});
|
|
74
|
+
tx.outputs.length.should.equal(1);
|
|
75
|
+
tx.outputs[0].should.deepEqual({
|
|
76
|
+
address: testData.recipients[0].address,
|
|
77
|
+
value: testData.recipients[0].amount,
|
|
78
|
+
coin: 'tvet:vtho',
|
|
79
|
+
});
|
|
80
|
+
const rawTx = tx.toBroadcastFormat();
|
|
81
|
+
should_1.default.equal(txBuilder.isValidRawTransaction(rawTx), true);
|
|
82
|
+
rawTx.should.equal(testData.UNSIGNED_TRANSACTION_3);
|
|
83
|
+
});
|
|
84
|
+
it('should build and send a signed tx', async function () {
|
|
85
|
+
const txBuilder = factory.from(testData.SPONSORED_TOKEN_TRANSACTION);
|
|
86
|
+
txBuilder.getNonce().should.equal('517737');
|
|
87
|
+
const tx = (await txBuilder.build());
|
|
88
|
+
should_1.default.equal(tx.type, sdk_core_1.TransactionType.Send);
|
|
89
|
+
tx.inputs.length.should.equal(1);
|
|
90
|
+
tx.inputs[0].should.deepEqual({
|
|
91
|
+
address: testData.addresses.validAddresses[2],
|
|
92
|
+
value: testData.AMOUNT.toString(),
|
|
93
|
+
coin: 'tvet:vtho',
|
|
94
|
+
});
|
|
95
|
+
tx.outputs.length.should.equal(1);
|
|
96
|
+
tx.outputs[0].should.deepEqual({
|
|
97
|
+
address: testData.recipients[0].address,
|
|
98
|
+
value: testData.AMOUNT.toString(),
|
|
99
|
+
coin: 'tvet:vtho',
|
|
100
|
+
});
|
|
101
|
+
should_1.default.equal(tx.id, '0x16a0ebdfe43a8a62e7d62e65603c9563c8342fff6d8150c71bff9ec37634f50e');
|
|
102
|
+
should_1.default.equal(tx.gas, 51518);
|
|
103
|
+
should_1.default.equal(tx.getFee(), '773780156862745098');
|
|
104
|
+
should_1.default.equal(tx.nonce, '517737');
|
|
105
|
+
should_1.default.equal(tx.expiration, 64);
|
|
106
|
+
should_1.default.equal(tx.type, sdk_core_1.TransactionType.Send);
|
|
107
|
+
const rawTx = tx.toBroadcastFormat();
|
|
108
|
+
should_1.default.equal(txBuilder.isValidRawTransaction(rawTx), true);
|
|
109
|
+
should_1.default.equal(rawTx, testData.SPONSORED_TOKEN_TRANSACTION);
|
|
110
|
+
});
|
|
111
|
+
it('should validate a valid signablePayload', async function () {
|
|
112
|
+
const transaction = new src_1.TokenTransaction(statics_1.coins.get('tvet:vtho'));
|
|
113
|
+
const txBuilder = factory.getTokenTransactionBuilder(transaction);
|
|
114
|
+
txBuilder.sender(testData.addresses.validAddresses[0]);
|
|
115
|
+
txBuilder.recipients(testData.recipients);
|
|
116
|
+
txBuilder.gas(21000);
|
|
117
|
+
txBuilder.nonce('64248');
|
|
118
|
+
txBuilder.expiration(64);
|
|
119
|
+
txBuilder.blockRef('0x014ead140e77bbc1');
|
|
120
|
+
txBuilder.gasPriceCoef(128);
|
|
121
|
+
txBuilder.addFeePayerAddress(testData.feePayer.address);
|
|
122
|
+
txBuilder.tokenAddress(testData.TOKEN_ADDRESS);
|
|
123
|
+
const tx = (await txBuilder.build());
|
|
124
|
+
const signablePayload = tx.signablePayload;
|
|
125
|
+
should_1.default.equal(signablePayload.toString('hex'), testData.VALID_TOKEN_SIGNABLE_PAYLOAD);
|
|
126
|
+
});
|
|
127
|
+
it('should build a unsigned tx and validate its toJson', async function () {
|
|
128
|
+
const transaction = new src_1.TokenTransaction(statics_1.coins.get('tvet:vtho'));
|
|
129
|
+
const txBuilder = factory.getTokenTransactionBuilder(transaction);
|
|
130
|
+
txBuilder.sender(testData.addresses.validAddresses[0]);
|
|
131
|
+
txBuilder.recipients(testData.recipients);
|
|
132
|
+
txBuilder.gas(21000);
|
|
133
|
+
txBuilder.nonce('64248');
|
|
134
|
+
txBuilder.expiration(64);
|
|
135
|
+
txBuilder.blockRef('0x014ead140e77bbc1');
|
|
136
|
+
txBuilder.gasPriceCoef(128);
|
|
137
|
+
txBuilder.addFeePayerAddress(testData.feePayer.address);
|
|
138
|
+
txBuilder.tokenAddress(testData.TOKEN_ADDRESS);
|
|
139
|
+
const tx = (await txBuilder.build());
|
|
140
|
+
const toJson = tx.toJson();
|
|
141
|
+
should_1.default.equal(toJson.sender, testData.addresses.validAddresses[0]);
|
|
142
|
+
should_1.default.deepEqual(toJson.recipients, [
|
|
143
|
+
{
|
|
144
|
+
address: testData.recipients[0].address,
|
|
145
|
+
amount: testData.recipients[0].amount,
|
|
146
|
+
},
|
|
147
|
+
]);
|
|
148
|
+
should_1.default.equal(toJson.nonce, '64248');
|
|
149
|
+
should_1.default.equal(toJson.gas, 21000);
|
|
150
|
+
should_1.default.equal(toJson.gasPriceCoef, 128);
|
|
151
|
+
should_1.default.equal(toJson.expiration, 64);
|
|
152
|
+
should_1.default.equal(toJson.feePayer, testData.feePayer.address);
|
|
153
|
+
should_1.default.equal(toJson.tokenAddress, testData.TOKEN_ADDRESS);
|
|
154
|
+
});
|
|
155
|
+
it('should build a signed tx and validate its toJson', async function () {
|
|
156
|
+
const txBuilder = factory.from(testData.SPONSORED_TOKEN_TRANSACTION);
|
|
157
|
+
const tx = (await txBuilder.build());
|
|
158
|
+
const toJson = tx.toJson();
|
|
159
|
+
should_1.default.equal(toJson.id, '0x16a0ebdfe43a8a62e7d62e65603c9563c8342fff6d8150c71bff9ec37634f50e');
|
|
160
|
+
should_1.default.equal(toJson.sender, testData.addresses.validAddresses[2]);
|
|
161
|
+
should_1.default.deepEqual(toJson.recipients, [
|
|
162
|
+
{
|
|
163
|
+
address: testData.addresses.validAddresses[1].toLowerCase(),
|
|
164
|
+
amount: testData.AMOUNT.toString(),
|
|
165
|
+
},
|
|
166
|
+
]);
|
|
167
|
+
should_1.default.equal(toJson.nonce, '517737');
|
|
168
|
+
should_1.default.equal(toJson.gas, 51518);
|
|
169
|
+
should_1.default.equal(toJson.gasPriceCoef, 128);
|
|
170
|
+
should_1.default.equal(toJson.expiration, 64);
|
|
171
|
+
should_1.default.equal(toJson.tokenAddress, testData.TOKEN_ADDRESS);
|
|
172
|
+
});
|
|
173
|
+
it('should build a unsigned tx then add sender sig and build again', async function () {
|
|
174
|
+
const transaction = new src_1.TokenTransaction(statics_1.coins.get('tvet:vtho'));
|
|
175
|
+
const txBuilder = factory.getTokenTransactionBuilder(transaction);
|
|
176
|
+
txBuilder.sender(testData.addresses.validAddresses[2]);
|
|
177
|
+
txBuilder.recipients(testData.recipients);
|
|
178
|
+
txBuilder.gas(21000);
|
|
179
|
+
txBuilder.nonce('64248');
|
|
180
|
+
txBuilder.blockRef('0x014ead140e77bbc1');
|
|
181
|
+
txBuilder.addFeePayerAddress(testData.feePayer.address);
|
|
182
|
+
txBuilder.expiration(64);
|
|
183
|
+
txBuilder.gasPriceCoef(128);
|
|
184
|
+
txBuilder.tokenAddress(testData.TOKEN_ADDRESS);
|
|
185
|
+
const tx = (await txBuilder.build());
|
|
186
|
+
const unsignedSerializedTx = tx.toBroadcastFormat();
|
|
187
|
+
const builder1 = factory.from(unsignedSerializedTx);
|
|
188
|
+
builder1.addSenderSignature(Buffer.from(testData.senderSig2, 'hex'));
|
|
189
|
+
const senderSignedTx = await builder1.build();
|
|
190
|
+
const senderSignedSerializedTx = senderSignedTx.toBroadcastFormat();
|
|
191
|
+
should_1.default.equal(senderSignedSerializedTx, testData.senderSignedSerializedTxHex2);
|
|
192
|
+
const builder2 = factory.from(testData.senderSignedSerializedTxHex2);
|
|
193
|
+
builder2.addSenderSignature(Buffer.from(testData.senderSig2, 'hex'));
|
|
194
|
+
builder2.addFeePayerSignature(Buffer.from(testData.feePayerSig2, 'hex'));
|
|
195
|
+
const completelySignedTx = await builder2.build();
|
|
196
|
+
should_1.default.equal(completelySignedTx.toBroadcastFormat(), testData.completeSignedSerializedHex2);
|
|
197
|
+
should_1.default.equal(completelySignedTx.id, '0x065dfe80e3113f8c4638f17b7f255152fc52c29b42ed617cdff72fd41289152b');
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
describe('Fail', () => {
|
|
201
|
+
it('should fail for invalid sender', async function () {
|
|
202
|
+
const transaction = new src_1.Transaction(statics_1.coins.get('tvet:vtho'));
|
|
203
|
+
const builder = factory.getTokenTransactionBuilder(transaction);
|
|
204
|
+
(0, should_1.default)(() => builder.sender('randomString')).throwError('Invalid address randomString');
|
|
205
|
+
});
|
|
206
|
+
it('should fail for invalid recipient', async function () {
|
|
207
|
+
const builder = factory.getTokenTransactionBuilder();
|
|
208
|
+
(0, should_1.default)(() => builder.recipients([testData.invalidRecipients[0]])).throwError('Invalid address randomString');
|
|
209
|
+
(0, should_1.default)(() => builder.recipients([testData.invalidRecipients[1]])).throwError('Value cannot be less than zero');
|
|
210
|
+
(0, should_1.default)(() => builder.recipients([testData.invalidRecipients[2]])).throwError('Invalid amount format');
|
|
211
|
+
});
|
|
212
|
+
it('should fail for invalid gas amount', async function () {
|
|
213
|
+
const builder = factory.getTokenTransactionBuilder();
|
|
214
|
+
(0, should_1.default)(() => builder.gas(-1)).throwError('Value cannot be less than zero');
|
|
215
|
+
});
|
|
216
|
+
it('should fail to build if token address if not set', async function () {
|
|
217
|
+
const transaction = new src_1.TokenTransaction(statics_1.coins.get('tvet:vtho'));
|
|
218
|
+
const txBuilder = factory.getTokenTransactionBuilder(transaction);
|
|
219
|
+
txBuilder.sender(testData.addresses.validAddresses[0]);
|
|
220
|
+
txBuilder.gas(21000);
|
|
221
|
+
txBuilder.nonce('64248');
|
|
222
|
+
txBuilder.blockRef('0x014ead140e77bbc1');
|
|
223
|
+
txBuilder.expiration(64);
|
|
224
|
+
txBuilder.gasPriceCoef(128);
|
|
225
|
+
txBuilder.recipients(testData.recipients);
|
|
226
|
+
txBuilder.addFeePayerAddress(testData.feePayer.address);
|
|
227
|
+
try {
|
|
228
|
+
await txBuilder.build();
|
|
229
|
+
}
|
|
230
|
+
catch (err) {
|
|
231
|
+
should_1.default.equal(err.message, 'Token address is required');
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
it('should fail on setting invalid token address', async function () {
|
|
235
|
+
const transaction = new src_1.TokenTransaction(statics_1.coins.get('tvet:vtho'));
|
|
236
|
+
const txBuilder = factory.getTokenTransactionBuilder(transaction);
|
|
237
|
+
txBuilder.sender(testData.addresses.validAddresses[0]);
|
|
238
|
+
txBuilder.gas(21000);
|
|
239
|
+
txBuilder.nonce('64248');
|
|
240
|
+
txBuilder.blockRef('0x014ead140e77bbc1');
|
|
241
|
+
txBuilder.expiration(64);
|
|
242
|
+
txBuilder.gasPriceCoef(128);
|
|
243
|
+
txBuilder.recipients(testData.recipients);
|
|
244
|
+
txBuilder.addFeePayerAddress(testData.feePayer.address);
|
|
245
|
+
(0, should_1.default)(() => txBuilder.tokenAddress('InvalidTokenAddress')).throwError('Invalid address InvalidTokenAddress');
|
|
246
|
+
});
|
|
247
|
+
});
|
|
248
|
+
});
|
|
249
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5UcmFuc2FjdGlvbkJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3RyYW5zYWN0aW9uQnVpbGRlci90b2tlblRyYW5zYWN0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QixpREFBNEM7QUFDNUMsbURBQXVEO0FBQ3ZELG1DQUFxRjtBQUNyRiwyREFBNkM7QUFFN0MsUUFBUSxDQUFDLHlCQUF5QixFQUFFLEdBQUcsRUFBRTtJQUN2QyxNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUF5QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN0RSxRQUFRLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRTtRQUN2QixFQUFFLENBQUMsMkNBQTJDLEVBQUUsS0FBSztZQUNuRCxNQUFNLFdBQVcsR0FBRyxJQUFJLHNCQUFnQixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUNqRSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsMEJBQTBCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDbEUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZELFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckIsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN6QixTQUFTLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDekMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN6QixTQUFTLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzVCLFNBQVMsQ0FBQyxZQUFZLENBQUMsUUFBUSxD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Q0FBQyxPQUFPLENBQUMsQ0FBQztZQUN6QixTQUFTLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDekMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN6QixTQUFTLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzVCLFNBQVMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3hELElBQUEsZ0JBQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUNoSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksIFRva2VuVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi9zcmMnO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vcmVzb3VyY2VzL3ZldCc7XG5cbmRlc2NyaWJlKCd0b2tlblRyYW5zYWN0aW9uQnVpbGRlcicsICgpID0+IHtcbiAgY29uc3QgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndHZldDp2dGhvJykpO1xuICBkZXNjcmliZSgnU3VjY2VlZCcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGEgdG9rZW4gdHJhbnNmZXIgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IG5ldyBUb2tlblRyYW5zYWN0aW9uKGNvaW5zLmdldCgndHZldDp2dGhvJykpO1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRUb2tlblRyYW5zYWN0aW9uQnVpbGRlcih0cmFuc2FjdGlvbik7XG4gICAgICB0eEJ1aWxkZXIuc2VuZGVyKHRlc3REYXRhLmFkZHJlc3Nlcy52YWxpZEFkZHJlc3Nlc1swXSk7XG4gICAgICB0eEJ1aWxkZXIuZ2FzKDIxMDAwKTtcbiAgICAgIHR4QnVpbGRlci5ub25jZSgnNjQyNDgnKTtcbiAgICAgIHR4QnVpbGRlci5ibG9ja1JlZignMHgwMTRlYWQxNDBlNzdiYmMxJyk7XG4gICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbig2NCk7XG4gICAgICB0eEJ1aWxkZXIuZ2FzUHJpY2VDb2VmKDEyOCk7XG4gICAgICB0eEJ1aWxkZXIudG9rZW5BZGRyZXNzKHRlc3REYXRhLlRPS0VOX0FERFJFU1MpO1xuICAgICAgdHhCdWlsZGVyLnJlY2lwaWVudHModGVzdERhdGEucmVjaXBpZW50cyk7XG4gICAgICB0eEJ1aWxkZXIuYWRkRmVlUGF5ZXJBZGRyZXNzKHRlc3REYXRhLmZlZVBheWVyLmFkZHJlc3MpO1xuICAgICAgY29uc3QgdHggPSAoYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkpIGFzIFRva2VuVHJhbnNhY3Rpb247XG4gICAgICBzaG91bGQuZXF1YWwodHguc2VuZGVyLCB0ZXN0RGF0YS5hZGRyZXNzZXMudmFsaWRBZGRyZXNzZXNbMF0pO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LnJlY2lwaWVudHNbMF0uYWRkcmVzcywgdGVzdERhdGEucmVjaXBpZW50c1swXS5hZGRyZXNzKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5yZWNpcGllbnRzWzBdLmFtb3VudCwgdGVzdERhdGEucmVjaXBpZW50c1swXS5hbW91bnQpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LmdhcywgMjEwMDApO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LmdldEZlZSgpLCAnMzE1NDExNzY0NzA1ODgyMzUyJyk7XG4gICAgICBzaG91bGQuZXF1YWwodHgubm9uY2UsICc2NDI0OCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LmV4cGlyYXRpb24sIDY0KTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgICB0eC5pbnB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHR4LmlucHV0c1swXS5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgYWRkcmVzczogdGVzdERhdGEuYWRkcmVzc2VzLnZhbGlkQWRkcmVzc2VzWzBdLFxuICAgICAgICB2YWx1ZTogdGVzdERhdGEucmVjaXBpZW50c1swXS5hbW91bnQsXG4gICAgICAgIGNvaW46ICd0dmV0OnZ0aG8nLFxuICAgICAgfSk7XG4gICAgICB0eC5vdXRwdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICB0eC5vdXRwdXRzWzBdLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBhZGRyZXNzOiB0ZXN0RGF0YS5yZWNpcGllbnRzWzBdLmFkZHJlc3MsXG4gICAgICAgIHZhbHVlOiB0ZXN0RGF0YS5yZWNpcGllbnRzWzBdLmFtb3VudCxcbiAgICAgICAgY29pbjogJ3R2ZXQ6dnRobycsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHJhd1R4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eEJ1aWxkZXIuaXNWYWxpZFJhd1RyYW5zYWN0aW9uKHJhd1R4KSwgdHJ1ZSk7XG4gICAgICByYXdUeC5zaG91bGQuZXF1YWwodGVzdERhdGEuVU5TSUdORURfVFJBTlNBQ1RJT05fMyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGFuZCBzZW5kIGEgc2lnbmVkIHR4JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5mcm9tKHRlc3REYXRhLlNQT05TT1JFRF9UT0tFTl9UUkFOU0FDVElPTik7XG4gICAgICB0eEJ1aWxkZXIuZ2V0Tm9uY2UoKS5zaG91bGQuZXF1YWwoJzUxNzczNycpO1xuXG4gICAgICBjb25zdCB0eCA9IChhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKSkgYXMgVG9rZW5UcmFuc2FjdGlvbjtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgICB0eC5pbnB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHR4LmlucHV0c1swXS5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgYWRkcmVzczogdGVzdERhdGEuYWRkcmVzc2VzLnZhbGlkQWRkcmVzc2VzWzJdLFxuICAgICAgICB2YWx1ZTogdGVzdERhdGEuQU1PVU5ULnRvU3RyaW5nKCksXG4gICAgICAgIGNvaW46ICd0dmV0OnZ0aG8nLFxuICAgICAgfSk7XG4gICAgICB0eC5vdXRwdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICB0eC5vdXRwdXRzWzBdLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBhZGRyZXNzOiB0ZXN0RGF0YS5yZWNpcGllbnRzWzBdLmFkZHJlc3MsXG4gICAgICAgIHZhbHVlOiB0ZXN0RGF0YS5BTU9VTlQudG9TdHJpbmcoKSxcbiAgICAgICAgY29pbjogJ3R2ZXQ6dnRobycsXG4gICAgICB9KTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pZCwgJzB4MTZhMGViZGZlNDNhOGE2MmU3ZDYyZTY1NjAzYzk1NjNjODM0MmZmZjZkODE1MGM3MWJmZjllYzM3NjM0ZjUwZScpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LmdhcywgNTE1MTgpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LmdldEZlZSgpLCAnNzczNzgwMTU2ODYyNzQ1MDk4Jyk7XG4gICAgICBzaG91bGQuZXF1YWwodHgubm9uY2UsICc1MTc3MzcnKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5leHBpcmF0aW9uLCA2NCk7XG4gICAgICBzaG91bGQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgY29uc3QgcmF3VHggPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4QnVpbGRlci5pc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHgpLCB0cnVlKTtcbiAgICAgIHNob3VsZC5lcXVhbChyYXdUeCwgdGVzdERhdGEuU1BPTlNPUkVEX1RPS0VOX1RSQU5TQUNUSU9OKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgYSB2YWxpZCBzaWduYWJsZVBheWxvYWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IG5ldyBUb2tlblRyYW5zYWN0aW9uKGNvaW5zLmdldCgndHZldDp2dGhvJykpO1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRUb2tlblRyYW5zYWN0aW9uQnVpbGRlcih0cmFuc2FjdGlvbik7XG4gICAgICB0eEJ1aWxkZXIuc2VuZGVyKHRlc3REYXRhLmFkZHJlc3Nlcy52YWxpZEFkZHJlc3Nlc1swXSk7XG4gICAgICB0eEJ1aWxkZXIucmVjaXBpZW50cyh0ZXN0RGF0YS5yZWNpcGllbnRzKTtcbiAgICAgIHR4QnVpbGRlci5nYXMoMjEwMDApO1xuICAgICAgdHhCdWlsZGVyLm5vbmNlKCc2NDI0OCcpO1xuICAgICAgdHhCdWlsZGVyLmV4cGlyYXRpb24oNjQpO1xuICAgICAgdHhCdWlsZGVyLmJsb2NrUmVmKCcweDAxNGVhZDE0MGU3N2JiYzEnKTtcbiAgICAgIHR4QnVpbGRlci5nYXNQcmljZUNvZWYoMTI4KTtcbiAgICAgIHR4QnVpbGRlci5hZGRGZWVQYXllckFkZHJlc3ModGVzdERhdGEuZmVlUGF5ZXIuYWRkcmVzcyk7XG4gICAgICB0eEJ1aWxkZXIudG9rZW5BZGRyZXNzKHRlc3REYXRhLlRPS0VOX0FERFJFU1MpO1xuICAgICAgY29uc3QgdHggPSAoYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuICAgICAgY29uc3Qgc2lnbmFibGVQYXlsb2FkID0gdHguc2lnbmFibGVQYXlsb2FkO1xuICAgICAgc2hvdWxkLmVxdWFsKHNpZ25hYmxlUGF5bG9hZC50b1N0cmluZygnaGV4JyksIHRlc3REYXRhLlZBTElEX1RPS0VOX1NJR05BQkxFX1BBWUxPQUQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCBhIHVuc2lnbmVkIHR4IGFuZCB2YWxpZGF0ZSBpdHMgdG9Kc29uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHJhbnNhY3Rpb24gPSBuZXcgVG9rZW5UcmFuc2FjdGlvbihjb2lucy5nZXQoJ3R2ZXQ6dnRobycpKTtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0VG9rZW5UcmFuc2FjdGlvbkJ1aWxkZXIodHJhbnNhY3Rpb24pO1xuICAgICAgdHhCdWlsZGVyLnNlbmRlcih0ZXN0RGF0YS5hZGRyZXNzZXMudmFsaWRBZGRyZXNzZXNbMF0pO1xuICAgICAgdHhCdWlsZGVyLnJlY2lwaWVudHModGVzdERhdGEucmVjaXBpZW50cyk7XG4gICAgICB0eEJ1aWxkZXIuZ2FzKDIxMDAwKTtcbiAgICAgIHR4QnVpbGRlci5ub25jZSgnNjQyNDgnKTtcbiAgICAgIHR4QnVpbGRlci5leHBpcmF0aW9uKDY0KTtcbiAgICAgIHR4QnVpbGRlci5ibG9ja1JlZignMHgwMTRlYWQxNDBlNzdiYmMxJyk7XG4gICAgICB0eEJ1aWxkZXIuZ2FzUHJpY2VDb2VmKDEyOCk7XG4gICAgICB0eEJ1aWxkZXIuYWRkRmVlUGF5ZXJBZGRyZXNzKHRlc3REYXRhLmZlZVBheWVyLmFkZHJlc3MpO1xuICAgICAgdHhCdWlsZGVyLnRva2VuQWRkcmVzcyh0ZXN0RGF0YS5UT0tFTl9BRERSRVNTKTtcbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IHR4QnVpbGRlci5idWlsZCgpKSBhcyBUb2tlblRyYW5zYWN0aW9uO1xuICAgICAgY29uc3QgdG9Kc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBzaG91bGQuZXF1YWwodG9Kc29uLnNlbmRlciwgdGVzdERhdGEuYWRkcmVzc2VzLnZhbGlkQWRkcmVzc2VzWzBdKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodG9Kc29uLnJlY2lwaWVudHMsIFtcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6IHRlc3REYXRhLnJlY2lwaWVudHNbMF0uYWRkcmVzcyxcbiAgICAgICAgICBhbW91bnQ6IHRlc3REYXRhLnJlY2lwaWVudHNbMF0uYW1vdW50LFxuICAgICAgICB9LFxuICAgICAgXSk7XG4gICAgICBzaG91bGQuZXF1YWwodG9Kc29uLm5vbmNlLCAnNjQyNDgnKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0b0pzb24uZ2FzLCAyMTAwMCk7XG4gICAgICBzaG91bGQuZXF1YWwodG9Kc29uLmdhc1ByaWNlQ29lZiwgMTI4KTtcbiAgICAgIHNob3VsZC5lcXVhbCh0b0pzb24uZXhwaXJhdGlvbiwgNjQpO1xuICAgICAgc2hvdWxkLmVxdWFsKHRvSnNvbi5mZWVQYXllciwgdGVzdERhdGEuZmVlUGF5ZXIuYWRkcmVzcyk7XG4gICAgICBzaG91bGQuZXF1YWwodG9Kc29uLnRva2VuQWRkcmVzcywgdGVzdERhdGEuVE9LRU5fQUREUkVTUyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGEgc2lnbmVkIHR4IGFuZCB2YWxpZGF0ZSBpdHMgdG9Kc29uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5mcm9tKHRlc3REYXRhLlNQT05TT1JFRF9UT0tFTl9UUkFOU0FDVElPTik7XG4gICAgICBjb25zdCB0eCA9IChhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKSkgYXMgVG9rZW5UcmFuc2FjdGlvbjtcbiAgICAgIGNvbnN0IHRvSnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgc2hvdWxkLmVxdWFsKHRvSnNvbi5pZCwgJzB4MTZhMGViZGZlNDNhOGE2MmU3ZDYyZTY1NjAzYzk1NjNjODM0MmZmZjZkODE1MGM3MWJmZjllYzM3NjM0ZjUwZScpO1xuICAgICAgc2hvdWxkLmVxdWFsKHRvSnNvbi5zZW5kZXIsIHRlc3REYXRhLmFkZHJlc3Nlcy52YWxpZEFkZHJlc3Nlc1syXSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHRvSnNvbi5yZWNpcGllbnRzLCBbXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzOiB0ZXN0RGF0YS5hZGRyZXNzZXMudmFsaWRBZGRyZXNzZXNbMV0udG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICBhbW91bnQ6IHRlc3REYXRhLkFNT1VOVC50b1N0cmluZygpLFxuICAgICAgICB9LFxuICAgICAgXSk7XG4gICAgICBzaG91bGQuZXF1YWwodG9Kc29uLm5vbmNlLCAnNTE3NzM3Jyk7XG4gICAgICBzaG91bGQuZXF1YWwodG9Kc29uLmdhcywgNTE1MTgpO1xuICAgICAgc2hvdWxkLmVxdWFsKHRvSnNvbi5nYXNQcmljZUNvZWYsIDEyOCk7XG4gICAgICBzaG91bGQuZXF1YWwodG9Kc29uLmV4cGlyYXRpb24sIDY0KTtcbiAgICAgIHNob3VsZC5lcXVhbCh0b0pzb24udG9rZW5BZGRyZXNzLCB0ZXN0RGF0YS5UT0tFTl9BRERSRVNTKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgYSB1bnNpZ25lZCB0eCB0aGVuIGFkZCBzZW5kZXIgc2lnIGFuZCBidWlsZCBhZ2FpbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gbmV3IFRva2VuVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0dmV0OnZ0aG8nKSk7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFRva2VuVHJhbnNhY3Rpb25CdWlsZGVyKHRyYW5zYWN0aW9uKTtcbiAgICAgIHR4QnVpbGRlci5zZW5kZXIodGVzdERhdGEuYWRkcmVzc2VzLnZhbGlkQWRkcmVzc2VzWzJdKTtcbiAgICAgIHR4QnVpbGRlci5yZWNpcGllbnRzKHRlc3REYXRhLnJlY2lwaWVudHMpO1xuICAgICAgdHhCdWlsZGVyLmdhcygyMTAwMCk7XG4gICAgICB0eEJ1aWxkZXIubm9uY2UoJzY0MjQ4Jyk7XG4gICAgICB0eEJ1aWxkZXIuYmxvY2tSZWYoJzB4MDE0ZWFkMTQwZTc3YmJjMScpO1xuICAgICAgdHhCdWlsZGVyLmFkZEZlZVBheWVyQWRkcmVzcyh0ZXN0RGF0YS5mZWVQYXllci5hZGRyZXNzKTtcbiAgICAgIHR4QnVpbGRlci5leHBpcmF0aW9uKDY0KTtcbiAgICAgIHR4QnVpbGRlci5nYXNQcmljZUNvZWYoMTI4KTtcbiAgICAgIHR4QnVpbGRlci50b2tlbkFkZHJlc3ModGVzdERhdGEuVE9LRU5fQUREUkVTUyk7XG4gICAgICBjb25zdCB0eCA9IChhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKSkgYXMgVHJhbnNhY3Rpb247XG4gICAgICBjb25zdCB1bnNpZ25lZFNlcmlhbGl6ZWRUeCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBjb25zdCBidWlsZGVyMSA9IGZhY3RvcnkuZnJvbSh1bnNpZ25lZFNlcmlhbGl6ZWRUeCk7XG4gICAgICBidWlsZGVyMS5hZGRTZW5kZXJTaWduYXR1cmUoQnVmZmVyLmZyb20odGVzdERhdGEuc2VuZGVyU2lnMiwgJ2hleCcpKTtcbiAgICAgIGNvbnN0IHNlbmRlclNpZ25lZFR4ID0gYXdhaXQgYnVpbGRlcjEuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHNlbmRlclNpZ25lZFNlcmlhbGl6ZWRUeCA9IHNlbmRlclNpZ25lZFR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBzaG91bGQuZXF1YWwoc2VuZGVyU2lnbmVkU2VyaWFsaXplZFR4LCB0ZXN0RGF0YS5zZW5kZXJTaWduZWRTZXJpYWxpemVkVHhIZXgyKTtcblxuICAgICAgY29uc3QgYnVpbGRlcjIgPSBmYWN0b3J5LmZyb20odGVzdERhdGEuc2VuZGVyU2lnbmVkU2VyaWFsaXplZFR4SGV4Mik7XG4gICAgICBidWlsZGVyMi5hZGRTZW5kZXJTaWduYXR1cmUoQnVmZmVyLmZyb20odGVzdERhdGEuc2VuZGVyU2lnMiwgJ2hleCcpKTtcbiAgICAgIGJ1aWxkZXIyLmFkZEZlZVBheWVyU2lnbmF0dXJlKEJ1ZmZlci5mcm9tKHRlc3REYXRhLmZlZVBheWVyU2lnMiwgJ2hleCcpKTtcbiAgICAgIGNvbnN0IGNvbXBsZXRlbHlTaWduZWRUeCA9IGF3YWl0IGJ1aWxkZXIyLmJ1aWxkKCk7XG4gICAgICBzaG91bGQuZXF1YWwoY29tcGxldGVseVNpZ25lZFR4LnRvQnJvYWRjYXN0Rm9ybWF0KCksIHRlc3REYXRhLmNvbXBsZXRlU2lnbmVkU2VyaWFsaXplZEhleDIpO1xuICAgICAgc2hvdWxkLmVxdWFsKGNvbXBsZXRlbHlTaWduZWRUeC5pZCwgJzB4MDY1ZGZlODBlMzExM2Y4YzQ2MzhmMTdiN2YyNTUxNTJmYzUyYzI5YjQyZWQ2MTdjZGZmNzJmZDQxMjg5MTUyYicpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnRmFpbCcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGZhaWwgZm9yIGludmFsaWQgc2VuZGVyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0dmV0OnZ0aG8nKSk7XG4gICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5nZXRUb2tlblRyYW5zYWN0aW9uQnVpbGRlcih0cmFuc2FjdGlvbik7XG4gICAgICBzaG91bGQoKCkgPT4gYnVpbGRlci5zZW5kZXIoJ3JhbmRvbVN0cmluZycpKS50aHJvd0Vycm9yKCdJbnZhbGlkIGFkZHJlc3MgcmFuZG9tU3RyaW5nJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgZm9yIGludmFsaWQgcmVjaXBpZW50JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnkuZ2V0VG9rZW5UcmFuc2FjdGlvbkJ1aWxkZXIoKTtcbiAgICAgIHNob3VsZCgoKSA9PiBidWlsZGVyLnJlY2lwaWVudHMoW3Rlc3REYXRhLmludmFsaWRSZWNpcGllbnRzWzBdXSkpLnRocm93RXJyb3IoJ0ludmFsaWQgYWRkcmVzcyByYW5kb21TdHJpbmcnKTtcbiAgICAgIHNob3VsZCgoKSA9PiBidWlsZGVyLnJlY2lwaWVudHMoW3Rlc3REYXRhLmludmFsaWRSZWNpcGllbnRzWzFdXSkpLnRocm93RXJyb3IoJ1ZhbHVlIGNhbm5vdCBiZSBsZXNzIHRoYW4gemVybycpO1xuICAgICAgc2hvdWxkKCgpID0+IGJ1aWxkZXIucmVjaXBpZW50cyhbdGVzdERhdGEuaW52YWxpZFJlY2lwaWVudHNbMl1dKSkudGhyb3dFcnJvcignSW52YWxpZCBhbW91bnQgZm9ybWF0Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgZm9yIGludmFsaWQgZ2FzIGFtb3VudCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmdldFRva2VuVHJhbnNhY3Rpb25CdWlsZGVyKCk7XG4gICAgICBzaG91bGQoKCkgPT4gYnVpbGRlci5nYXMoLTEpKS50aHJvd0Vycm9yKCdWYWx1ZSBjYW5ub3QgYmUgbGVzcyB0aGFuIHplcm8nKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byBidWlsZCBpZiB0b2tlbiBhZGRyZXNzIGlmIG5vdCBzZXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IG5ldyBUb2tlblRyYW5zYWN0aW9uKGNvaW5zLmdldCgndHZldDp2dGhvJykpO1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRUb2tlblRyYW5zYWN0aW9uQnVpbGRlcih0cmFuc2FjdGlvbik7XG4gICAgICB0eEJ1aWxkZXIuc2VuZGVyKHRlc3REYXRhLmFkZHJlc3Nlcy52YWxpZEFkZHJlc3Nlc1swXSk7XG4gICAgICB0eEJ1aWxkZXIuZ2FzKDIxMDAwKTtcbiAgICAgIHR4QnVpbGRlci5ub25jZSgnNjQyNDgnKTtcbiAgICAgIHR4QnVpbGRlci5ibG9ja1JlZignMHgwMTRlYWQxNDBlNzdiYmMxJyk7XG4gICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbig2NCk7XG4gICAgICB0eEJ1aWxkZXIuZ2FzUHJpY2VDb2VmKDEyOCk7XG4gICAgICB0eEJ1aWxkZXIucmVjaXBpZW50cyh0ZXN0RGF0YS5yZWNpcGllbnRzKTtcbiAgICAgIHR4QnVpbGRlci5hZGRGZWVQYXllckFkZHJlc3ModGVzdERhdGEuZmVlUGF5ZXIuYWRkcmVzcyk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBzaG91bGQuZXF1YWwoZXJyLm1lc3NhZ2UsICdUb2tlbiBhZGRyZXNzIGlzIHJlcXVpcmVkJyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgb24gc2V0dGluZyBpbnZhbGlkIHRva2VuIGFkZHJlc3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IG5ldyBUb2tlblRyYW5zYWN0aW9uKGNvaW5zLmdldCgndHZldDp2dGhvJykpO1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRUb2tlblRyYW5zYWN0aW9uQnVpbGRlcih0cmFuc2FjdGlvbik7XG4gICAgICB0eEJ1aWxkZXIuc2VuZGVyKHRlc3REYXRhLmFkZHJlc3Nlcy52YWxpZEFkZHJlc3Nlc1swXSk7XG4gICAgICB0eEJ1aWxkZXIuZ2FzKDIxMDAwKTtcbiAgICAgIHR4QnVpbGRlci5ub25jZSgnNjQyNDgnKTtcbiAgICAgIHR4QnVpbGRlci5ibG9ja1JlZignMHgwMTRlYWQxNDBlNzdiYmMxJyk7XG4gICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbig2NCk7XG4gICAgICB0eEJ1aWxkZXIuZ2FzUHJpY2VDb2VmKDEyOCk7XG4gICAgICB0eEJ1aWxkZXIucmVjaXBpZW50cyh0ZXN0RGF0YS5yZWNpcGllbnRzKTtcbiAgICAgIHR4QnVpbGRlci5hZGRGZWVQYXllckFkZHJlc3ModGVzdERhdGEuZmVlUGF5ZXIuYWRkcmVzcyk7XG4gICAgICBzaG91bGQoKCkgPT4gdHhCdWlsZGVyLnRva2VuQWRkcmVzcygnSW52YWxpZFRva2VuQWRkcmVzcycpKS50aHJvd0Vycm9yKCdJbnZhbGlkIGFkZHJlc3MgSW52YWxpZFRva2VuQWRkcmVzcycpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../test/transactionBuilder/transferBuilder.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,214 @@
|
|
|
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
|
+
const should_1 = __importDefault(require("should"));
|
|
40
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
41
|
+
const statics_1 = require("@bitgo-beta/statics");
|
|
42
|
+
const src_1 = require("../../src");
|
|
43
|
+
const testData = __importStar(require("../resources/vet"));
|
|
44
|
+
describe('Vet Transfer Transaction', () => {
|
|
45
|
+
const factory = new src_1.TransactionBuilderFactory(statics_1.coins.get('tvet'));
|
|
46
|
+
describe('Vet Coin Transfer Transaction', () => {
|
|
47
|
+
describe('Succeed', () => {
|
|
48
|
+
it('should build a transfer tx', async function () {
|
|
49
|
+
const transaction = new src_1.Transaction(statics_1.coins.get('tvet'));
|
|
50
|
+
const txBuilder = factory.getTransferBuilder(transaction);
|
|
51
|
+
txBuilder.sender(testData.addresses.validAddresses[0]);
|
|
52
|
+
txBuilder.recipients(testData.recipients);
|
|
53
|
+
txBuilder.gas(21000);
|
|
54
|
+
txBuilder.nonce('64248');
|
|
55
|
+
txBuilder.blockRef('0x014ead140e77bbc1');
|
|
56
|
+
txBuilder.addFeePayerAddress(testData.feePayer.address);
|
|
57
|
+
txBuilder.expiration(64);
|
|
58
|
+
txBuilder.gasPriceCoef(128);
|
|
59
|
+
const tx = (await txBuilder.build());
|
|
60
|
+
should_1.default.equal(tx.sender, testData.addresses.validAddresses[0]);
|
|
61
|
+
should_1.default.equal(tx.recipients[0].address, testData.recipients[0].address);
|
|
62
|
+
should_1.default.equal(tx.recipients[0].amount, testData.recipients[0].amount);
|
|
63
|
+
should_1.default.equal(tx.gas, 21000);
|
|
64
|
+
should_1.default.equal(tx.getFee(), '315411764705882352');
|
|
65
|
+
should_1.default.equal(tx.nonce, '64248');
|
|
66
|
+
should_1.default.equal(tx.expiration, 64);
|
|
67
|
+
should_1.default.equal(tx.type, sdk_core_1.TransactionType.Send);
|
|
68
|
+
tx.inputs.length.should.equal(1);
|
|
69
|
+
tx.inputs[0].should.deepEqual({
|
|
70
|
+
address: testData.addresses.validAddresses[0],
|
|
71
|
+
value: testData.recipients[0].amount,
|
|
72
|
+
coin: 'tvet',
|
|
73
|
+
});
|
|
74
|
+
tx.outputs.length.should.equal(1);
|
|
75
|
+
tx.outputs[0].should.deepEqual({
|
|
76
|
+
address: testData.recipients[0].address,
|
|
77
|
+
value: testData.recipients[0].amount,
|
|
78
|
+
coin: 'tvet',
|
|
79
|
+
});
|
|
80
|
+
const rawTx = tx.toBroadcastFormat();
|
|
81
|
+
should_1.default.equal(txBuilder.isValidRawTransaction(rawTx), true);
|
|
82
|
+
rawTx.should.equal(testData.UNSIGNED_TRANSACTION_2);
|
|
83
|
+
});
|
|
84
|
+
it('should build and send a signed tx', async function () {
|
|
85
|
+
const txBuilder = factory.from(testData.SPONSORED_TRANSACTION);
|
|
86
|
+
txBuilder.getNonce().should.equal('186037');
|
|
87
|
+
const tx = (await txBuilder.build());
|
|
88
|
+
should_1.default.equal(tx.type, sdk_core_1.TransactionType.Send);
|
|
89
|
+
tx.inputs.length.should.equal(1);
|
|
90
|
+
tx.inputs[0].should.deepEqual({
|
|
91
|
+
address: testData.addresses.validAddresses[0],
|
|
92
|
+
value: testData.AMOUNT.toString(),
|
|
93
|
+
coin: 'tvet',
|
|
94
|
+
});
|
|
95
|
+
tx.outputs.length.should.equal(1);
|
|
96
|
+
tx.outputs[0].should.deepEqual({
|
|
97
|
+
address: testData.recipients[0].address,
|
|
98
|
+
value: testData.AMOUNT.toString(),
|
|
99
|
+
coin: 'tvet',
|
|
100
|
+
});
|
|
101
|
+
should_1.default.equal(tx.id, '0x6d842d5dc5d59d4e8f0a8ec2757b430d1f19c06766fbc5b3db5ebac8a067a439');
|
|
102
|
+
should_1.default.equal(tx.gas, 21000);
|
|
103
|
+
should_1.default.equal(tx.getFee(), '315411764705882352');
|
|
104
|
+
should_1.default.equal(tx.nonce, 186037);
|
|
105
|
+
should_1.default.equal(tx.expiration, 64);
|
|
106
|
+
should_1.default.equal(tx.type, sdk_core_1.TransactionType.Send);
|
|
107
|
+
const rawTx = tx.toBroadcastFormat();
|
|
108
|
+
should_1.default.equal(txBuilder.isValidRawTransaction(rawTx), true);
|
|
109
|
+
should_1.default.equal(rawTx, testData.SPONSORED_TRANSACTION);
|
|
110
|
+
});
|
|
111
|
+
it('should succeed to validate a valid signablePayload', async function () {
|
|
112
|
+
const transaction = new src_1.Transaction(statics_1.coins.get('tvet'));
|
|
113
|
+
const txBuilder = factory.getTransferBuilder(transaction);
|
|
114
|
+
txBuilder.sender(testData.addresses.validAddresses[0]);
|
|
115
|
+
txBuilder.recipients(testData.recipients);
|
|
116
|
+
txBuilder.gas(21000);
|
|
117
|
+
txBuilder.nonce('64248');
|
|
118
|
+
txBuilder.expiration(64);
|
|
119
|
+
txBuilder.blockRef('0x014ead140e77bbc1');
|
|
120
|
+
txBuilder.gasPriceCoef(128);
|
|
121
|
+
txBuilder.addFeePayerAddress(testData.feePayer.address);
|
|
122
|
+
const tx = (await txBuilder.build());
|
|
123
|
+
const signablePayload = tx.signablePayload;
|
|
124
|
+
should_1.default.equal(signablePayload.toString('hex'), 'f72788014ead140e77bbc140e0df94e59f1cea4e0fef511e3d0f4eec44adf19c4cbeec88016345785d8a00008081808252088082faf8c101');
|
|
125
|
+
});
|
|
126
|
+
it('should build a unsigned tx and validate its toJson', async function () {
|
|
127
|
+
const transaction = new src_1.Transaction(statics_1.coins.get('tvet'));
|
|
128
|
+
const txBuilder = factory.getTransferBuilder(transaction);
|
|
129
|
+
txBuilder.sender(testData.addresses.validAddresses[0]);
|
|
130
|
+
txBuilder.recipients(testData.recipients);
|
|
131
|
+
txBuilder.gas(21000);
|
|
132
|
+
txBuilder.nonce('64248');
|
|
133
|
+
txBuilder.expiration(400);
|
|
134
|
+
txBuilder.blockRef('0x014ead140e77bbc1');
|
|
135
|
+
txBuilder.gasPriceCoef(128);
|
|
136
|
+
txBuilder.addFeePayerAddress(testData.feePayer.address);
|
|
137
|
+
const tx = (await txBuilder.build());
|
|
138
|
+
const toJson = tx.toJson();
|
|
139
|
+
should_1.default.equal(toJson.sender, testData.addresses.validAddresses[0]);
|
|
140
|
+
should_1.default.deepEqual(toJson.recipients, [
|
|
141
|
+
{
|
|
142
|
+
address: testData.recipients[0].address,
|
|
143
|
+
amount: testData.recipients[0].amount,
|
|
144
|
+
},
|
|
145
|
+
]);
|
|
146
|
+
should_1.default.equal(toJson.nonce, '64248');
|
|
147
|
+
should_1.default.equal(toJson.gas, 21000);
|
|
148
|
+
should_1.default.equal(toJson.gasPriceCoef, 128);
|
|
149
|
+
should_1.default.equal(toJson.expiration, 400);
|
|
150
|
+
should_1.default.equal(toJson.feePayer, testData.feePayer.address);
|
|
151
|
+
});
|
|
152
|
+
it('should build a signed tx and validate its toJson', async function () {
|
|
153
|
+
const txBuilder = factory.from(testData.SPONSORED_TRANSACTION);
|
|
154
|
+
const tx = (await txBuilder.build());
|
|
155
|
+
const toJson = tx.toJson();
|
|
156
|
+
should_1.default.equal(toJson.id, '0x6d842d5dc5d59d4e8f0a8ec2757b430d1f19c06766fbc5b3db5ebac8a067a439');
|
|
157
|
+
should_1.default.equal(toJson.sender, testData.addresses.validAddresses[0]);
|
|
158
|
+
should_1.default.deepEqual(toJson.recipients, [
|
|
159
|
+
{
|
|
160
|
+
address: testData.addresses.validAddresses[1].toLowerCase(),
|
|
161
|
+
amount: testData.AMOUNT.toString(),
|
|
162
|
+
},
|
|
163
|
+
]);
|
|
164
|
+
should_1.default.equal(toJson.nonce, '186037');
|
|
165
|
+
should_1.default.equal(toJson.gas, 21000);
|
|
166
|
+
should_1.default.equal(toJson.gasPriceCoef, 128);
|
|
167
|
+
should_1.default.equal(toJson.expiration, 64);
|
|
168
|
+
});
|
|
169
|
+
it('should build a unsigned tx then add sender sig and build again', async function () {
|
|
170
|
+
const transaction = new src_1.Transaction(statics_1.coins.get('tvet'));
|
|
171
|
+
const txBuilder = factory.getTransferBuilder(transaction);
|
|
172
|
+
txBuilder.sender(testData.addresses.validAddresses[2]);
|
|
173
|
+
txBuilder.recipients(testData.recipients);
|
|
174
|
+
txBuilder.gas(21000);
|
|
175
|
+
txBuilder.nonce('64248');
|
|
176
|
+
txBuilder.blockRef('0x014ead140e77bbc1');
|
|
177
|
+
txBuilder.addFeePayerAddress(testData.feePayer.address);
|
|
178
|
+
txBuilder.expiration(64);
|
|
179
|
+
txBuilder.gasPriceCoef(128);
|
|
180
|
+
const tx = (await txBuilder.build());
|
|
181
|
+
const unsignedSerializedTx = tx.toBroadcastFormat();
|
|
182
|
+
const builder1 = factory.from(unsignedSerializedTx);
|
|
183
|
+
builder1.addSenderSignature(Buffer.from(testData.senderSig, 'hex'));
|
|
184
|
+
const senderSignedTx = await builder1.build();
|
|
185
|
+
const senderSignedSerializedTx = senderSignedTx.toBroadcastFormat();
|
|
186
|
+
should_1.default.equal(senderSignedSerializedTx, testData.senderSignedSerializedTxHex);
|
|
187
|
+
const builder2 = factory.from(testData.senderSignedSerializedTxHex);
|
|
188
|
+
builder2.addSenderSignature(Buffer.from(testData.senderSig, 'hex'));
|
|
189
|
+
builder2.addFeePayerSignature(Buffer.from(testData.feePayerSig, 'hex'));
|
|
190
|
+
const completelySignedTx = await builder2.build();
|
|
191
|
+
should_1.default.equal(completelySignedTx.toBroadcastFormat(), testData.completeSignedSerializedHex);
|
|
192
|
+
should_1.default.equal(completelySignedTx.id, '0xb988d614d3c24420cb2183239ab601b53e63ff4c81cea1e4888bc9d0aa6aad13');
|
|
193
|
+
});
|
|
194
|
+
});
|
|
195
|
+
describe('Fail', () => {
|
|
196
|
+
it('should fail for invalid sender', async function () {
|
|
197
|
+
const transaction = new src_1.Transaction(statics_1.coins.get('tvet'));
|
|
198
|
+
const builder = factory.getTransferBuilder(transaction);
|
|
199
|
+
(0, should_1.default)(() => builder.sender('randomString')).throwError('Invalid address randomString');
|
|
200
|
+
});
|
|
201
|
+
it('should fail for invalid recipient', async function () {
|
|
202
|
+
const builder = factory.getTransferBuilder();
|
|
203
|
+
(0, should_1.default)(() => builder.recipients([testData.invalidRecipients[0]])).throwError('Invalid address randomString');
|
|
204
|
+
(0, should_1.default)(() => builder.recipients([testData.invalidRecipients[1]])).throwError('Value cannot be less than zero');
|
|
205
|
+
(0, should_1.default)(() => builder.recipients([testData.invalidRecipients[2]])).throwError('Invalid amount format');
|
|
206
|
+
});
|
|
207
|
+
it('should fail for invalid gas amount', async function () {
|
|
208
|
+
const builder = factory.getTransferBuilder();
|
|
209
|
+
(0, should_1.default)(() => builder.gas(-1)).throwError('Value cannot be less than zero');
|
|
210
|
+
});
|
|
211
|
+
});
|
|
212
|
+
});
|
|
213
|
+
});
|
|
214
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC90cmFuc2FjdGlvbkJ1aWxkZXIvdHJhbnNmZXJCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG1EQUF1RDtBQUN2RCxpREFBNEM7QUFDNUMsbUNBQW1FO0FBQ25FLDJEQUE2QztBQUU3QyxRQUFRLENBQUMsMEJBQTBCLEVBQUUsR0FBRyxFQUFFO0lBQ3hDLE1BQU0sT0FBTyxHQUFHLElBQUksK0JBQXlCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBRWpFLFFBQVEsQ0FBQywrQkFBK0IsRUFBRSxHQUFHLEVBQUU7UUFDN0MsUUFBUSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7WUFDdkIsRUFBRSxDQUFDLDRCQUE0QixFQUFFLEtBQUs7Z0JBQ3BDLE1BQU0sV0FBVyxHQUFHLElBQUksaUJBQVcsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDMUQsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2RCxTQUFTLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDMUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDckIsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDekIsU0FBUyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUN6QyxTQUFTLENBQUMsa0JBQWtCLENBQUMsUUFBUSxD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QUFDLENBQUM7Z0JBQzdHLElBQUEsZ0JBQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO2dCQUMvRyxJQUFBLGdCQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsdUJBQXVCLENBQUMsQ0FBQztZQUN4RyxDQUFDLENBQUMsQ0FBQztZQUVILEVBQUUsQ0FBQyxvQ0FBb0MsRUFBRSxLQUFLO2dCQUM1QyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDN0MsSUFBQSxnQkFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1lBQzdFLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksIFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vc3JjJztcbmltcG9ydCAqIGFzIHRlc3REYXRhIGZyb20gJy4uL3Jlc291cmNlcy92ZXQnO1xuXG5kZXNjcmliZSgnVmV0IFRyYW5zZmVyIFRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0dmV0JykpO1xuXG4gIGRlc2NyaWJlKCdWZXQgQ29pbiBUcmFuc2ZlciBUcmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBkZXNjcmliZSgnU3VjY2VlZCcsICgpID0+IHtcbiAgICAgIGl0KCdzaG91bGQgYnVpbGQgYSB0cmFuc2ZlciB0eCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0dmV0JykpO1xuICAgICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFRyYW5zZmVyQnVpbGRlcih0cmFuc2FjdGlvbik7XG4gICAgICAgIHR4QnVpbGRlci5zZW5kZXIodGVzdERhdGEuYWRkcmVzc2VzLnZhbGlkQWRkcmVzc2VzWzBdKTtcbiAgICAgICAgdHhCdWlsZGVyLnJlY2lwaWVudHModGVzdERhdGEucmVjaXBpZW50cyk7XG4gICAgICAgIHR4QnVpbGRlci5nYXMoMjEwMDApO1xuICAgICAgICB0eEJ1aWxkZXIubm9uY2UoJzY0MjQ4Jyk7XG4gICAgICAgIHR4QnVpbGRlci5ibG9ja1JlZignMHgwMTRlYWQxNDBlNzdiYmMxJyk7XG4gICAgICAgIHR4QnVpbGRlci5hZGRGZWVQYXllckFkZHJlc3ModGVzdERhdGEuZmVlUGF5ZXIuYWRkcmVzcyk7XG4gICAgICAgIHR4QnVpbGRlci5leHBpcmF0aW9uKDY0KTtcbiAgICAgICAgdHhCdWlsZGVyLmdhc1ByaWNlQ29lZigxMjgpO1xuICAgICAgICBjb25zdCB0eCA9IChhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKSkgYXMgVHJhbnNhY3Rpb247XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC5zZW5kZXIsIHRlc3REYXRhLmFkZHJlc3Nlcy52YWxpZEFkZHJlc3Nlc1swXSk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC5yZWNpcGllbnRzWzBdLmFkZHJlc3MsIHRlc3REYXRhLnJlY2lwaWVudHNbMF0uYWRkcmVzcyk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC5yZWNpcGllbnRzWzBdLmFtb3VudCwgdGVzdERhdGEucmVjaXBpZW50c1swXS5hbW91bnQpO1xuICAgICAgICBzaG91bGQuZXF1YWwodHguZ2FzLCAyMTAwMCk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC5nZXRGZWUoKSwgJzMxNTQxMTc2NDcwNTg4MjM1MicpO1xuICAgICAgICBzaG91bGQuZXF1YWwodHgubm9uY2UsICc2NDI0OCcpO1xuICAgICAgICBzaG91bGQuZXF1YWwodHguZXhwaXJhdGlvbiwgNjQpO1xuICAgICAgICBzaG91bGQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgICB0eC5pbnB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgICAgdHguaW5wdXRzWzBdLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICAgIGFkZHJlc3M6IHRlc3REYXRhLmFkZHJlc3Nlcy52YWxpZEFkZHJlc3Nlc1swXSxcbiAgICAgICAgICB2YWx1ZTogdGVzdERhdGEucmVjaXBpZW50c1swXS5hbW91bnQsXG4gICAgICAgICAgY29pbjogJ3R2ZXQnLFxuICAgICAgICB9KTtcbiAgICAgICAgdHgub3V0cHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgICB0eC5vdXRwdXRzWzBdLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICAgIGFkZHJlc3M6IHRlc3REYXRhLnJlY2lwaWVudHNbMF0uYWRkcmVzcyxcbiAgICAgICAgICB2YWx1ZTogdGVzdERhdGEucmVjaXBpZW50c1swXS5hbW91bnQsXG4gICAgICAgICAgY29pbjogJ3R2ZXQnLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcmF3VHggPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgICBzaG91bGQuZXF1YWwodHhCdWlsZGVyLmlzVmFsaWRSYXdUcmFuc2FjdGlvbihyYXdUeCksIHRydWUpO1xuICAgICAgICByYXdUeC5zaG91bGQuZXF1YWwodGVzdERhdGEuVU5TSUdORURfVFJBTlNBQ1RJT05fMik7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBidWlsZCBhbmQgc2VuZCBhIHNpZ25lZCB0eCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5mcm9tKHRlc3REYXRhLlNQT05TT1JFRF9UUkFOU0FDVElPTik7XG4gICAgICAgIHR4QnVpbGRlci5nZXROb25jZSgpLnNob3VsZC5lcXVhbCgnMTg2MDM3Jyk7XG5cbiAgICAgICAgY29uc3QgdHggPSAoYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuICAgICAgICBzaG91bGQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgICB0eC5pbnB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgICAgdHguaW5wdXRzWzBdLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICAgIGFkZHJlc3M6IHRlc3REYXRhLmFkZHJlc3Nlcy52YWxpZEFkZHJlc3Nlc1swXSxcbiAgICAgICAgICB2YWx1ZTogdGVzdERhdGEuQU1PVU5ULnRvU3RyaW5nKCksXG4gICAgICAgICAgY29pbjogJ3R2ZXQnLFxuICAgICAgICB9KTtcbiAgICAgICAgdHgub3V0cHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgICB0eC5vdXRwdXRzWzBdLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICAgIGFkZHJlc3M6IHRlc3REYXRhLnJlY2lwaWVudHNbMF0uYWRkcmVzcyxcbiAgICAgICAgICB2YWx1ZTogdGVzdERhdGEuQU1PVU5ULnRvU3RyaW5nKCksXG4gICAgICAgICAgY29pbjogJ3R2ZXQnLFxuICAgICAgICB9KTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LmlkLCAnMHg2ZDg0MmQ1ZGM1ZDU5ZDRlOGYwYThlYzI3NTdiNDMwZDFmMTljMDY3NjZmYmM1YjNkYjVlYmFjOGEwNjdhNDM5Jyk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC5nYXMsIDIxMDAwKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LmdldEZlZSgpLCAnMzE1NDExNzY0NzA1ODgyMzUyJyk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC5ub25jZSwgMTg2MDM3KTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LmV4cGlyYXRpb24sIDY0KTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICAgICAgY29uc3QgcmF3VHggPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgICBzaG91bGQuZXF1YWwodHhCdWlsZGVyLmlzVmFsaWRSYXdUcmFuc2FjdGlvbihyYXdUeCksIHRydWUpO1xuICAgICAgICBzaG91bGQuZXF1YWwocmF3VHgsIHRlc3REYXRhLlNQT05TT1JFRF9UUkFOU0FDVElPTik7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBzdWNjZWVkIHRvIHZhbGlkYXRlIGEgdmFsaWQgc2lnbmFibGVQYXlsb2FkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3R2ZXQnKSk7XG4gICAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKHRyYW5zYWN0aW9uKTtcbiAgICAgICAgdHhCdWlsZGVyLnNlbmRlcih0ZXN0RGF0YS5hZGRyZXNzZXMudmFsaWRBZGRyZXNzZXNbMF0pO1xuICAgICAgICB0eEJ1aWxkZXIucmVjaXBpZW50cyh0ZXN0RGF0YS5yZWNpcGllbnRzKTtcbiAgICAgICAgdHhCdWlsZGVyLmdhcygyMTAwMCk7XG4gICAgICAgIHR4QnVpbGRlci5ub25jZSgnNjQyNDgnKTtcbiAgICAgICAgdHhCdWlsZGVyLmV4cGlyYXRpb24oNjQpO1xuICAgICAgICB0eEJ1aWxkZXIuYmxvY2tSZWYoJzB4MDE0ZWFkMTQwZTc3YmJjMScpO1xuICAgICAgICB0eEJ1aWxkZXIuZ2FzUHJpY2VDb2VmKDEyOCk7XG4gICAgICAgIHR4QnVpbGRlci5hZGRGZWVQYXllckFkZHJlc3ModGVzdERhdGEuZmVlUGF5ZXIuYWRkcmVzcyk7XG4gICAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IHR4QnVpbGRlci5idWlsZCgpKSBhcyBUcmFuc2FjdGlvbjtcbiAgICAgICAgY29uc3Qgc2lnbmFibGVQYXlsb2FkID0gdHguc2lnbmFibGVQYXlsb2FkO1xuICAgICAgICBzaG91bGQuZXF1YWwoXG4gICAgICAgICAgc2lnbmFibGVQYXlsb2FkLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgICAnZjcyNzg4MDE0ZWFkMTQwZTc3YmJjMTQwZTBkZjk0ZTU5ZjFjZWE0ZTBmZWY1MTFlM2QwZjRlZWM0NGFkZjE5YzRjYmVlYzg4MDE2MzQ1Nzg1ZDhhMDAwMDgwODE4MDgyNTIwODgwODJmYWY4YzEwMSdcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGJ1aWxkIGEgdW5zaWduZWQgdHggYW5kIHZhbGlkYXRlIGl0cyB0b0pzb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndHZldCcpKTtcbiAgICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRUcmFuc2ZlckJ1aWxkZXIodHJhbnNhY3Rpb24pO1xuICAgICAgICB0eEJ1aWxkZXIuc2VuZGVyKHRlc3REYXRhLmFkZHJlc3Nlcy52YWxpZEFkZHJlc3Nlc1swXSk7XG4gICAgICAgIHR4QnVpbGRlci5yZWNpcGllbnRzKHRlc3REYXRhLnJlY2lwaWVudHMpO1xuICAgICAgICB0eEJ1aWxkZXIuZ2FzKDIxMDAwKTtcbiAgICAgICAgdHhCdWlsZGVyLm5vbmNlKCc2NDI0OCcpO1xuICAgICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbig0MDApO1xuICAgICAgICB0eEJ1aWxkZXIuYmxvY2tSZWYoJzB4MDE0ZWFkMTQwZTc3YmJjMScpO1xuICAgICAgICB0eEJ1aWxkZXIuZ2FzUHJpY2VDb2VmKDEyOCk7XG4gICAgICAgIHR4QnVpbGRlci5hZGRGZWVQYXllckFkZHJlc3ModGVzdERhdGEuZmVlUGF5ZXIuYWRkcmVzcyk7XG4gICAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IHR4QnVpbGRlci5idWlsZCgpKSBhcyBUcmFuc2FjdGlvbjtcbiAgICAgICAgY29uc3QgdG9Kc29uID0gdHgudG9Kc29uKCk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0b0pzb24uc2VuZGVyLCB0ZXN0RGF0YS5hZGRyZXNzZXMudmFsaWRBZGRyZXNzZXNbMF0pO1xuICAgICAgICBzaG91bGQuZGVlcEVxdWFsKHRvSnNvbi5yZWNpcGllbnRzLCBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogdGVzdERhdGEucmVjaXBpZW50c1swXS5hZGRyZXNzLFxuICAgICAgICAgICAgYW1vdW50OiB0ZXN0RGF0YS5yZWNpcGllbnRzWzBdLmFtb3VudCxcbiAgICAgICAgICB9LFxuICAgICAgICBdKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHRvSnNvbi5ub25jZSwgJzY0MjQ4Jyk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0b0pzb24uZ2FzLCAyMTAwMCk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0b0pzb24uZ2FzUHJpY2VDb2VmLCAxMjgpO1xuICAgICAgICBzaG91bGQuZXF1YWwodG9Kc29uLmV4cGlyYXRpb24sIDQwMCk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0b0pzb24uZmVlUGF5ZXIsIHRlc3REYXRhLmZlZVBheWVyLmFkZHJlc3MpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgYnVpbGQgYSBzaWduZWQgdHggYW5kIHZhbGlkYXRlIGl0cyB0b0pzb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZnJvbSh0ZXN0RGF0YS5TUE9OU09SRURfVFJBTlNBQ1RJT04pO1xuICAgICAgICBjb25zdCB0eCA9IChhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKSkgYXMgVHJhbnNhY3Rpb247XG4gICAgICAgIGNvbnN0IHRvSnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgICBzaG91bGQuZXF1YWwodG9Kc29uLmlkLCAnMHg2ZDg0MmQ1ZGM1ZDU5ZDRlOGYwYThlYzI3NTdiNDMwZDFmMTljMDY3NjZmYmM1YjNkYjVlYmFjOGEwNjdhNDM5Jyk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0b0pzb24uc2VuZGVyLCB0ZXN0RGF0YS5hZGRyZXNzZXMudmFsaWRBZGRyZXNzZXNbMF0pO1xuICAgICAgICBzaG91bGQuZGVlcEVxdWFsKHRvSnNvbi5yZWNpcGllbnRzLCBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogdGVzdERhdGEuYWRkcmVzc2VzLnZhbGlkQWRkcmVzc2VzWzFdLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgICBhbW91bnQ6IHRlc3REYXRhLkFNT1VOVC50b1N0cmluZygpLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pO1xuICAgICAgICBzaG91bGQuZXF1YWwodG9Kc29uLm5vbmNlLCAnMTg2MDM3Jyk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0b0pzb24uZ2FzLCAyMTAwMCk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0b0pzb24uZ2FzUHJpY2VDb2VmLCAxMjgpO1xuICAgICAgICBzaG91bGQuZXF1YWwodG9Kc29uLmV4cGlyYXRpb24sIDY0KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGJ1aWxkIGEgdW5zaWduZWQgdHggdGhlbiBhZGQgc2VuZGVyIHNpZyBhbmQgYnVpbGQgYWdhaW4nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndHZldCcpKTtcbiAgICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRUcmFuc2ZlckJ1aWxkZXIodHJhbnNhY3Rpb24pO1xuICAgICAgICB0eEJ1aWxkZXIuc2VuZGVyKHRlc3REYXRhLmFkZHJlc3Nlcy52YWxpZEFkZHJlc3Nlc1syXSk7XG4gICAgICAgIHR4QnVpbGRlci5yZWNpcGllbnRzKHRlc3REYXRhLnJlY2lwaWVudHMpO1xuICAgICAgICB0eEJ1aWxkZXIuZ2FzKDIxMDAwKTtcbiAgICAgICAgdHhCdWlsZGVyLm5vbmNlKCc2NDI0OCcpO1xuICAgICAgICB0eEJ1aWxkZXIuYmxvY2tSZWYoJzB4MDE0ZWFkMTQwZTc3YmJjMScpO1xuICAgICAgICB0eEJ1aWxkZXIuYWRkRmVlUGF5ZXJBZGRyZXNzKHRlc3REYXRhLmZlZVBheWVyLmFkZHJlc3MpO1xuICAgICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbig2NCk7XG4gICAgICAgIHR4QnVpbGRlci5nYXNQcmljZUNvZWYoMTI4KTtcbiAgICAgICAgY29uc3QgdHggPSAoYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuICAgICAgICBjb25zdCB1bnNpZ25lZFNlcmlhbGl6ZWRUeCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG5cbiAgICAgICAgY29uc3QgYnVpbGRlcjEgPSBmYWN0b3J5LmZyb20odW5zaWduZWRTZXJpYWxpemVkVHgpO1xuICAgICAgICBidWlsZGVyMS5hZGRTZW5kZXJTaWduYXR1cmUoQnVmZmVyLmZyb20odGVzdERhdGEuc2VuZGVyU2lnLCAnaGV4JykpO1xuICAgICAgICBjb25zdCBzZW5kZXJTaWduZWRUeCA9IGF3YWl0IGJ1aWxkZXIxLmJ1aWxkKCk7XG4gICAgICAgIGNvbnN0IHNlbmRlclNpZ25lZFNlcmlhbGl6ZWRUeCA9IHNlbmRlclNpZ25lZFR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChzZW5kZXJTaWduZWRTZXJpYWxpemVkVHgsIHRlc3REYXRhLnNlbmRlclNpZ25lZFNlcmlhbGl6ZWRUeEhleCk7XG5cbiAgICAgICAgY29uc3QgYnVpbGRlcjIgPSBmYWN0b3J5LmZyb20odGVzdERhdGEuc2VuZGVyU2lnbmVkU2VyaWFsaXplZFR4SGV4KTtcbiAgICAgICAgYnVpbGRlcjIuYWRkU2VuZGVyU2lnbmF0dXJlKEJ1ZmZlci5mcm9tKHRlc3REYXRhLnNlbmRlclNpZywgJ2hleCcpKTtcbiAgICAgICAgYnVpbGRlcjIuYWRkRmVlUGF5ZXJTaWduYXR1cmUoQnVmZmVyLmZyb20odGVzdERhdGEuZmVlUGF5ZXJTaWcsICdoZXgnKSk7XG4gICAgICAgIGNvbnN0IGNvbXBsZXRlbHlTaWduZWRUeCA9IGF3YWl0IGJ1aWxkZXIyLmJ1aWxkKCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChjb21wbGV0ZWx5U2lnbmVkVHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgdGVzdERhdGEuY29tcGxldGVTaWduZWRTZXJpYWxpemVkSGV4KTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKGNvbXBsZXRlbHlTaWduZWRUeC5pZCwgJzB4Yjk4OGQ2MTRkM2MyNDQyMGNiMjE4MzIzOWFiNjAxYjUzZTYzZmY0YzgxY2VhMWU0ODg4YmM5ZDBhYTZhYWQxMycpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnRmFpbCcsICgpID0+IHtcbiAgICAgIGl0KCdzaG91bGQgZmFpbCBmb3IgaW52YWxpZCBzZW5kZXInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndHZldCcpKTtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKHRyYW5zYWN0aW9uKTtcbiAgICAgICAgc2hvdWxkKCgpID0+IGJ1aWxkZXIuc2VuZGVyKCdyYW5kb21TdHJpbmcnKSkudGhyb3dFcnJvcignSW52YWxpZCBhZGRyZXNzIHJhbmRvbVN0cmluZycpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgZmFpbCBmb3IgaW52YWxpZCByZWNpcGllbnQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmdldFRyYW5zZmVyQnVpbGRlcigpO1xuICAgICAgICBzaG91bGQoKCkgPT4gYnVpbGRlci5yZWNpcGllbnRzKFt0ZXN0RGF0YS5pbnZhbGlkUmVjaXBpZW50c1swXV0pKS50aHJvd0Vycm9yKCdJbnZhbGlkIGFkZHJlc3MgcmFuZG9tU3RyaW5nJyk7XG4gICAgICAgIHNob3VsZCgoKSA9PiBidWlsZGVyLnJlY2lwaWVudHMoW3Rlc3REYXRhLmludmFsaWRSZWNpcGllbnRzWzFdXSkpLnRocm93RXJyb3IoJ1ZhbHVlIGNhbm5vdCBiZSBsZXNzIHRoYW4gemVybycpO1xuICAgICAgICBzaG91bGQoKCkgPT4gYnVpbGRlci5yZWNpcGllbnRzKFt0ZXN0RGF0YS5pbnZhbGlkUmVjaXBpZW50c1syXV0pKS50aHJvd0Vycm9yKCdJbnZhbGlkIGFtb3VudCBmb3JtYXQnKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGZhaWwgZm9yIGludmFsaWQgZ2FzIGFtb3VudCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICAgIHNob3VsZCgoKSA9PiBidWlsZGVyLmdhcygtMSkpLnRocm93RXJyb3IoJ1ZhbHVlIGNhbm5vdCBiZSBsZXNzIHRoYW4gemVybycpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyPair.d.ts","sourceRoot":"","sources":["../../../test/unit/keyPair.ts"],"names":[],"mappings":""}
|