@@ -191,6 +191,43 @@ def setUp(self):
191191 esplora_endpoint = get_esplora_endpoint ()
192192 mine_and_wait (esplora_endpoint , 1 )
193193
194+ def test_spontaneous_payment (self ):
195+ """Spontaneous payment test in python: keysend after channel ready."""
196+ esplora_endpoint = get_esplora_endpoint ()
197+
198+ node_1 , node_2 , tmp_dir_1 , tmp_dir_2 , node_id_1 , node_id_2 , listening_addresses_2 = setup_two_nodes (esplora_endpoint )
199+ fund_nodes (node_1 , node_2 , esplora_endpoint )
200+ open_channel_and_wait_ready (node_1 , node_2 , node_id_2 , listening_addresses_2 [0 ], esplora_endpoint )
201+
202+ keysend_amount_msat = 2_500_000
203+ custom_tlvs = [CustomTlvRecord (type_num = 13377331 , value = bytes ([1 , 2 , 3 ]))]
204+ keysend_payment_id = node_1 .spontaneous_payment ().send_with_custom_tlvs (
205+ keysend_amount_msat , node_id_2 , None , custom_tlvs
206+ )
207+
208+ expect_event (node_1 , Event .PAYMENT_SUCCESSFUL )
209+ received_event = expect_event (node_2 , Event .PAYMENT_RECEIVED )
210+
211+ self .assertEqual (received_event .amount_msat , keysend_amount_msat )
212+ self .assertEqual (received_event .custom_records , custom_tlvs )
213+
214+ sender_payment = node_1 .payment (keysend_payment_id )
215+ receiver_payment = node_2 .payment (keysend_payment_id )
216+
217+ self .assertIsNotNone (sender_payment )
218+ self .assertIsNotNone (receiver_payment )
219+ self .assertEqual (sender_payment .status , PaymentStatus .SUCCEEDED )
220+ self .assertEqual (sender_payment .direction , PaymentDirection .OUTBOUND )
221+ self .assertEqual (sender_payment .amount_msat , keysend_amount_msat )
222+ self .assertTrue (sender_payment .kind .is_spontaneous ())
223+
224+ self .assertEqual (receiver_payment .status , PaymentStatus .SUCCEEDED )
225+ self .assertEqual (receiver_payment .direction , PaymentDirection .INBOUND )
226+ self .assertEqual (receiver_payment .amount_msat , keysend_amount_msat )
227+ self .assertTrue (receiver_payment .kind .is_spontaneous ())
228+
229+ stop_and_cleanup (node_1 , node_2 , tmp_dir_1 , tmp_dir_2 )
230+
194231 def test_channel_full_cycle (self ):
195232 esplora_endpoint = get_esplora_endpoint ()
196233
0 commit comments