@@ -436,9 +436,11 @@ class MultiPartHandlerSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike
436
436
val nodeParams = Alice .nodeParams.copy(multiPartPaymentExpiry = 250 millis, features = featuresWithMpp)
437
437
val handler = TestActorRef [PaymentHandler ](PaymentHandler .props(nodeParams, f.register.ref))
438
438
439
- f.sender.send(handler, ReceivePayment (Some (1000 msat), " 1 coffee, no sugar" ))
439
+ val preimage = randomBytes32()
440
+ f.sender.send(handler, ReceivePayment (Some (1000 msat), " 1 coffee, no sugar" , paymentPreimage_opt = Some (preimage)))
440
441
val pr = f.sender.expectMsgType[PaymentRequest ]
441
442
assert(pr.features.allowMultiPart)
443
+ assert(pr.paymentHash == Crypto .sha256(preimage))
442
444
443
445
val add1 = UpdateAddHtlc (ByteVector32 .One , 0 , 800 msat, pr.paymentHash, f.defaultExpiry, TestConstants .emptyOnionPacket)
444
446
f.sender.send(handler, IncomingPacket .FinalPacket (add1, Onion .createMultiPartPayload(add1.amountMsat, 1000 msat, add1.cltvExpiry, pr.paymentSecret.get)))
@@ -453,14 +455,15 @@ class MultiPartHandlerSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike
453
455
val add3 = UpdateAddHtlc (ByteVector32 .Zeroes , 5 , 700 msat, pr.paymentHash, f.defaultExpiry, TestConstants .emptyOnionPacket)
454
456
f.sender.send(handler, IncomingPacket .FinalPacket (add3, Onion .createMultiPartPayload(add3.amountMsat, 1000 msat, add3.cltvExpiry, pr.paymentSecret.get)))
455
457
456
- val cmd1 = f.register.expectMsgType[ Register . Forward [ CMD_FULFILL_HTLC ]]
457
- assert(cmd1.channelId === add2.channelId)
458
- assert(cmd1.message.id === 2 )
459
- assert( Crypto .sha256(cmd1.message.r) === pr.paymentHash )
460
- f.register.expectMsg( Register . Forward ( ActorRef .noSender, add3.channelId, CMD_FULFILL_HTLC ( 5 , cmd1.message.r, commit = true )) )
458
+ // the fulfill are not necessarily in the same order as the commands
459
+ f.register.expectMsgAllOf(
460
+ Register . Forward ( ActorRef .noSender, add2.channelId, CMD_FULFILL_HTLC ( 2 , preimage, commit = true )),
461
+ Register . Forward ( ActorRef .noSender, add3.channelId, CMD_FULFILL_HTLC ( 5 , preimage, commit = true ) )
462
+ )
461
463
462
464
val paymentReceived = f.eventListener.expectMsgType[PaymentReceived ]
463
- assert(paymentReceived.copy(parts = paymentReceived.parts.map(_.copy(timestamp = 0 ))) === PaymentReceived (pr.paymentHash, PartialPayment (300 msat, ByteVector32 .One , 0 ) :: PartialPayment (700 msat, ByteVector32 .Zeroes , 0 ) :: Nil ))
465
+ assert(paymentReceived.paymentHash === pr.paymentHash)
466
+ assert(paymentReceived.parts.map(_.copy(timestamp = 0 )).toSet === Set (PartialPayment (300 msat, ByteVector32 .One , 0 ), PartialPayment (700 msat, ByteVector32 .Zeroes , 0 )))
464
467
val received = nodeParams.db.payments.getIncomingPayment(pr.paymentHash)
465
468
assert(received.isDefined && received.get.status.isInstanceOf [IncomingPaymentStatus .Received ])
466
469
assert(received.get.status.asInstanceOf [IncomingPaymentStatus .Received ].amount === 1000 .msat)
0 commit comments