From dc29b251526e5ebe7fab0c4efd7d857b16eeeec2 Mon Sep 17 00:00:00 2001 From: callebtc <93376500+callebtc@users.noreply.github.com> Date: Sun, 11 Feb 2024 13:54:50 +0100 Subject: [PATCH 01/10] with postgres --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 95be9061..4bc78fa7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,8 +17,8 @@ jobs: poetry-version: ["1.7.1"] mint-cache-secrets: ["false", "true"] mint-only-deprecated: ["false", "true"] - # db-url: ["", "postgres://cashu:cashu@localhost:5432/cashu"] # TODO: Postgres test not working - db-url: [""] + db-url: ["", "postgres://cashu:cashu@localhost:5432/cashu"] # TODO: Postgres test not working + # db-url: [""] backend-wallet-class: ["FakeWallet"] uses: ./.github/workflows/tests.yml with: From 97387618574696f615abdb527de688843456a28a Mon Sep 17 00:00:00 2001 From: callebtc <93376500+callebtc@users.noreply.github.com> Date: Sun, 11 Feb 2024 14:47:46 +0100 Subject: [PATCH 02/10] postgres test explicit --- tests/conftest.py | 2 +- tests/helpers.py | 1 + tests/test_mint_db.py | 7 +++++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/tests/conftest.py b/tests/conftest.py index 53a36c4a..69965836 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -35,7 +35,7 @@ settings.fakewallet_brr = True settings.fakewallet_delay_payment = False settings.fakewallet_stochastic_invoice = False -settings.mint_database = "./test_data/test_mint" +settings.mint_database = settings.mint_database if settings.mint_database.startswith("postgres") else "./test_data/test_mint" settings.mint_derivation_path = "m/0'/0'/0'" settings.mint_derivation_path_list = [] settings.mint_private_key = "TEST_PRIVATE_KEY" diff --git a/tests/helpers.py b/tests/helpers.py index f121711d..94fe729b 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -31,6 +31,7 @@ async def get_random_invoice_data(): is_regtest: bool = not is_fake is_deprecated_api_only = settings.debug_mint_only_deprecated is_github_actions = os.getenv("GITHUB_ACTIONS") == "true" +is_postgres = settings.mint_database.startswith("postgres") docker_lightning_cli = [ "docker", diff --git a/tests/test_mint_db.py b/tests/test_mint_db.py index d45a4200..70f03727 100644 --- a/tests/test_mint_db.py +++ b/tests/test_mint_db.py @@ -6,6 +6,7 @@ from cashu.wallet.wallet import Wallet from cashu.wallet.wallet import Wallet as Wallet1 from tests.conftest import SERVER_ENDPOINT +from tests.helpers import is_postgres async def assert_err(f, msg): @@ -61,3 +62,9 @@ async def test_melt_quote(wallet1: Wallet, ledger: Ledger): assert quote.checking_id == invoice.payment_hash assert quote.paid_time is None assert quote.created_time + +@pytest.mark.asyncio +@pytest.mark.skipif(not is_postgres, reason="only works with Postgres") +async def test_postgres_working(): + assert is_postgres + assert True From c2c72b61f18f7f2b899a7d732bf9ea804c00fd2a Mon Sep 17 00:00:00 2001 From: callebtc <93376500+callebtc@users.noreply.github.com> Date: Sun, 11 Feb 2024 14:48:43 +0100 Subject: [PATCH 03/10] make format --- tests/conftest.py | 6 +++++- tests/test_mint_db.py | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/tests/conftest.py b/tests/conftest.py index 69965836..08d1673f 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -35,7 +35,11 @@ settings.fakewallet_brr = True settings.fakewallet_delay_payment = False settings.fakewallet_stochastic_invoice = False -settings.mint_database = settings.mint_database if settings.mint_database.startswith("postgres") else "./test_data/test_mint" +settings.mint_database = ( + settings.mint_database + if settings.mint_database.startswith("postgres") + else "./test_data/test_mint" +) settings.mint_derivation_path = "m/0'/0'/0'" settings.mint_derivation_path_list = [] settings.mint_private_key = "TEST_PRIVATE_KEY" diff --git a/tests/test_mint_db.py b/tests/test_mint_db.py index 70f03727..1d006a2f 100644 --- a/tests/test_mint_db.py +++ b/tests/test_mint_db.py @@ -63,6 +63,7 @@ async def test_melt_quote(wallet1: Wallet, ledger: Ledger): assert quote.paid_time is None assert quote.created_time + @pytest.mark.asyncio @pytest.mark.skipif(not is_postgres, reason="only works with Postgres") async def test_postgres_working(): From 6ddf019a8233022d1cf4dd8224c82a75fe7d3618 Mon Sep 17 00:00:00 2001 From: callebtc <93376500+callebtc@users.noreply.github.com> Date: Sun, 11 Feb 2024 14:56:27 +0100 Subject: [PATCH 04/10] start postgres only if needed --- .github/workflows/ci.yml | 4 ++-- .github/workflows/regtest.yml | 19 +++++++++++++++++-- .github/workflows/tests.yml | 5 +++-- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4bc78fa7..3fef618b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,8 +17,8 @@ jobs: poetry-version: ["1.7.1"] mint-cache-secrets: ["false", "true"] mint-only-deprecated: ["false", "true"] - db-url: ["", "postgres://cashu:cashu@localhost:5432/cashu"] # TODO: Postgres test not working - # db-url: [""] + mint-database: ["", "postgres://cashu:cashu@localhost:5432/cashu"] + # mint-database: [""] backend-wallet-class: ["FakeWallet"] uses: ./.github/workflows/tests.yml with: diff --git a/.github/workflows/regtest.yml b/.github/workflows/regtest.yml index 48653736..8255b503 100644 --- a/.github/workflows/regtest.yml +++ b/.github/workflows/regtest.yml @@ -12,7 +12,7 @@ on: os-version: default: "ubuntu-latest" type: string - db-url: + mint-database: default: "" type: string backend-wallet-class: @@ -23,6 +23,21 @@ jobs: regtest: runs-on: ${{ inputs.os-version }} timeout-minutes: 10 + services: + postgres: + image: postgres:latest + env: + POSTGRES_USER: cashu + POSTGRES_PASSWORD: cashu + POSTGRES_DB: cashu + ports: + - 5432:5432 + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + if: startsWith(inputs.mint-database, 'postgres') steps: - uses: actions/checkout@v3 @@ -47,7 +62,7 @@ jobs: WALLET_NAME: test_wallet MINT_HOST: localhost MINT_PORT: 3337 - MINT_DATABASE: ${{ inputs.db-url }} + MINT_DATABASE: ${{ inputs.mint-database }} TOR: false MINT_LIGHTNING_BACKEND: ${{ inputs.backend-wallet-class }} MINT_LNBITS_ENDPOINT: http://localhost:5001 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 6659b06a..96a5ea63 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -9,7 +9,7 @@ on: poetry-version: default: "1.7.1" type: string - db-url: + mint-database: default: "" type: string os: @@ -40,6 +40,7 @@ jobs: --health-interval 10s --health-timeout 5s --health-retries 5 + if: startsWith(inputs.mint-database, 'postgres') steps: - name: Checkout repository and submodules uses: actions/checkout@v2 @@ -53,7 +54,7 @@ jobs: WALLET_NAME: test_wallet MINT_HOST: localhost MINT_PORT: 3337 - MINT_DATABASE: ${{ inputs.db-url }} + MINT_DATABASE: ${{ inputs.mint-database }} MINT_CACHE_SECRETS: ${{ inputs.mint-cache-secrets }} DEBUG_MINT_ONLY_DEPRECATED: ${{ inputs.mint-only-deprecated }} TOR: false From a9a51589821de9f79ea571c8b4910bd19832b5c6 Mon Sep 17 00:00:00 2001 From: callebtc <93376500+callebtc@users.noreply.github.com> Date: Sun, 11 Feb 2024 14:57:26 +0100 Subject: [PATCH 05/10] remove if again --- .github/workflows/regtest.yml | 1 - .github/workflows/tests.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/.github/workflows/regtest.yml b/.github/workflows/regtest.yml index 8255b503..35bf5c4b 100644 --- a/.github/workflows/regtest.yml +++ b/.github/workflows/regtest.yml @@ -37,7 +37,6 @@ jobs: --health-interval 10s --health-timeout 5s --health-retries 5 - if: startsWith(inputs.mint-database, 'postgres') steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 96a5ea63..2ca63a24 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -40,7 +40,6 @@ jobs: --health-interval 10s --health-timeout 5s --health-retries 5 - if: startsWith(inputs.mint-database, 'postgres') steps: - name: Checkout repository and submodules uses: actions/checkout@v2 From 3880f0d40c3ca3e6ac40c7bb28738a74c7d09e83 Mon Sep 17 00:00:00 2001 From: callebtc <93376500+callebtc@users.noreply.github.com> Date: Sun, 11 Feb 2024 15:00:57 +0100 Subject: [PATCH 06/10] print db --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 2ca63a24..0da87d14 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -24,7 +24,7 @@ on: jobs: poetry: - name: Run (mint-cache-secrets ${{ inputs.mint-cache-secrets }}, mint-only-deprecated ${{ inputs.mint-only-deprecated }}) + name: Run (mint-cache-secrets ${{ inputs.mint-cache-secrets }}, mint-only-deprecated ${{ inputs.mint-only-deprecated }}, mint-database ${{ inputs.mint-database }}) runs-on: ${{ inputs.os }} services: postgres: From 8637cfa5eb28054bade2a2c1ef4914822f6083b0 Mon Sep 17 00:00:00 2001 From: callebtc <93376500+callebtc@users.noreply.github.com> Date: Sun, 11 Feb 2024 15:07:13 +0100 Subject: [PATCH 07/10] db in matrix --- .github/workflows/ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3fef618b..43f3c5f3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,7 +17,7 @@ jobs: poetry-version: ["1.7.1"] mint-cache-secrets: ["false", "true"] mint-only-deprecated: ["false", "true"] - mint-database: ["", "postgres://cashu:cashu@localhost:5432/cashu"] + mint-database: ["./test_data/test_mint", "postgres://cashu:cashu@localhost:5432/cashu"] # mint-database: [""] backend-wallet-class: ["FakeWallet"] uses: ./.github/workflows/tests.yml @@ -27,6 +27,7 @@ jobs: poetry-version: ${{ matrix.poetry-version }} mint-cache-secrets: ${{ matrix.mint-cache-secrets }} mint-only-deprecated: ${{ matrix.mint-only-deprecated }} + mint-database: ${{ matrix.mint-database }} regtest: uses: ./.github/workflows/regtest.yml strategy: From 5c3d55d03a4a4e3eead429a601fa41348acb3b5a Mon Sep 17 00:00:00 2001 From: callebtc <93376500+callebtc@users.noreply.github.com> Date: Sun, 11 Feb 2024 15:25:30 +0100 Subject: [PATCH 08/10] delete schema --- tests/conftest.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/conftest.py b/tests/conftest.py index 08d1673f..3d7a0ea1 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -104,6 +104,13 @@ async def start_mint_init(ledger: Ledger): db_file = os.path.join(settings.mint_database, "mint.sqlite3") if os.path.exists(db_file): os.remove(db_file) + else: + # clear postgres database + db = Database("mint", settings.mint_database) + async with db.connect() as conn: + await conn.execute("DROP SCHEMA public CASCADE;") + await conn.execute("CREATE SCHEMA public;") + wallets_module = importlib.import_module("cashu.lightning") lightning_backend = getattr(wallets_module, settings.mint_lightning_backend)() backends = { From b5e6db4ceca0c4d2d2bedd6ba6d3c2530fce60ff Mon Sep 17 00:00:00 2001 From: callebtc <93376500+callebtc@users.noreply.github.com> Date: Sun, 11 Feb 2024 15:34:24 +0100 Subject: [PATCH 09/10] use new env var MINT_TEST_DATABASE for tests --- .github/workflows/regtest.yml | 2 +- .github/workflows/tests.yml | 2 +- cashu/core/settings.py | 1 + tests/conftest.py | 6 +----- 4 files changed, 4 insertions(+), 7 deletions(-) diff --git a/.github/workflows/regtest.yml b/.github/workflows/regtest.yml index 35bf5c4b..46e2d8ed 100644 --- a/.github/workflows/regtest.yml +++ b/.github/workflows/regtest.yml @@ -61,7 +61,7 @@ jobs: WALLET_NAME: test_wallet MINT_HOST: localhost MINT_PORT: 3337 - MINT_DATABASE: ${{ inputs.mint-database }} + MINT_TEST_DATABASE: ${{ inputs.mint-database }} TOR: false MINT_LIGHTNING_BACKEND: ${{ inputs.backend-wallet-class }} MINT_LNBITS_ENDPOINT: http://localhost:5001 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 0da87d14..cf1a176b 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -53,7 +53,7 @@ jobs: WALLET_NAME: test_wallet MINT_HOST: localhost MINT_PORT: 3337 - MINT_DATABASE: ${{ inputs.mint-database }} + MINT_TEST_DATABASE: ${{ inputs.mint-database }} MINT_CACHE_SECRETS: ${{ inputs.mint-cache-secrets }} DEBUG_MINT_ONLY_DEPRECATED: ${{ inputs.mint-only-deprecated }} TOR: false diff --git a/cashu/core/settings.py b/cashu/core/settings.py index ace76940..5bf13d4a 100644 --- a/cashu/core/settings.py +++ b/cashu/core/settings.py @@ -56,6 +56,7 @@ class MintSettings(CashuSettings): mint_listen_port: int = Field(default=3338) mint_lightning_backend: str = Field(default="LNbitsWallet") mint_database: str = Field(default="data/mint") + mint_test_database: str = Field(default="test_data/test_mint") mint_peg_out_only: bool = Field( default=False, title="Peg-out only", diff --git a/tests/conftest.py b/tests/conftest.py index 3d7a0ea1..231853eb 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -35,11 +35,7 @@ settings.fakewallet_brr = True settings.fakewallet_delay_payment = False settings.fakewallet_stochastic_invoice = False -settings.mint_database = ( - settings.mint_database - if settings.mint_database.startswith("postgres") - else "./test_data/test_mint" -) +settings.mint_database = settings.mint_test_database settings.mint_derivation_path = "m/0'/0'/0'" settings.mint_derivation_path_list = [] settings.mint_private_key = "TEST_PRIVATE_KEY" From 042870ae4f2d4a9f86185327a7b6979b56c511de Mon Sep 17 00:00:00 2001 From: callebtc <93376500+callebtc@users.noreply.github.com> Date: Sun, 11 Feb 2024 15:47:25 +0100 Subject: [PATCH 10/10] add db path to regtest --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 43f3c5f3..53459421 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -39,3 +39,4 @@ jobs: with: python-version: ${{ matrix.python-version }} backend-wallet-class: ${{ matrix.backend-wallet-class }} + mint-database: "./test_data/test_mint"