ln-service 53.7.1 → 53.7.2

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.
@@ -26,526 +26,530 @@ test('Subscribe to forwards', async ({end, equal, rejects, strictSame}) => {
26
26
 
27
27
  const [{generate, lnd}, target, remote] = nodes;
28
28
 
29
- const {features} = await getWalletInfo({lnd});
30
- const testSub = subscribeToForwards({lnd});
31
-
32
- const isAnchors = !!features.find(n => n.bit === anchorsFeatureBit);
33
-
34
- const controlChannel = await setupChannel({generate, lnd, to: target});
35
-
36
- const targetChannel = await setupChannel({
37
- generate: target.generate,
38
- give: 5e5,
39
- lnd: target.lnd,
40
- to: remote,
41
- });
42
-
43
- await addPeer({lnd, public_key: remote.id, socket: remote.socket});
44
-
45
- await delay(3000);
46
-
47
- const controlErrors = [];
48
- const controlForwards = [];
49
- const controlSub = subscribeToForwards({lnd});
50
- const targetErrors = [];
51
- const targetForwards = [];
52
- const targetSub = subscribeToForwards({lnd: target.lnd});
53
- const remoteErrors = [];
54
- const remoteForwards = [];
55
- const remoteSub = subscribeToForwards({lnd: remote.lnd});
56
-
57
- controlSub.on('error', err => controlErrors.push(err));
58
- controlSub.on('forward', forward => controlForwards.push(forward));
59
- targetSub.on('error', err => targetErrors.push(err));
60
- targetSub.on('forward', forward => targetForwards.push(forward));
61
- remoteSub.on('error', err => remoteErrors.push(err));
62
- remoteSub.on('forward', forward => remoteForwards.push(forward));
63
-
64
- await asyncRetry({interval, times}, async () => {
65
- // Pay the remote through the target
66
- await payViaPaymentRequest({
67
- lnd,
68
- request: (await createInvoice({lnd: remote.lnd, tokens})).request,
29
+ try {
30
+ const {features} = await getWalletInfo({lnd});
31
+ const testSub = subscribeToForwards({lnd});
32
+
33
+ const isAnchors = !!features.find(n => n.bit === anchorsFeatureBit);
34
+
35
+ const controlChannel = await setupChannel({generate, lnd, to: target});
36
+
37
+ const targetChannel = await setupChannel({
38
+ generate: target.generate,
39
+ give: 5e5,
40
+ lnd: target.lnd,
41
+ to: remote,
69
42
  });
70
- });
71
43
 
72
- const [channel] = (await getChannels({lnd: remote.lnd})).channels;
44
+ await addPeer({lnd, public_key: remote.id, socket: remote.socket});
45
+
46
+ await delay(3000);
47
+
48
+ const controlErrors = [];
49
+ const controlForwards = [];
50
+ const controlSub = subscribeToForwards({lnd});
51
+ const targetErrors = [];
52
+ const targetForwards = [];
53
+ const targetSub = subscribeToForwards({lnd: target.lnd});
54
+ const remoteErrors = [];
55
+ const remoteForwards = [];
56
+ const remoteSub = subscribeToForwards({lnd: remote.lnd});
57
+
58
+ controlSub.on('error', err => controlErrors.push(err));
59
+ controlSub.on('forward', forward => controlForwards.push(forward));
60
+ targetSub.on('error', err => targetErrors.push(err));
61
+ targetSub.on('forward', forward => targetForwards.push(forward));
62
+ remoteSub.on('error', err => remoteErrors.push(err));
63
+ remoteSub.on('forward', forward => remoteForwards.push(forward));
64
+
65
+ await asyncRetry({interval, times}, async () => {
66
+ // Pay the remote through the target
67
+ await payViaPaymentRequest({
68
+ lnd,
69
+ request: (await createInvoice({lnd: remote.lnd, tokens})).request,
70
+ });
71
+ });
73
72
 
74
- const tooMuchInvoice = await createInvoice({
75
- lnd: remote.lnd,
76
- tokens: channel.remote_balance,
77
- });
73
+ const [channel] = (await getChannels({lnd: remote.lnd})).channels;
78
74
 
75
+ const tooMuchInvoice = await createInvoice({
76
+ lnd: remote.lnd,
77
+ tokens: channel.remote_balance,
78
+ });
79
79
 
80
- await rejects(
81
- payViaPaymentRequest({lnd, request: tooMuchInvoice.request}),
82
- [503, 'PaymentPathfindingFailedToFindPossibleRoute'],
83
- 'TempChan fail'
84
- );
85
80
 
86
- const deadInvoice = await createInvoice({tokens, lnd: target.lnd});
81
+ await rejects(
82
+ payViaPaymentRequest({lnd, request: tooMuchInvoice.request}),
83
+ [503, 'PaymentPathfindingFailedToFindPossibleRoute'],
84
+ 'TempChan fail'
85
+ );
87
86
 
88
- await cancelHodlInvoice({id: deadInvoice.id, lnd: target.lnd});
87
+ const deadInvoice = await createInvoice({tokens, lnd: target.lnd});
89
88
 
90
- await rejects(
91
- payViaPaymentRequest({lnd, request: deadInvoice.request}),
92
- [503, 'PaymentRejectedByDestination'],
93
- 'Rejection fail'
94
- );
89
+ await cancelHodlInvoice({id: deadInvoice.id, lnd: target.lnd});
95
90
 
96
- const [err] = controlErrors;
91
+ await rejects(
92
+ payViaPaymentRequest({lnd, request: deadInvoice.request}),
93
+ [503, 'PaymentRejectedByDestination'],
94
+ 'Rejection fail'
95
+ );
97
96
 
98
- if (!!err && err.details === 'unknown service routerrpc.Router') {
99
- await kill({});
97
+ const [err] = controlErrors;
100
98
 
101
- return end();
102
- }
99
+ if (!!err && err.details === 'unknown service routerrpc.Router') {
100
+ await kill({});
103
101
 
104
- await asyncRetry({interval: 1000, times: 30}, async () => {
105
- if (controlForwards.length !== 6) {
106
- throw new Error('ExpectedFullListOfControlForwards');
102
+ return end();
107
103
  }
108
104
 
109
- return;
110
- });
111
-
112
- [controlSub, remoteSub, targetSub].forEach(n => n.removeAllListeners());
113
-
114
- // LND 0.13.0 and below do not support secret
115
- [controlForwards, targetForwards, remoteForwards].forEach(forwards => {
116
- return forwards.forEach(n => delete n.at && delete n.secret);
117
- });
118
-
119
- const height = (await getHeight({lnd})).current_block_height;
120
-
121
- // LND 0.11.1 and before do not use anchor channels
122
- if (!isAnchors) {
123
- strictSame(controlForwards, [
124
- {
125
- cltv_delta: undefined,
126
- external_failure: undefined,
127
- fee: undefined,
128
- fee_mtokens: undefined,
129
- in_channel: undefined,
130
- in_payment: undefined,
131
- internal_failure: undefined,
132
- is_confirmed: false,
133
- is_failed: false,
134
- is_receive: false,
135
- is_send: true,
136
- mtokens: '101000',
137
- out_channel: controlChannel.id,
138
- out_payment: 0,
139
- timeout: height + 40 + 43,
140
- tokens: 101,
141
- },
142
- {
143
- cltv_delta: undefined,
144
- external_failure: undefined,
145
- fee: undefined,
146
- fee_mtokens: undefined,
147
- in_channel: undefined,
148
- in_payment: undefined,
149
- internal_failure: undefined,
150
- is_confirmed: true,
151
- is_failed: false,
152
- is_receive: false,
153
- is_send: true,
154
- mtokens: undefined,
155
- out_channel: controlChannel.id,
156
- out_payment: 0,
157
- timeout: undefined,
158
- tokens: undefined,
159
- },
160
- {
161
- cltv_delta: undefined,
162
- external_failure: undefined,
163
- fee: undefined,
164
- fee_mtokens: undefined,
165
- in_channel: undefined,
166
- in_payment: undefined,
167
- internal_failure: undefined,
168
- is_confirmed: false,
169
- is_failed: false,
170
- is_receive: false,
171
- is_send: true,
172
- mtokens: '490851490',
173
- out_channel: controlChannel.id,
174
- out_payment: 1,
175
- timeout: height + 40 + 43,
176
- tokens: 490851,
177
- },
178
- {
179
- cltv_delta: undefined,
180
- external_failure: undefined,
181
- fee: undefined,
182
- fee_mtokens: undefined,
183
- in_channel: undefined,
184
- in_payment: undefined,
185
- internal_failure: undefined,
186
- is_confirmed: false,
187
- is_failed: true,
188
- is_receive: false,
189
- is_send: true,
190
- mtokens: undefined,
191
- out_channel: controlChannel.id,
192
- out_payment: 1,
193
- timeout: undefined,
194
- tokens: undefined,
195
- },
196
- {
197
- cltv_delta: undefined,
198
- external_failure: undefined,
199
- fee: undefined,
200
- fee_mtokens: undefined,
201
- in_channel: undefined,
202
- in_payment: undefined,
203
- internal_failure: undefined,
204
- is_confirmed: false,
205
- is_failed: false,
206
- is_receive: false,
207
- is_send: true,
208
- mtokens: '100000',
209
- out_channel: controlChannel.id,
210
- out_payment: 2,
211
- timeout: height + 43,
212
- tokens: 100,
213
- },
214
- {
215
- cltv_delta: undefined,
216
- external_failure: undefined,
217
- fee: undefined,
218
- fee_mtokens: undefined,
219
- in_channel: undefined,
220
- in_payment: undefined,
221
- internal_failure: undefined,
222
- is_confirmed: false,
223
- is_failed: true,
224
- is_receive: false,
225
- is_send: true,
226
- mtokens: undefined,
227
- out_channel: controlChannel.id,
228
- out_payment: 2,
229
- timeout: undefined,
230
- tokens: undefined,
231
- },
232
- ],
233
- 'Got control forward events');
234
-
235
- strictSame(targetForwards, [
236
- {
237
- cltv_delta: 40,
238
- external_failure: undefined,
239
- fee: 1,
240
- fee_mtokens: '1000',
241
- in_channel: controlChannel.id,
242
- in_payment: 0,
243
- internal_failure: undefined,
244
- is_confirmed: false,
245
- is_failed: false,
246
- is_receive: false,
247
- is_send: false,
248
- mtokens: '100000',
249
- out_channel: targetChannel.id,
250
- out_payment: 0,
251
- timeout: 497,
252
- tokens: 100,
253
- },
254
- {
255
- cltv_delta: undefined,
256
- external_failure: undefined,
257
- fee: undefined,
258
- fee_mtokens: undefined,
259
- in_channel: controlChannel.id,
260
- in_payment: 0,
261
- internal_failure: undefined,
262
- is_confirmed: true,
263
- is_failed: false,
264
- is_receive: false,
265
- is_send: false,
266
- mtokens: undefined,
267
- out_channel: targetChannel.id,
268
- out_payment: 0,
269
- timeout: undefined,
270
- tokens: undefined,
271
- },
272
- {
273
- cltv_delta: 40,
274
- external_failure: 'TEMPORARY_CHANNEL_FAILURE',
275
- fee: 1,
276
- fee_mtokens: '1490',
277
- in_channel: controlChannel.id,
278
- in_payment: 1,
279
- internal_failure: 'INSUFFICIENT_BALANCE',
280
- is_confirmed: false,
281
- is_failed: true,
282
- is_receive: false,
283
- is_send: false,
284
- mtokens: '490850000',
285
- out_channel: targetChannel.id,
286
- out_payment: 0,
287
- timeout: 497,
288
- tokens: 490850,
289
- },
290
- {
291
- cltv_delta: undefined,
292
- external_failure: 'INCORRECT_OR_UNKNOWN_PAYMENT_DETAILS',
293
- fee: undefined,
294
- fee_mtokens: undefined,
295
- in_channel: controlChannel.id,
296
- in_payment: 2,
297
- internal_failure: 'INVOICE_NOT_OPEN',
298
- is_confirmed: false,
299
- is_failed: true,
300
- is_receive: true,
301
- is_send: false,
302
- mtokens: undefined,
303
- out_channel: undefined,
304
- out_payment: undefined,
305
- timeout: undefined,
306
- tokens: undefined,
307
- },
308
- ],
309
- 'Got target forward events');
310
-
311
- strictSame(remoteForwards, [
312
- {
313
- cltv_delta: undefined,
314
- external_failure: undefined,
315
- fee: undefined,
316
- fee_mtokens: undefined,
317
- in_channel: targetChannel.id,
318
- in_payment: 0,
319
- internal_failure: undefined,
320
- is_confirmed: true,
321
- is_failed: false,
322
- is_receive: true,
323
- is_send: false,
324
- mtokens: undefined,
325
- out_channel: undefined,
326
- out_payment: undefined,
327
- timeout: undefined,
328
- tokens: undefined,
329
- },
330
- ],
331
- 'Got remote forward events');
332
- } else {
333
- strictSame(controlForwards, [
334
- {
335
- cltv_delta: undefined,
336
- external_failure: undefined,
337
- fee: undefined,
338
- fee_mtokens: undefined,
339
- in_channel: undefined,
340
- in_payment: undefined,
341
- internal_failure: undefined,
342
- is_confirmed: false,
343
- is_failed: false,
344
- is_receive: false,
345
- is_send: true,
346
- mtokens: '101000',
347
- out_channel: controlChannel.id,
348
- out_payment: 0,
349
- timeout: height + 40 + 43,
350
- tokens: 101,
351
- },
352
- {
353
- cltv_delta: undefined,
354
- external_failure: undefined,
355
- fee: undefined,
356
- fee_mtokens: undefined,
357
- in_channel: undefined,
358
- in_payment: undefined,
359
- internal_failure: undefined,
360
- is_confirmed: true,
361
- is_failed: false,
362
- is_receive: false,
363
- is_send: true,
364
- mtokens: undefined,
365
- out_channel: controlChannel.id,
366
- out_payment: 0,
367
- timeout: undefined,
368
- tokens: undefined,
369
- },
370
- {
371
- cltv_delta: undefined,
372
- external_failure: undefined,
373
- fee: undefined,
374
- fee_mtokens: undefined,
375
- in_channel: undefined,
376
- in_payment: undefined,
377
- internal_failure: undefined,
378
- is_confirmed: false,
379
- is_failed: false,
380
- is_receive: false,
381
- is_send: true,
382
- mtokens: '496431496',
383
- out_channel: controlChannel.id,
384
- out_payment: 1,
385
- timeout: height + 40 + 43,
386
- tokens: 496431,
387
- },
388
- {
389
- cltv_delta: undefined,
390
- external_failure: undefined,
391
- fee: undefined,
392
- fee_mtokens: undefined,
393
- in_channel: undefined,
394
- in_payment: undefined,
395
- internal_failure: undefined,
396
- is_confirmed: false,
397
- is_failed: true,
398
- is_receive: false,
399
- is_send: true,
400
- mtokens: undefined,
401
- out_channel: controlChannel.id,
402
- out_payment: 1,
403
- timeout: undefined,
404
- tokens: undefined,
405
- },
406
- {
407
- cltv_delta: undefined,
408
- external_failure: undefined,
409
- fee: undefined,
410
- fee_mtokens: undefined,
411
- in_channel: undefined,
412
- in_payment: undefined,
413
- internal_failure: undefined,
414
- is_confirmed: false,
415
- is_failed: false,
416
- is_receive: false,
417
- is_send: true,
418
- mtokens: '100000',
419
- out_channel: controlChannel.id,
420
- out_payment: 2,
421
- timeout: height + 43,
422
- tokens: 100,
423
- },
424
- {
425
- cltv_delta: undefined,
426
- external_failure: undefined,
427
- fee: undefined,
428
- fee_mtokens: undefined,
429
- in_channel: undefined,
430
- in_payment: undefined,
431
- internal_failure: undefined,
432
- is_confirmed: false,
433
- is_failed: true,
434
- is_receive: false,
435
- is_send: true,
436
- mtokens: undefined,
437
- out_channel: controlChannel.id,
438
- out_payment: 2,
439
- timeout: undefined,
440
- tokens: undefined,
441
- },
442
- ],
443
- 'Got control forward events');
444
-
445
- strictSame(targetForwards, [
446
- {
447
- cltv_delta: 40,
448
- external_failure: undefined,
449
- fee: 1,
450
- fee_mtokens: '1000',
451
- in_channel: controlChannel.id,
452
- in_payment: 0,
453
- internal_failure: undefined,
454
- is_confirmed: false,
455
- is_failed: false,
456
- is_receive: false,
457
- is_send: false,
458
- mtokens: '100000',
459
- out_channel: targetChannel.id,
460
- out_payment: 0,
461
- timeout: height + 43,
462
- tokens: 100,
463
- },
464
- {
465
- cltv_delta: undefined,
466
- external_failure: undefined,
467
- fee: undefined,
468
- fee_mtokens: undefined,
469
- in_channel: controlChannel.id,
470
- in_payment: 0,
471
- internal_failure: undefined,
472
- is_confirmed: true,
473
- is_failed: false,
474
- is_receive: false,
475
- is_send: false,
476
- mtokens: undefined,
477
- out_channel: targetChannel.id,
478
- out_payment: 0,
479
- timeout: undefined,
480
- tokens: undefined,
481
- },
482
- {
483
- cltv_delta: 40,
484
- external_failure: 'TEMPORARY_CHANNEL_FAILURE',
485
- fee: 1,
486
- fee_mtokens: '1496',
487
- in_channel: controlChannel.id,
488
- in_payment: 1,
489
- internal_failure: 'INSUFFICIENT_BALANCE',
490
- is_confirmed: false,
491
- is_failed: true,
492
- is_receive: false,
493
- is_send: false,
494
- mtokens: '496430000',
495
- out_channel: targetChannel.id,
496
- out_payment: 0,
497
- timeout: height + 43,
498
- tokens: 496430,
499
- },
500
- {
501
- cltv_delta: undefined,
502
- external_failure: 'INCORRECT_OR_UNKNOWN_PAYMENT_DETAILS',
503
- fee: undefined,
504
- fee_mtokens: undefined,
505
- in_channel: controlChannel.id,
506
- in_payment: 2,
507
- internal_failure: 'INVOICE_NOT_OPEN',
508
- is_confirmed: false,
509
- is_failed: true,
510
- is_receive: true,
511
- is_send: false,
512
- mtokens: undefined,
513
- out_channel: undefined,
514
- out_payment: undefined,
515
- timeout: undefined,
516
- tokens: undefined,
517
- },
518
- ],
519
- 'Got target forward events');
520
-
521
- strictSame(remoteForwards, [
522
- {
523
- cltv_delta: undefined,
524
- external_failure: undefined,
525
- fee: undefined,
526
- fee_mtokens: undefined,
527
- in_channel: targetChannel.id,
528
- in_payment: 0,
529
- internal_failure: undefined,
530
- is_confirmed: true,
531
- is_failed: false,
532
- is_receive: true,
533
- is_send: false,
534
- mtokens: undefined,
535
- out_channel: undefined,
536
- out_payment: undefined,
537
- timeout: undefined,
538
- tokens: undefined,
539
- },
540
- ],
541
- 'Got remote forward events');
542
- }
105
+ await asyncRetry({interval: 1000, times: 30}, async () => {
106
+ if (controlForwards.length !== 6) {
107
+ throw new Error('ExpectedFullListOfControlForwards');
108
+ }
543
109
 
544
- strictSame(controlErrors, [], 'No control errors');
545
- strictSame(targetErrors, [], 'No target errors');
546
- strictSame(remoteErrors, [], 'No remote errors');
110
+ return;
111
+ });
112
+
113
+ [controlSub, remoteSub, targetSub].forEach(n => n.removeAllListeners());
114
+
115
+ // LND 0.13.0 and below do not support secret
116
+ [controlForwards, targetForwards, remoteForwards].forEach(forwards => {
117
+ return forwards.forEach(n => delete n.at && delete n.secret);
118
+ });
547
119
 
548
- await kill({});
120
+ const height = (await getHeight({lnd})).current_block_height;
121
+
122
+ // LND 0.11.1 and before do not use anchor channels
123
+ if (!isAnchors) {
124
+ strictSame(controlForwards, [
125
+ {
126
+ cltv_delta: undefined,
127
+ external_failure: undefined,
128
+ fee: undefined,
129
+ fee_mtokens: undefined,
130
+ in_channel: undefined,
131
+ in_payment: undefined,
132
+ internal_failure: undefined,
133
+ is_confirmed: false,
134
+ is_failed: false,
135
+ is_receive: false,
136
+ is_send: true,
137
+ mtokens: '101000',
138
+ out_channel: controlChannel.id,
139
+ out_payment: 0,
140
+ timeout: height + 40 + 43,
141
+ tokens: 101,
142
+ },
143
+ {
144
+ cltv_delta: undefined,
145
+ external_failure: undefined,
146
+ fee: undefined,
147
+ fee_mtokens: undefined,
148
+ in_channel: undefined,
149
+ in_payment: undefined,
150
+ internal_failure: undefined,
151
+ is_confirmed: true,
152
+ is_failed: false,
153
+ is_receive: false,
154
+ is_send: true,
155
+ mtokens: undefined,
156
+ out_channel: controlChannel.id,
157
+ out_payment: 0,
158
+ timeout: undefined,
159
+ tokens: undefined,
160
+ },
161
+ {
162
+ cltv_delta: undefined,
163
+ external_failure: undefined,
164
+ fee: undefined,
165
+ fee_mtokens: undefined,
166
+ in_channel: undefined,
167
+ in_payment: undefined,
168
+ internal_failure: undefined,
169
+ is_confirmed: false,
170
+ is_failed: false,
171
+ is_receive: false,
172
+ is_send: true,
173
+ mtokens: '490851490',
174
+ out_channel: controlChannel.id,
175
+ out_payment: 1,
176
+ timeout: height + 40 + 43,
177
+ tokens: 490851,
178
+ },
179
+ {
180
+ cltv_delta: undefined,
181
+ external_failure: undefined,
182
+ fee: undefined,
183
+ fee_mtokens: undefined,
184
+ in_channel: undefined,
185
+ in_payment: undefined,
186
+ internal_failure: undefined,
187
+ is_confirmed: false,
188
+ is_failed: true,
189
+ is_receive: false,
190
+ is_send: true,
191
+ mtokens: undefined,
192
+ out_channel: controlChannel.id,
193
+ out_payment: 1,
194
+ timeout: undefined,
195
+ tokens: undefined,
196
+ },
197
+ {
198
+ cltv_delta: undefined,
199
+ external_failure: undefined,
200
+ fee: undefined,
201
+ fee_mtokens: undefined,
202
+ in_channel: undefined,
203
+ in_payment: undefined,
204
+ internal_failure: undefined,
205
+ is_confirmed: false,
206
+ is_failed: false,
207
+ is_receive: false,
208
+ is_send: true,
209
+ mtokens: '100000',
210
+ out_channel: controlChannel.id,
211
+ out_payment: 2,
212
+ timeout: height + 43,
213
+ tokens: 100,
214
+ },
215
+ {
216
+ cltv_delta: undefined,
217
+ external_failure: undefined,
218
+ fee: undefined,
219
+ fee_mtokens: undefined,
220
+ in_channel: undefined,
221
+ in_payment: undefined,
222
+ internal_failure: undefined,
223
+ is_confirmed: false,
224
+ is_failed: true,
225
+ is_receive: false,
226
+ is_send: true,
227
+ mtokens: undefined,
228
+ out_channel: controlChannel.id,
229
+ out_payment: 2,
230
+ timeout: undefined,
231
+ tokens: undefined,
232
+ },
233
+ ],
234
+ 'Got control forward events');
235
+
236
+ strictSame(targetForwards, [
237
+ {
238
+ cltv_delta: 40,
239
+ external_failure: undefined,
240
+ fee: 1,
241
+ fee_mtokens: '1000',
242
+ in_channel: controlChannel.id,
243
+ in_payment: 0,
244
+ internal_failure: undefined,
245
+ is_confirmed: false,
246
+ is_failed: false,
247
+ is_receive: false,
248
+ is_send: false,
249
+ mtokens: '100000',
250
+ out_channel: targetChannel.id,
251
+ out_payment: 0,
252
+ timeout: 497,
253
+ tokens: 100,
254
+ },
255
+ {
256
+ cltv_delta: undefined,
257
+ external_failure: undefined,
258
+ fee: undefined,
259
+ fee_mtokens: undefined,
260
+ in_channel: controlChannel.id,
261
+ in_payment: 0,
262
+ internal_failure: undefined,
263
+ is_confirmed: true,
264
+ is_failed: false,
265
+ is_receive: false,
266
+ is_send: false,
267
+ mtokens: undefined,
268
+ out_channel: targetChannel.id,
269
+ out_payment: 0,
270
+ timeout: undefined,
271
+ tokens: undefined,
272
+ },
273
+ {
274
+ cltv_delta: 40,
275
+ external_failure: 'TEMPORARY_CHANNEL_FAILURE',
276
+ fee: 1,
277
+ fee_mtokens: '1490',
278
+ in_channel: controlChannel.id,
279
+ in_payment: 1,
280
+ internal_failure: 'INSUFFICIENT_BALANCE',
281
+ is_confirmed: false,
282
+ is_failed: true,
283
+ is_receive: false,
284
+ is_send: false,
285
+ mtokens: '490850000',
286
+ out_channel: targetChannel.id,
287
+ out_payment: 0,
288
+ timeout: 497,
289
+ tokens: 490850,
290
+ },
291
+ {
292
+ cltv_delta: undefined,
293
+ external_failure: 'INCORRECT_OR_UNKNOWN_PAYMENT_DETAILS',
294
+ fee: undefined,
295
+ fee_mtokens: undefined,
296
+ in_channel: controlChannel.id,
297
+ in_payment: 2,
298
+ internal_failure: 'INVOICE_NOT_OPEN',
299
+ is_confirmed: false,
300
+ is_failed: true,
301
+ is_receive: true,
302
+ is_send: false,
303
+ mtokens: undefined,
304
+ out_channel: undefined,
305
+ out_payment: undefined,
306
+ timeout: undefined,
307
+ tokens: undefined,
308
+ },
309
+ ],
310
+ 'Got target forward events');
311
+
312
+ strictSame(remoteForwards, [
313
+ {
314
+ cltv_delta: undefined,
315
+ external_failure: undefined,
316
+ fee: undefined,
317
+ fee_mtokens: undefined,
318
+ in_channel: targetChannel.id,
319
+ in_payment: 0,
320
+ internal_failure: undefined,
321
+ is_confirmed: true,
322
+ is_failed: false,
323
+ is_receive: true,
324
+ is_send: false,
325
+ mtokens: undefined,
326
+ out_channel: undefined,
327
+ out_payment: undefined,
328
+ timeout: undefined,
329
+ tokens: undefined,
330
+ },
331
+ ],
332
+ 'Got remote forward events');
333
+ } else {
334
+ strictSame(controlForwards, [
335
+ {
336
+ cltv_delta: undefined,
337
+ external_failure: undefined,
338
+ fee: undefined,
339
+ fee_mtokens: undefined,
340
+ in_channel: undefined,
341
+ in_payment: undefined,
342
+ internal_failure: undefined,
343
+ is_confirmed: false,
344
+ is_failed: false,
345
+ is_receive: false,
346
+ is_send: true,
347
+ mtokens: '101000',
348
+ out_channel: controlChannel.id,
349
+ out_payment: 0,
350
+ timeout: height + 40 + 43,
351
+ tokens: 101,
352
+ },
353
+ {
354
+ cltv_delta: undefined,
355
+ external_failure: undefined,
356
+ fee: undefined,
357
+ fee_mtokens: undefined,
358
+ in_channel: undefined,
359
+ in_payment: undefined,
360
+ internal_failure: undefined,
361
+ is_confirmed: true,
362
+ is_failed: false,
363
+ is_receive: false,
364
+ is_send: true,
365
+ mtokens: undefined,
366
+ out_channel: controlChannel.id,
367
+ out_payment: 0,
368
+ timeout: undefined,
369
+ tokens: undefined,
370
+ },
371
+ {
372
+ cltv_delta: undefined,
373
+ external_failure: undefined,
374
+ fee: undefined,
375
+ fee_mtokens: undefined,
376
+ in_channel: undefined,
377
+ in_payment: undefined,
378
+ internal_failure: undefined,
379
+ is_confirmed: false,
380
+ is_failed: false,
381
+ is_receive: false,
382
+ is_send: true,
383
+ mtokens: '496431496',
384
+ out_channel: controlChannel.id,
385
+ out_payment: 1,
386
+ timeout: height + 40 + 43,
387
+ tokens: 496431,
388
+ },
389
+ {
390
+ cltv_delta: undefined,
391
+ external_failure: undefined,
392
+ fee: undefined,
393
+ fee_mtokens: undefined,
394
+ in_channel: undefined,
395
+ in_payment: undefined,
396
+ internal_failure: undefined,
397
+ is_confirmed: false,
398
+ is_failed: true,
399
+ is_receive: false,
400
+ is_send: true,
401
+ mtokens: undefined,
402
+ out_channel: controlChannel.id,
403
+ out_payment: 1,
404
+ timeout: undefined,
405
+ tokens: undefined,
406
+ },
407
+ {
408
+ cltv_delta: undefined,
409
+ external_failure: undefined,
410
+ fee: undefined,
411
+ fee_mtokens: undefined,
412
+ in_channel: undefined,
413
+ in_payment: undefined,
414
+ internal_failure: undefined,
415
+ is_confirmed: false,
416
+ is_failed: false,
417
+ is_receive: false,
418
+ is_send: true,
419
+ mtokens: '100000',
420
+ out_channel: controlChannel.id,
421
+ out_payment: 2,
422
+ timeout: height + 43,
423
+ tokens: 100,
424
+ },
425
+ {
426
+ cltv_delta: undefined,
427
+ external_failure: undefined,
428
+ fee: undefined,
429
+ fee_mtokens: undefined,
430
+ in_channel: undefined,
431
+ in_payment: undefined,
432
+ internal_failure: undefined,
433
+ is_confirmed: false,
434
+ is_failed: true,
435
+ is_receive: false,
436
+ is_send: true,
437
+ mtokens: undefined,
438
+ out_channel: controlChannel.id,
439
+ out_payment: 2,
440
+ timeout: undefined,
441
+ tokens: undefined,
442
+ },
443
+ ],
444
+ 'Got control forward events');
445
+
446
+ strictSame(targetForwards, [
447
+ {
448
+ cltv_delta: 40,
449
+ external_failure: undefined,
450
+ fee: 1,
451
+ fee_mtokens: '1000',
452
+ in_channel: controlChannel.id,
453
+ in_payment: 0,
454
+ internal_failure: undefined,
455
+ is_confirmed: false,
456
+ is_failed: false,
457
+ is_receive: false,
458
+ is_send: false,
459
+ mtokens: '100000',
460
+ out_channel: targetChannel.id,
461
+ out_payment: 0,
462
+ timeout: height + 43,
463
+ tokens: 100,
464
+ },
465
+ {
466
+ cltv_delta: undefined,
467
+ external_failure: undefined,
468
+ fee: undefined,
469
+ fee_mtokens: undefined,
470
+ in_channel: controlChannel.id,
471
+ in_payment: 0,
472
+ internal_failure: undefined,
473
+ is_confirmed: true,
474
+ is_failed: false,
475
+ is_receive: false,
476
+ is_send: false,
477
+ mtokens: undefined,
478
+ out_channel: targetChannel.id,
479
+ out_payment: 0,
480
+ timeout: undefined,
481
+ tokens: undefined,
482
+ },
483
+ {
484
+ cltv_delta: 40,
485
+ external_failure: 'TEMPORARY_CHANNEL_FAILURE',
486
+ fee: 1,
487
+ fee_mtokens: '1496',
488
+ in_channel: controlChannel.id,
489
+ in_payment: 1,
490
+ internal_failure: 'INSUFFICIENT_BALANCE',
491
+ is_confirmed: false,
492
+ is_failed: true,
493
+ is_receive: false,
494
+ is_send: false,
495
+ mtokens: '496430000',
496
+ out_channel: targetChannel.id,
497
+ out_payment: 0,
498
+ timeout: height + 43,
499
+ tokens: 496430,
500
+ },
501
+ {
502
+ cltv_delta: undefined,
503
+ external_failure: 'INCORRECT_OR_UNKNOWN_PAYMENT_DETAILS',
504
+ fee: undefined,
505
+ fee_mtokens: undefined,
506
+ in_channel: controlChannel.id,
507
+ in_payment: 2,
508
+ internal_failure: 'INVOICE_NOT_OPEN',
509
+ is_confirmed: false,
510
+ is_failed: true,
511
+ is_receive: true,
512
+ is_send: false,
513
+ mtokens: undefined,
514
+ out_channel: undefined,
515
+ out_payment: undefined,
516
+ timeout: undefined,
517
+ tokens: undefined,
518
+ },
519
+ ],
520
+ 'Got target forward events');
521
+
522
+ strictSame(remoteForwards, [
523
+ {
524
+ cltv_delta: undefined,
525
+ external_failure: undefined,
526
+ fee: undefined,
527
+ fee_mtokens: undefined,
528
+ in_channel: targetChannel.id,
529
+ in_payment: 0,
530
+ internal_failure: undefined,
531
+ is_confirmed: true,
532
+ is_failed: false,
533
+ is_receive: true,
534
+ is_send: false,
535
+ mtokens: undefined,
536
+ out_channel: undefined,
537
+ out_payment: undefined,
538
+ timeout: undefined,
539
+ tokens: undefined,
540
+ },
541
+ ],
542
+ 'Got remote forward events');
543
+ }
544
+
545
+ strictSame(controlErrors, [], 'No control errors');
546
+ strictSame(targetErrors, [], 'No target errors');
547
+ strictSame(remoteErrors, [], 'No remote errors');
548
+ } catch (err) {
549
+ strictSame(err, null, 'Expected no error');
550
+ } finally {
551
+ await kill({});
552
+ }
549
553
 
550
554
  return end();
551
555
  });