tests: add test for payment_identifier.invoice_from_payment_identifier()
This commit is contained in:
@@ -1,6 +1,10 @@
|
||||
import os
|
||||
|
||||
from electrum import SimpleConfig
|
||||
from electrum.invoices import Invoice
|
||||
from electrum.payment_identifier import (maybe_extract_lightning_payment_identifier, PaymentIdentifier,
|
||||
PaymentIdentifierType)
|
||||
PaymentIdentifierType, invoice_from_payment_identifier)
|
||||
from electrum.wallet import restore_wallet_from_text
|
||||
|
||||
from . import ElectrumTestCase
|
||||
from electrum.transaction import PartialTxOutput
|
||||
@@ -20,6 +24,12 @@ class TestPaymentIdentifier(ElectrumTestCase):
|
||||
super().setUp()
|
||||
self.wallet = WalletMock(self.electrum_path)
|
||||
|
||||
self.config = SimpleConfig({
|
||||
'electrum_path': self.electrum_path,
|
||||
'decimal_point': 5
|
||||
})
|
||||
self.wallet2_path = os.path.join(self.electrum_path, "somewallet2")
|
||||
|
||||
def test_maybe_extract_lightning_payment_identifier(self):
|
||||
bolt11 = "lnbc1ps9zprzpp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqsp5zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zygsdqq9qypqszpyrpe4tym8d3q87d43cgdhhlsrt78epu7u99mkzttmt2wtsx0304rrw50addkryfrd3vn3zy467vxwlmf4uz7yvntuwjr2hqjl9lw5cqwtp2dy"
|
||||
lnurl = "lnurl1dp68gurn8ghj7um9wfmxjcm99e5k7telwy7nxenrxvmrgdtzxsenjcm98pjnwxq96s9"
|
||||
@@ -251,3 +261,32 @@ class TestPaymentIdentifier(ElectrumTestCase):
|
||||
self.assertTrue(pi.need_resolve())
|
||||
|
||||
# TODO resolve mock
|
||||
|
||||
async def test_invoice_from_payment_identifier(self):
|
||||
# amount, expired, message, lightning w matching amount
|
||||
bip21 = 'bitcoin:1RustyRX2oai4EYYDpQGWvEL62BBGqN9T?amount=0.02&message=unit_test&time=1707382023&exp=3600&lightning=lnbc20m1pvjluezpp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqhp58yjmdan79s6qqdhdzgynm4zwqd5d7xmw5fk98klysy043l2ahrqsfpp3qjmp7lwpagxun9pygexvgpjdc4jdj85fr9yq20q82gphp2nflc7jtzrcazrra7wwgzxqc8u7754cdlpfrmccae92qgzqvzq2ps8pqqqqqqpqqqqq9qqqvpeuqafqxu92d8lr6fvg0r5gv0heeeqgcrqlnm6jhphu9y00rrhy4grqszsvpcgpy9qqqqqqgqqqqq7qqzqj9n4evl6mr5aj9f58zp6fyjzup6ywn3x6sk8akg5v4tgn2q8g4fhx05wf6juaxu9760yp46454gpg5mtzgerlzezqcqvjnhjh8z3g2qqdhhwkj'
|
||||
|
||||
pi = PaymentIdentifier(None, bip21)
|
||||
invoice = invoice_from_payment_identifier(pi, None, None)
|
||||
self.assertTrue(isinstance(invoice, Invoice))
|
||||
self.assertTrue(invoice.is_lightning())
|
||||
self.assertEqual(2_000_000_000, invoice.amount_msat)
|
||||
|
||||
text = 'bitter grass shiver impose acquire brush forget axis eager alone wine silver'
|
||||
d = restore_wallet_from_text(text, path=self.wallet2_path, gap_limit=2, config=self.config)
|
||||
wallet2 = d['wallet'] # type: Standard_Wallet
|
||||
|
||||
# no amount bip21+lightning, MAX amount passed
|
||||
bip21 = 'bitcoin:1RustyRX2oai4EYYDpQGWvEL62BBGqN9T?message=unit_test&time=1707382023&exp=3600&lightning=lnbc1ps9zprzpp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqsp5zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zygsdqq9qypqszpyrpe4tym8d3q87d43cgdhhlsrt78epu7u99mkzttmt2wtsx0304rrw50addkryfrd3vn3zy467vxwlmf4uz7yvntuwjr2hqjl9lw5cqwtp2dy'
|
||||
pi = PaymentIdentifier(None, bip21)
|
||||
invoice = invoice_from_payment_identifier(pi, wallet2, '!')
|
||||
self.assertTrue(isinstance(invoice, Invoice))
|
||||
self.assertFalse(invoice.is_lightning())
|
||||
|
||||
# no amount lightning, MAX amount passed -> expect raise
|
||||
bolt11 = 'lightning:lnbc1ps9zprzpp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqsp5zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zyg3zygsdqq9qypqszpyrpe4tym8d3q87d43cgdhhlsrt78epu7u99mkzttmt2wtsx0304rrw50addkryfrd3vn3zy467vxwlmf4uz7yvntuwjr2hqjl9lw5cqwtp2dy'
|
||||
pi = PaymentIdentifier(None, bolt11)
|
||||
with self.assertRaises(AssertionError):
|
||||
invoice_from_payment_identifier(pi, wallet2, '!')
|
||||
invoice = invoice_from_payment_identifier(pi, wallet2, 1)
|
||||
self.assertEqual(1000, invoice.amount_msat)
|
||||
|
||||
Reference in New Issue
Block a user