@@ -937,3 +937,27 @@ def test_invoice_botched_migration(node_factory, chainparams):
937937    assert  ([(i ['created_index' ], i ['label' ]) for  i  in  l1 .rpc .listinvoices ()["invoices" ]]
938938            ==  [(1 , "made_after_bad_migration" ), (2 , "label1" )])
939939    assert  l1 .rpc .invoice (100 , "test" , "test" )["created_index" ] ==  3 
940+ 
941+ 
942+ def  test_invoice_maxdesc (node_factory , chainparams ):
943+     l1 , l2  =  node_factory .line_graph (2 )
944+ 
945+     # BOLT #11: 
946+     # 
947+     # Note that the maximum length of a Tagged Field's `data` is constricted 
948+     # by the maximum value of `data_length`. This is 1023 x 5 bits, or 639 
949+     # bytes. 
950+     maxdesc  =  "x"  *  639 
951+ 
952+     # This should fail! 
953+     with  pytest .raises (RpcError , match = r'Description greater than 639 bytes invalid \(description length 641\)' ):
954+         l1 .rpc .invoice (123000 , 'test_invoice_maxdesc' , maxdesc  +  'xx' )
955+ 
956+     # This should also fail, but used to produce 
957+     # lnbcrt1230n1p5dm097sp545trjl795r3mm86mk4ln5jpjvnh04x8aryl3qadjt99vspu646zspp52hf43ln8vg0564ljwccs8d84xc70ls8n7wdmp75ygp7ll8rprqzsdqq0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rc0pu8s7rcxqyjw5qcqp99qxpqysgqr6l8swzm6jc42ehy4v7s83jrggtwa9ua39cvy46c46tmqwn97mn43ycww7e9cf4w5ws8lxnef2k3m5nfa5c34nz54jaxhzc5e72q0ccq26n9fx 
958+     with  pytest .raises (RpcError , match = r'Description greater than 639 bytes invalid \(description length 640\)' ):
959+         l1 .rpc .invoice (123000 , 'test_invoice_maxdesc2' , maxdesc  +  'x' )
960+ 
961+     # This should succeed. 
962+     inv  =  l1 .rpc .invoice (123000 , 'test_invoice_maxdesc3' , maxdesc )
963+     assert  l1 .rpc .decode (inv ['bolt11' ])['description' ] ==  maxdesc 
0 commit comments