Skip to content

Commit af3cd55

Browse files
authored
Add recent invoice spec test vectors (#3137)
Add test vectors from lightning/bolts#1276 and lightning/bolts#1264
1 parent 65e2639 commit af3cd55

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

eclair-core/src/test/resources/offers-test.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -489,10 +489,15 @@
489489
"bolt12": "lno1qcqcqzs9g9xyjs69zcssyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqsz"
490490
},
491491
{
492-
"description": "Malformed: invalid currency UTF-8",
492+
"description": "Malformed: invalid currency UTF-8 (2-letter code)",
493493
"valid": false,
494494
"bolt12": "lno1qcpgqsg2q4q5cj2rg5tzzqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqg"
495495
},
496+
{
497+
"description": "Malformed: invalid currency UTF-8 (3-letter code)",
498+
"valid": false,
499+
"bolt12": "lno1qcplllhapqpq86q2q4qkc6trv5tzzq6muh550qsfva9fdes0ruph7ctk2s8aqq06r4jxj3msc448wzwy9s"
500+
},
496501
{
497502
"description": "Malformed: truncated description UTF-8",
498503
"valid": false,

eclair-core/src/test/scala/fr/acinq/eclair/payment/Bolt11InvoiceSpec.scala

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -386,6 +386,16 @@ class Bolt11InvoiceSpec extends AnyFunSuite {
386386
assert(invoice.sign(priv).toString == ref)
387387
}
388388

389+
test("On mainnet, with fallback (P2TR) address bc1pptdvg0d2nj99568qn6ssdy4cygnwuxgw2ukmnwgwz7jpqjz2kszse2s3lm") {
390+
val ref = "lnbc20m1pvjluezsp5zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zygspp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqhp58yjmdan79s6qqdhdzgynm4zwqd5d7xmw5fk98klysy043l2ahrqsfp4pptdvg0d2nj99568qn6ssdy4cygnwuxgw2ukmnwgwz7jpqjz2kszs9qrsgqy606dznq28exnydt2r4c29y56xjtn3sk4mhgjtl4pg2y4ar3249rq4ajlmj9jy8zvlzw7cr8mggqzm842xfr0v72rswzq9xvr4hknfsqwmn6xd"
391+
val Success(invoice) = Bolt11Invoice.fromString(ref)
392+
assert(invoice.prefix == "lnbc")
393+
assert(invoice.amount_opt.contains(2000000000 msat))
394+
assert(invoice.nodeId == PublicKey(hex"03e7156ae33b0a208d0744199163177e909e80176e55d97a2f221ede0f934dd9ad"))
395+
assert(invoice.fallbackAddress().contains("bc1pptdvg0d2nj99568qn6ssdy4cygnwuxgw2ukmnwgwz7jpqjz2kszse2s3lm"))
396+
assert(invoice.sign(priv).toString == ref)
397+
}
398+
389399
test("reject invalid invoices") {
390400
val refs = Seq(
391401
// Bech32 checksum is invalid.

0 commit comments

Comments
 (0)