mirror of
https://github.com/aljazceru/nutshell.git
synced 2025-12-20 02:24:20 +01:00
Determinstic secrets / ecash restore (#131)
* first working version but some sats go missing * back at it * make format * restore to main * move mint database * fix some tests * make format * remove old _construct_outputs we reintroduced in merge with main * add type annotations * add wallet private key to tests * wallet: load proofs * fix tests * _generate_secrets with deterministic generation (temporary) * allow wallet initialization with custom private key * add pk to wallet api test * mint scope=module * remove private_key from test_wallet.py to see if it helps with the github tests * readd private keys to tests * workflow without env * add more private key! * readd env * ledger scope session * add default private key for testing * generate private keys if not available * testing * its working!!! * first iteration of bip32 working * get mint info and add many type annotations * tests * fix tests with bip32 * restore from multiple mints * disable profiler * make format * failed POST /mint do not increment secret counter * store derivation path in each token * fix tests * refactor migrations so private keys can be generated by the wallet with .with_db() classmethod * start fixing tests * all tests passing except those that need to set a specific private key * bip39 mnemonic to seed - with db but restore doesnt work yet with custom seed * mnemonic restore works * enter mnemonic in cli * fix tests to use different mnemonic * properly ask user for seed input * tests: dont ask for inputs * try to fix tests * fix cashu -d * fixing * bump version and add more text to mnemonic enter * add more comments * add many more comments and type annotations in the wallet * dont print generated mnemonic and dont wait for input * fix test * does this fix tests? * sigh.... * make format * do not restore from an initialized wallet * fix mnemonics * fix nitpicks * print wallet name if nonstandard wallet * fix merge error and remove comments * poetry lock and requirements * remove unused code * fix tests * mnemonic.lower() and add keyset id if not present for backwards compat * edit comment
This commit is contained in:
@@ -37,7 +37,6 @@ class UvicornServer(multiprocessing.Process):
|
||||
def run(self, *args, **kwargs):
|
||||
settings.lightning = False
|
||||
settings.mint_lightning_backend = "FakeWallet"
|
||||
settings.mint_listen_port = 3337
|
||||
settings.mint_database = "data/test_mint"
|
||||
settings.mint_private_key = self.private_key
|
||||
settings.mint_derivation_path = "0/0/0/0"
|
||||
@@ -46,36 +45,24 @@ class UvicornServer(multiprocessing.Process):
|
||||
if dirpath.exists() and dirpath.is_dir():
|
||||
shutil.rmtree(dirpath)
|
||||
|
||||
dirpath = Path("data/test_wallet")
|
||||
dirpath = Path("data/wallet1")
|
||||
if dirpath.exists() and dirpath.is_dir():
|
||||
shutil.rmtree(dirpath)
|
||||
|
||||
dirpath = Path("data/wallet2")
|
||||
if dirpath.exists() and dirpath.is_dir():
|
||||
shutil.rmtree(dirpath)
|
||||
|
||||
dirpath = Path("data/wallet3")
|
||||
if dirpath.exists() and dirpath.is_dir():
|
||||
shutil.rmtree(dirpath)
|
||||
|
||||
self.server.run()
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True, scope="session")
|
||||
def mint():
|
||||
settings.mint_listen_port = 3337
|
||||
settings.port = 3337
|
||||
settings.mint_url = "http://localhost:3337"
|
||||
settings.port = settings.mint_listen_port
|
||||
settings.nostr_private_key = secrets.token_hex(32) # wrong private key
|
||||
config = uvicorn.Config(
|
||||
"cashu.mint.app:app",
|
||||
port=settings.mint_listen_port,
|
||||
host="127.0.0.1",
|
||||
)
|
||||
|
||||
server = UvicornServer(config=config)
|
||||
server.start()
|
||||
time.sleep(1)
|
||||
yield server
|
||||
server.stop()
|
||||
|
||||
|
||||
@pytest_asyncio.fixture(scope="function")
|
||||
async def ledger():
|
||||
async def start_mint_init(ledger):
|
||||
async def start_mint_init(ledger: Ledger):
|
||||
await migrate_databases(ledger.db, migrations_mint)
|
||||
await ledger.load_used_proofs()
|
||||
await ledger.init_keysets()
|
||||
@@ -93,20 +80,18 @@ async def ledger():
|
||||
yield ledger
|
||||
|
||||
|
||||
# @pytest.fixture(autouse=True, scope="session")
|
||||
# def mint_3338():
|
||||
# settings.mint_listen_port = 3338
|
||||
# settings.port = 3338
|
||||
# settings.mint_url = "http://localhost:3338"
|
||||
# settings.port = settings.mint_listen_port
|
||||
# config = uvicorn.Config(
|
||||
# "cashu.mint.app:app",
|
||||
# port=settings.mint_listen_port,
|
||||
# host="127.0.0.1",
|
||||
# )
|
||||
@pytest.fixture(autouse=True, scope="session")
|
||||
def mint():
|
||||
settings.mint_listen_port = 3337
|
||||
settings.mint_url = "http://localhost:3337"
|
||||
config = uvicorn.Config(
|
||||
"cashu.mint.app:app",
|
||||
port=settings.mint_listen_port,
|
||||
host="127.0.0.1",
|
||||
)
|
||||
|
||||
# server = UvicornServer(config=config, private_key="SECOND_PRIVATE_KEY")
|
||||
# server.start()
|
||||
# time.sleep(1)
|
||||
# yield server
|
||||
# server.stop()
|
||||
server = UvicornServer(config=config)
|
||||
server.start()
|
||||
time.sleep(1)
|
||||
yield server
|
||||
server.stop()
|
||||
|
||||
Reference in New Issue
Block a user