mirror of
https://github.com/aljazceru/cdk.git
synced 2025-12-24 16:14:54 +01:00
* Here's a commit message for this change: refactor: Move mint tests to fake_wallet.rs and add descriptive comments refactor: pure wallet/mint does not need arc refactor: Consolidate NUT-06 test into single function and remove redundant module docs: Add comments explaining test purposes in integration tests file refactor: Remove anyhow and replace with expect for error handling refactor: use expect in pure tests feat: Add configurable database type via environment variable for test mint and wallet refactor: Update database initialization in test mint and wallet creation feat: Add temporary directory support for redb and sqlite databases in tests feat: Add database type argument to test commands in justfile ci: Add build matrix for pure-itest with memory, sqlite, and redb databases refactor: use expect in pure tests refactor: Move and refactor `test_swap_unbalanced` from mint to integration tests pure refactor: move mint tests to pure tests docs: Add detailed comments explaining test file purposes for mint and integration tests refactor: Extract keyset ID retrieval into a reusable function test: Add concurrent double-spend test with 3 swap transactions refactor: Simplify concurrent swap request processing and error handling test: Add check to verify all proofs are marked as spent in concurrent double-spend test refactor: Optimize proof state retrieval in concurrent double-spend test feat: Add test for concurrent melt race condition with same proofs fix: Update concurrent melt test to use melt quote and handle errors refactor: melt concurrrent refactor: Rename test function for clarity in concurrent double-spend scenario refactor: Modify test_concurrent_double_spend_melt to manually create melt requests in mint tasks feat: con melt test refactor: Optimize proof state handling and error recovery in check_spendable refactor: Extract helper method to reset proofs to original state fix: reset y states fix: reset y states * fix: acces of priv feilds * fix: add extra migrate
440 lines
14 KiB
YAML
440 lines
14 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
branches: [main]
|
|
release:
|
|
types: [created]
|
|
|
|
env:
|
|
CARGO_TERM_COLOR: always
|
|
|
|
jobs:
|
|
self-care:
|
|
name: Flake self-check
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Check Nix flake inputs
|
|
uses: DeterminateSystems/flake-checker-action@v7
|
|
with:
|
|
fail-mode: true
|
|
|
|
pre-commit-checks:
|
|
name: "Cargo fmt, typos"
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
steps:
|
|
- name: checkout
|
|
uses: actions/checkout@v4
|
|
- name: Install Nix
|
|
uses: DeterminateSystems/nix-installer-action@v11
|
|
- name: Nix Cache
|
|
uses: DeterminateSystems/magic-nix-cache-action@v6
|
|
- name: Rust Cache
|
|
uses: Swatinem/rust-cache@v2
|
|
- name: Cargo fmt
|
|
run: |
|
|
nix develop -i -L .#nightly --command bash -c '
|
|
# Force use of Nix-provided rustfmt
|
|
export RUSTFMT=$(command -v rustfmt)
|
|
cargo fmt --check
|
|
'
|
|
- name: typos
|
|
run: nix develop -i -L .#nightly --command typos
|
|
|
|
examples:
|
|
name: "Run examples"
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
needs: [pre-commit-checks, clippy]
|
|
strategy:
|
|
matrix:
|
|
build-args:
|
|
[
|
|
mint-token,
|
|
melt-token,
|
|
p2pk,
|
|
proof-selection,
|
|
wallet
|
|
]
|
|
steps:
|
|
- name: checkout
|
|
uses: actions/checkout@v4
|
|
- name: Install Nix
|
|
uses: DeterminateSystems/nix-installer-action@v11
|
|
- name: Nix Cache
|
|
uses: DeterminateSystems/magic-nix-cache-action@v6
|
|
- name: Rust Cache
|
|
uses: Swatinem/rust-cache@v2
|
|
- name: Run example
|
|
run: nix develop -i -L .#stable --command cargo r --example ${{ matrix.build-args }}
|
|
|
|
clippy:
|
|
name: "Stable build, clippy and test"
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
needs: pre-commit-checks
|
|
strategy:
|
|
matrix:
|
|
build-args:
|
|
[
|
|
-p cashu,
|
|
-p cashu --no-default-features,
|
|
-p cashu --no-default-features --features wallet,
|
|
-p cashu --no-default-features --features mint,
|
|
-p cashu --no-default-features --features "mint swagger",
|
|
-p cashu --no-default-features --features auth,
|
|
-p cashu --no-default-features --features "mint auth",
|
|
-p cashu --no-default-features --features "wallet auth",
|
|
-p cdk-common,
|
|
-p cdk-common --no-default-features,
|
|
-p cdk-common --no-default-features --features wallet,
|
|
-p cdk-common --no-default-features --features mint,
|
|
-p cdk-common --no-default-features --features "mint swagger",
|
|
-p cdk-common --no-default-features --features "auth",
|
|
-p cdk-common --no-default-features --features "mint auth",
|
|
-p cdk-common --no-default-features --features "wallet auth",
|
|
-p cdk,
|
|
-p cdk --no-default-features,
|
|
-p cdk --no-default-features --features wallet,
|
|
-p cdk --no-default-features --features mint,
|
|
-p cdk --no-default-features --features "mint swagger",
|
|
-p cdk --no-default-features --features auth,
|
|
-p cdk --features auth,
|
|
-p cdk --no-default-features --features "auth mint",
|
|
-p cdk --no-default-features --features "auth wallet",
|
|
-p cdk-redb,
|
|
-p cdk-sqlite,
|
|
-p cdk-sqlite --features sqlcipher,
|
|
-p cdk-axum --no-default-features,
|
|
-p cdk-axum --no-default-features --features swagger,
|
|
-p cdk-axum --no-default-features --features redis,
|
|
-p cdk-axum --no-default-features --features "redis swagger",
|
|
-p cdk-axum --no-default-features --features "auth redis",
|
|
-p cdk-axum,
|
|
-p cdk-cln,
|
|
-p cdk-lnd,
|
|
-p cdk-lnbits,
|
|
-p cdk-fake-wallet,
|
|
-p cdk-payment-processor,
|
|
--bin cdk-cli,
|
|
--bin cdk-cli --features sqlcipher,
|
|
--bin cdk-cli --features redb,
|
|
--bin cdk-cli --features "sqlcipher redb",
|
|
--bin cdk-mintd,
|
|
--bin cdk-mintd --features redis,
|
|
--bin cdk-mintd --features redb,
|
|
--bin cdk-mintd --features "redis swagger redb",
|
|
--bin cdk-mintd --features sqlcipher,
|
|
--bin cdk-mintd --no-default-features --features lnd,
|
|
--bin cdk-mintd --no-default-features --features cln,
|
|
--bin cdk-mintd --no-default-features --features lnbits,
|
|
--bin cdk-mintd --no-default-features --features fakewallet,
|
|
--bin cdk-mintd --no-default-features --features grpc-processor,
|
|
--bin cdk-mintd --no-default-features --features "management-rpc lnd",
|
|
--bin cdk-mintd --no-default-features --features "management-rpc cln",
|
|
--bin cdk-mintd --no-default-features --features "management-rpc lnbits",
|
|
--bin cdk-mintd --no-default-features --features "management-rpc grpc-processor",
|
|
--bin cdk-mintd --no-default-features --features "swagger lnd",
|
|
--bin cdk-mintd --no-default-features --features "swagger cln",
|
|
--bin cdk-mintd --no-default-features --features "swagger lnbits",
|
|
--bin cdk-mintd --no-default-features --features "auth lnd",
|
|
--bin cdk-mintd --no-default-features --features "auth cln",
|
|
--bin cdk-mint-cli,
|
|
]
|
|
steps:
|
|
- name: checkout
|
|
uses: actions/checkout@v4
|
|
- name: Install Nix
|
|
uses: DeterminateSystems/nix-installer-action@v11
|
|
- name: Nix Cache
|
|
uses: DeterminateSystems/magic-nix-cache-action@v6
|
|
- name: Rust Cache
|
|
uses: Swatinem/rust-cache@v2
|
|
- name: Clippy
|
|
run: nix develop -i -L .#stable --command cargo clippy ${{ matrix.build-args }} -- -D warnings
|
|
- name: Test
|
|
run: nix develop -i -L .#stable --command cargo test ${{ matrix.build-args }}
|
|
|
|
regtest-itest:
|
|
name: "Integration regtest tests"
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
needs: [pre-commit-checks, clippy, pure-itest, fake-mint-itest]
|
|
strategy:
|
|
matrix:
|
|
build-args:
|
|
[
|
|
-p cdk-integration-tests,
|
|
]
|
|
database:
|
|
[
|
|
REDB,
|
|
SQLITE,
|
|
]
|
|
steps:
|
|
- name: checkout
|
|
uses: actions/checkout@v4
|
|
- name: Install Nix
|
|
uses: DeterminateSystems/nix-installer-action@v11
|
|
- name: Nix Cache
|
|
uses: DeterminateSystems/magic-nix-cache-action@v6
|
|
- name: Rust Cache
|
|
uses: Swatinem/rust-cache@v2
|
|
- name: Test
|
|
run: nix develop -i -L .#stable --command just itest ${{ matrix.database }}
|
|
|
|
fake-mint-itest:
|
|
name: "Integration fake mint tests"
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
needs: [pre-commit-checks, clippy]
|
|
strategy:
|
|
matrix:
|
|
build-args:
|
|
[
|
|
-p cdk-integration-tests,
|
|
]
|
|
database:
|
|
[
|
|
REDB,
|
|
SQLITE,
|
|
]
|
|
steps:
|
|
- name: checkout
|
|
uses: actions/checkout@v4
|
|
- name: Install Nix
|
|
uses: DeterminateSystems/nix-installer-action@v11
|
|
- name: Nix Cache
|
|
uses: DeterminateSystems/magic-nix-cache-action@v6
|
|
- name: Rust Cache
|
|
uses: Swatinem/rust-cache@v2
|
|
- name: Clippy
|
|
run: nix develop -i -L .#stable --command cargo clippy -- -D warnings
|
|
- name: Test fake auth mint
|
|
run: nix develop -i -L .#stable --command just fake-mint-itest ${{ matrix.database }}
|
|
|
|
pure-itest:
|
|
name: "Integration fake wallet tests"
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
needs: [pre-commit-checks, clippy]
|
|
strategy:
|
|
matrix:
|
|
database:
|
|
[
|
|
memory,
|
|
sqlite,
|
|
redb
|
|
]
|
|
steps:
|
|
- name: checkout
|
|
uses: actions/checkout@v4
|
|
- name: Install Nix
|
|
uses: DeterminateSystems/nix-installer-action@v11
|
|
- name: Nix Cache
|
|
uses: DeterminateSystems/magic-nix-cache-action@v6
|
|
- name: Rust Cache
|
|
uses: Swatinem/rust-cache@v2
|
|
- name: Test fake mint
|
|
run: nix develop -i -L .#stable --command just test-pure ${{ matrix.database }}
|
|
- name: Test mint
|
|
run: nix develop -i -L .#stable --command just test
|
|
|
|
|
|
payment-processor-itests:
|
|
name: "Payment processor tests"
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
needs: [pre-commit-checks, clippy, pure-itest, fake-mint-itest, regtest-itest]
|
|
strategy:
|
|
matrix:
|
|
ln:
|
|
[
|
|
FAKEWALLET,
|
|
CLN,
|
|
LND
|
|
]
|
|
steps:
|
|
- name: checkout
|
|
uses: actions/checkout@v4
|
|
- name: Install Nix
|
|
uses: DeterminateSystems/nix-installer-action@v11
|
|
- name: Nix Cache
|
|
uses: DeterminateSystems/magic-nix-cache-action@v6
|
|
- name: Rust Cache
|
|
uses: Swatinem/rust-cache@v2
|
|
- name: Test
|
|
run: nix develop -i -L .#stable --command just itest-payment-processor ${{matrix.ln}}
|
|
|
|
msrv-build:
|
|
name: "MSRV build"
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
needs: [pre-commit-checks, clippy, pure-itest]
|
|
strategy:
|
|
matrix:
|
|
build-args:
|
|
[
|
|
-p cashu --no-default-features --features "wallet mint",
|
|
-p cdk-common --no-default-features --features "wallet mint",
|
|
-p cdk,
|
|
-p cdk --no-default-features --features "mint auth",
|
|
-p cdk --no-default-features --features "wallet auth",
|
|
-p cdk --no-default-features --features "http_subscription",
|
|
-p cdk-axum,
|
|
-p cdk-axum --no-default-features --features redis,
|
|
-p cdk-lnbits,
|
|
-p cdk-fake-wallet,
|
|
-p cdk-cln,
|
|
-p cdk-lnd,
|
|
-p cdk-mint-rpc,
|
|
-p cdk-sqlite,
|
|
-p cdk-mintd,
|
|
-p cdk-payment-processor --no-default-features,
|
|
]
|
|
steps:
|
|
- name: checkout
|
|
uses: actions/checkout@v4
|
|
- name: Install Nix
|
|
uses: DeterminateSystems/nix-installer-action@v11
|
|
- name: Nix Cache
|
|
uses: DeterminateSystems/magic-nix-cache-action@v6
|
|
- name: Rust Cache
|
|
uses: Swatinem/rust-cache@v2
|
|
- name: Build
|
|
run: nix develop -i -L .#msrv --command cargo build ${{ matrix.build-args }}
|
|
|
|
|
|
check-wasm:
|
|
name: Check WASM
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
needs: [pre-commit-checks, clippy, pure-itest]
|
|
strategy:
|
|
matrix:
|
|
rust:
|
|
- stable
|
|
target:
|
|
- wasm32-unknown-unknown
|
|
build-args:
|
|
[
|
|
-p cdk,
|
|
-p cdk --no-default-features,
|
|
-p cdk --no-default-features --features wallet,
|
|
]
|
|
steps:
|
|
- name: checkout
|
|
uses: actions/checkout@v4
|
|
- name: Install Nix
|
|
uses: DeterminateSystems/nix-installer-action@v11
|
|
- name: Nix Cache
|
|
uses: DeterminateSystems/magic-nix-cache-action@v6
|
|
- name: Rust Cache
|
|
uses: Swatinem/rust-cache@v2
|
|
- name: Build cdk and binding
|
|
run: nix develop -i -L ".#${{ matrix.rust }}" --command cargo build ${{ matrix.build-args }} --target ${{ matrix.target }}
|
|
|
|
|
|
check-wasm-msrv:
|
|
name: Check WASM
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
needs: [pre-commit-checks, clippy, msrv-build]
|
|
strategy:
|
|
matrix:
|
|
rust:
|
|
- msrv
|
|
target:
|
|
- wasm32-unknown-unknown
|
|
build-args:
|
|
[
|
|
-p cdk,
|
|
-p cdk --no-default-features,
|
|
-p cdk --no-default-features --features wallet,
|
|
]
|
|
steps:
|
|
- name: checkout
|
|
uses: actions/checkout@v4
|
|
- name: Install Nix
|
|
uses: DeterminateSystems/nix-installer-action@v11
|
|
- name: Nix Cache
|
|
uses: DeterminateSystems/magic-nix-cache-action@v6
|
|
- name: Rust Cache
|
|
uses: Swatinem/rust-cache@v2
|
|
- name: Build cdk wasm
|
|
run: nix develop -i -L ".#${{ matrix.rust }}" --command cargo build ${{ matrix.build-args }} --target ${{ matrix.target }}
|
|
|
|
fake-mint-auth-itest:
|
|
name: "Integration fake mint auth tests"
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
needs: [pre-commit-checks, clippy, pure-itest, fake-mint-itest]
|
|
strategy:
|
|
matrix:
|
|
database:
|
|
[
|
|
REDB,
|
|
SQLITE,
|
|
]
|
|
steps:
|
|
- name: checkout
|
|
uses: actions/checkout@v4
|
|
- name: Install Nix
|
|
uses: DeterminateSystems/nix-installer-action@v11
|
|
- name: Nix Cache
|
|
uses: DeterminateSystems/magic-nix-cache-action@v6
|
|
- name: Rust Cache
|
|
uses: Swatinem/rust-cache@v2
|
|
- name: Start Keycloak with Backup
|
|
run: |
|
|
docker compose -f misc/keycloak/docker-compose-recover.yml up -d
|
|
until docker logs $(docker ps -q --filter "ancestor=quay.io/keycloak/keycloak:25.0.6") | grep "Keycloak 25.0.6 on JVM (powered by Quarkus 3.8.5) started"; do sleep 1; done
|
|
|
|
- name: Verify Keycloak Import
|
|
run: |
|
|
docker logs $(docker ps -q --filter "ancestor=quay.io/keycloak/keycloak:25.0.6") | grep "Imported"
|
|
- name: Test fake auth mint
|
|
run: nix develop -i -L .#stable --command just fake-auth-mint-itest ${{ matrix.database }} http://127.0.0.1:8080/realms/cdk-test-realm/.well-known/openid-configuration
|
|
- name: Stop and clean up Docker Compose
|
|
run: |
|
|
docker compose -f misc/keycloak/docker-compose-recover.yml down
|
|
|
|
doc-tests:
|
|
name: "Documentation Tests"
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
needs: pre-commit-checks
|
|
steps:
|
|
- name: checkout
|
|
uses: actions/checkout@v4
|
|
- name: Install Nix
|
|
uses: DeterminateSystems/nix-installer-action@v11
|
|
- name: Nix Cache
|
|
uses: DeterminateSystems/magic-nix-cache-action@v6
|
|
- name: Rust Cache
|
|
uses: Swatinem/rust-cache@v2
|
|
- name: Run doc tests
|
|
run: nix develop -i -L .#stable --command cargo test --doc
|
|
|
|
strict-docs:
|
|
name: "Strict Documentation Check"
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
needs: doc-tests
|
|
steps:
|
|
- name: checkout
|
|
uses: actions/checkout@v4
|
|
- name: Install Nix
|
|
uses: DeterminateSystems/nix-installer-action@v11
|
|
- name: Nix Cache
|
|
uses: DeterminateSystems/magic-nix-cache-action@v6
|
|
- name: Rust Cache
|
|
uses: Swatinem/rust-cache@v2
|
|
- name: Check docs with strict warnings
|
|
run: nix develop -i -L .#stable --command just docs-strict
|