mirror of
https://github.com/aljazceru/nutshell.git
synced 2025-12-19 18:14:19 +01:00
* split wallet test from mint test pipeline * regtest mint and wallet * fix * fix * move mint tests * real invoice in regtest mpp
108 lines
3.5 KiB
Python
108 lines
3.5 KiB
Python
import pytest
|
|
|
|
from cashu.core.base import MintKeyset, Unit
|
|
from cashu.core.settings import settings
|
|
from cashu.mint.ledger import Ledger
|
|
from tests.mint.test_mint_init import (
|
|
DECRYPTON_KEY,
|
|
DERIVATION_PATH,
|
|
ENCRYPTED_SEED,
|
|
SEED,
|
|
)
|
|
|
|
|
|
async def assert_err(f, msg):
|
|
"""Compute f() and expect an error message 'msg'."""
|
|
try:
|
|
await f
|
|
except Exception as exc:
|
|
if msg not in str(exc.args[0]):
|
|
raise Exception(f"Expected error: {msg}, got: {exc.args[0]}")
|
|
return
|
|
raise Exception(f"Expected error: {msg}, got no error")
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_keyset_0_15_0():
|
|
keyset = MintKeyset(seed=SEED, derivation_path=DERIVATION_PATH, version="0.15.0")
|
|
assert len(keyset.public_keys_hex) == settings.max_order
|
|
assert keyset.seed == "TEST_PRIVATE_KEY"
|
|
assert keyset.derivation_path == "m/0'/0'/0'"
|
|
assert (
|
|
keyset.public_keys_hex[1]
|
|
== "02194603ffa36356f4a56b7df9371fc3192472351453ec7398b8da8117e7c3e104"
|
|
)
|
|
assert keyset.id == "009a1f293253e41e"
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_keyset_0_14_0():
|
|
keyset = MintKeyset(seed=SEED, derivation_path=DERIVATION_PATH, version="0.14.0")
|
|
assert len(keyset.public_keys_hex) == settings.max_order
|
|
assert keyset.seed == "TEST_PRIVATE_KEY"
|
|
assert keyset.derivation_path == "m/0'/0'/0'"
|
|
assert (
|
|
keyset.public_keys_hex[1]
|
|
== "036d6f3adf897e88e16ece3bffb2ce57a0b635fa76f2e46dbe7c636a937cd3c2f2"
|
|
)
|
|
assert keyset.id == "xnI+Y0j7cT1/"
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_keyset_0_11_0():
|
|
keyset = MintKeyset(seed=SEED, derivation_path=DERIVATION_PATH, version="0.11.0")
|
|
assert len(keyset.public_keys_hex) == settings.max_order
|
|
assert keyset.seed == "TEST_PRIVATE_KEY"
|
|
assert keyset.derivation_path == "m/0'/0'/0'"
|
|
assert (
|
|
keyset.public_keys_hex[1]
|
|
== "026b714529f157d4c3de5a93e3a67618475711889b6434a497ae6ad8ace6682120"
|
|
)
|
|
assert keyset.id == "Zkdws9zWxNc4"
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_keyset_0_15_0_encrypted():
|
|
settings.mint_seed_decryption_key = DECRYPTON_KEY
|
|
keyset = MintKeyset(
|
|
encrypted_seed=ENCRYPTED_SEED,
|
|
derivation_path=DERIVATION_PATH,
|
|
version="0.15.0",
|
|
)
|
|
assert len(keyset.public_keys_hex) == settings.max_order
|
|
assert keyset.seed == "TEST_PRIVATE_KEY"
|
|
assert keyset.derivation_path == "m/0'/0'/0'"
|
|
assert (
|
|
keyset.public_keys_hex[1]
|
|
== "02194603ffa36356f4a56b7df9371fc3192472351453ec7398b8da8117e7c3e104"
|
|
)
|
|
assert keyset.id == "009a1f293253e41e"
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_keyset_rotation(ledger: Ledger):
|
|
keyset_sat = next(
|
|
filter(lambda k: k.unit == Unit["sat"] and k.active, ledger.keysets.values())
|
|
)
|
|
new_keyset_sat = await ledger.rotate_next_keyset(
|
|
unit=Unit["sat"], max_order=20, input_fee_ppk=1
|
|
)
|
|
|
|
keyset_sat_derivation = keyset_sat.derivation_path.split("/")
|
|
new_keyset_sat_derivation = keyset_sat.derivation_path.split("/")
|
|
|
|
assert (
|
|
keyset_sat_derivation[:-1] == new_keyset_sat_derivation[:-1]
|
|
), "keyset derivation does not match up to the counter branch"
|
|
assert (
|
|
int(new_keyset_sat_derivation[-1].replace("'", ""))
|
|
- int(keyset_sat_derivation[-1].replace("'", ""))
|
|
== 0
|
|
), "counters should differ by exactly 1"
|
|
|
|
assert new_keyset_sat.input_fee_ppk == 1
|
|
assert len(new_keyset_sat.private_keys.values()) == 20
|
|
|
|
old_keyset = (await ledger.crud.get_keyset(db=ledger.db, id=keyset_sat.id))[0]
|
|
assert not old_keyset.active, "old keyset is still active"
|