-
Notifications
You must be signed in to change notification settings - Fork 47
Open
Labels
onlydust-waveContribute to awesome OSS repos during OnlyDust's open source weekContribute to awesome OSS repos during OnlyDust's open source week
Description
π Final Integration Testing for Stellar Wallet Service π οΈ
π Description
Implement integration tests to verify the end-to-end functionality of the Stellar wallet service, ensuring all components (authentication, KYC, wallet operations, and Soroban interactions) work together seamlessly. These tests will simulate real-world user flows, such as registering biometric credentials, submitting KYC data, creating accounts, sending transactions, and querying statuses, to validate the systemβs reliability and correctness.
π― Objective
Create integration tests in services/stellar-wallet/tests/integration to cover key user flows, mocking external dependencies (e.g., Stellar testnet, Soroban RPC) to ensure reliable test execution.
π Structure
- Directory:
services/stellar-wallet - Files:
tests/integration/auth.test.jstests/integration/kyc.test.jstests/integration/wallet.test.js
- Expected structure:
services/stellar-wallet βββ src β βββ index.js β βββ stellar β β βββ client.js β β βββ keys.js β β βββ fund.js β β βββ sign.js β βββ db β β βββ kyc.js β βββ routes β β βββ kyc.js β β βββ kyc-verify.js β β βββ kyc-status.js β β βββ auth-register.js β β βββ auth-verify.js β β βββ auth-login.js β β βββ wallet.js β β βββ docs.js β βββ kyc β β βββ validate.js β βββ soroban β β βββ client.js β β βββ kyc-contract.rs β β βββ deploy.js β βββ auth β β βββ webauthn.js β β βββ jwt.js β βββ middleware β βββ rate-limit.js β βββ logger.js βββ config β βββ db.sqlite βββ docs β βββ api.yaml βββ tests β βββ integration β β βββ auth.test.js β β βββ kyc.test.js β β βββ wallet.test.js β βββ stellar β β βββ client.test.js β β βββ keys.test.js β β βββ fund.test.js β β βββ sign.test.js β βββ db β β βββ kyc.test.js β βββ routes β β βββ kyc.test.js β β βββ kyc-verify.test.js β β βββ kyc-status.test.js β β βββ auth-register.test.js β β βββ auth-verify.test.js β β βββ auth-login.test.js β β βββ wallet.test.js β β βββ docs.test.js β βββ kyc β β βββ validate.test.js β βββ soroban β β βββ client.test.js β β βββ deploy.test.js β βββ auth β β βββ jwt.test.js β βββ middleware β βββ rate-limit.test.js β βββ logger.test.js βββ package.json βββ .env.example βββ .eslintrc.json βββ .eslintignore βββ .prettierrc.json βββ .prettierignore βββ .gitignore
β Requirements
- Create a branch named
feat/integration-testingfor this task. - Create integration tests in
tests/integrationto cover the following user flows:- Authentication Flow (
auth.test.js):- Register biometric credentials (
POST /auth/register, Issue 17). - Verify credentials and obtain a JWT (
POST /auth/verify,POST /auth/login, Issues 18, 20).
- Register biometric credentials (
- KYC Flow (
kyc.test.js):- Submit KYC data (
POST /kyc/submit, Issue 9). - Register KYC data in Soroban (
POST /kyc/verify, Issue 14). - Query KYC status (
GET /kyc/status/:id, Issue 15).
- Submit KYC data (
- Wallet Flow (
wallet.test.js):- Create a Stellar account (
POST /wallet/create, Issue 19). - Send a transaction (
POST /wallet/send, Issue 23). - Query transaction history (
GET /wallet/transactions/:user_id, Issue 24).
- Create a Stellar account (
- Authentication Flow (
- Mock external dependencies:
- Stellar SDK for testnet interactions (Horizon, Friendbot).
- Soroban client for contract calls.
- WebAuthn server for biometric authentication.
- Use an in-memory SQLite database (e.g.,
sqlite3with:memory:) for tests to avoid file system dependencies. - Verify that:
- Each flow completes successfully with expected HTTP status codes (e.g., 200, 201).
- Protected endpoints require valid JWTs (Issue 21).
- Rate limiting is enforced (Issue 25).
- Logs are generated for requests and operations (Issue 27).
- Handle errors (e.g., invalid inputs, unauthorized access) and verify correct error responses.
- Update the CI pipeline configuration (from Issue 1) to include integration tests in the test job.
- Ensure the code adheres to ESLint and Prettier rules (from Issue 3).
- Commit changes to the
feat/integration-testingbranch with a message likefeat: final integration testing. - Verify that the CI pipeline passes, with linting and test jobs (including integration tests) succeeding.
π Expected Outcomes
- Integration tests in
tests/integration/auth.test.js,kyc.test.js, andwallet.test.jscover key user flows. - Tests mock external dependencies (Stellar SDK, Soroban, WebAuthn) and use an in-memory SQLite database.
- All flows complete successfully with expected HTTP status codes and responses.
- Protected endpoints enforce JWT authentication and rate limiting.
- Logs are generated for requests and critical operations.
- CI pipeline includes integration tests and passes successfully.
- Code passes ESLint and Prettier checks.
- Changes are committed to the
feat/integration-testingbranch with a descriptive lowercase commit message. - CI pipeline runs successfully, with linting passing for new test files and the integration tests passing.
π References
- Jest Integration Testing
- Stellar SDK Mocking
- SimpleWebAuthn Server Mocking
- SQLite3 In-Memory Database
- ESLint Node.js Rules
π Notes
- Integration tests should simulate real-world scenarios, chaining API calls to mimic user behavior.
- Mock external services to ensure tests are fast and reliable in CI.
- Use an in-memory SQLite database to reset state between tests.
- Ensure tests cover error cases (e.g., invalid JWT, rate limit exceeded, missing KYC data).
- Commit messages must be in lowercase and start with
feat,change,fix,chore, orrefactor. - The CI pipeline should validate the new code, ensuring ESLint passes and integration tests execute successfully.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
onlydust-waveContribute to awesome OSS repos during OnlyDust's open source weekContribute to awesome OSS repos during OnlyDust's open source week