- Remove Address field from PartyEndpoint (parties connect to router themselves) - Update K8s Discovery to only manage PartyID and Role labels - Add Party registration and SessionEvent protobuf definitions - Implement PartyRegistry and SessionEventBroadcaster domain logic - Add RegisterParty and SubscribeSessionEvents gRPC handlers - Prepare infrastructure for party-driven MPC coordination This is the first phase of migrating from coordinator-driven to party-driven architecture following international MPC system design patterns. |
||
|---|---|---|
| .. | ||
| e2e | ||
| integration | ||
| setup | ||
| unit | ||
| utils | ||
| README.md | ||
| jest-e2e-db.json | ||
| jest-e2e-mock.json | ||
| jest-e2e.json | ||
| tsconfig.json | ||
README.md
Backup Service Tests
Test Structure
test/
├── unit/ # Unit tests (no external dependencies)
│ ├── api/ # Controller tests
│ ├── application/ # Handler tests
│ ├── domain/ # Entity and value object tests
│ ├── infrastructure/ # Service tests
│ └── shared/ # Guard, filter, interceptor tests
├── integration/ # Integration tests (mocked DB)
├── e2e/ # End-to-end tests
│ ├── backup-share-mock.e2e-spec.ts # Mock DB E2E tests
│ └── backup-share.e2e-spec.ts # Real DB E2E tests
├── setup/ # Test setup files
│ ├── global-setup.ts # DB container setup
│ ├── global-teardown.ts # DB container cleanup
│ ├── jest-e2e-setup.ts # Real DB test setup
│ ├── jest-mock-setup.ts # Mock test setup
│ └── test-database.helper.ts # DB helper utilities
└── utils/ # Test utilities
├── mock-prisma.service.ts # Mock Prisma service
└── test-utils.ts # Helper functions
Running Tests
Unit Tests
npm run test:unit
Runs 37 unit tests. No external dependencies required.
Mock E2E Tests
npm run test:e2e:mock
# or
npm run test:e2e
Runs 21 E2E tests with mocked database. No Docker or PostgreSQL required.
All Tests (Unit + Mock E2E)
npm run test:all
Runs all 58 tests that don't require a real database.
Real Database E2E Tests
Option 1: With Docker Desktop
# Ensure Docker Desktop is running
npm run test:e2e:db
This will:
- Start PostgreSQL container (port 5434)
- Push Prisma schema
- Run 32 E2E tests
- Stop and cleanup container
Option 2: With Existing PostgreSQL
# 1. Create a test database
psql -c "CREATE DATABASE rwa_backup_test;"
# 2. Update DATABASE_URL in .env.test
# DATABASE_URL="postgresql://user:password@localhost:5432/rwa_backup_test"
# 3. Setup database schema
npm run db:test:setup
# 4. Run tests
npm run test:e2e:db:manual
Test Commands
| Command | Description |
|---|---|
npm run test |
Run all Jest tests |
npm run test:unit |
Run unit tests only |
npm run test:e2e |
Run mock E2E tests |
npm run test:e2e:mock |
Run mock E2E tests |
npm run test:e2e:db |
Run real DB E2E tests (Docker) |
npm run test:e2e:db:manual |
Run real DB E2E tests (existing DB) |
npm run test:all |
Run unit + mock E2E tests |
npm run test:cov |
Run tests with coverage |
npm run db:test:up |
Start test DB container |
npm run db:test:down |
Stop test DB container |
npm run db:test:setup |
Setup existing DB for tests |
Test Environment Variables
Located in .env.test:
DATABASE_URL="postgresql://postgres:testpassword@localhost:5434/rwa_backup_test"
APP_PORT=3003
APP_ENV="test"
SERVICE_JWT_SECRET="test-super-secret-service-jwt-key-for-e2e-testing"
ALLOWED_SERVICES="identity-service,recovery-service"
BACKUP_ENCRYPTION_KEY="0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
BACKUP_ENCRYPTION_KEY_ID="test-key-v1"
Test Utilities
generateServiceToken(service, secret?)
Generates a JWT service token for testing authenticated endpoints.
createStoreSharePayload(overrides?)
Creates a valid store share request payload.
createRetrieveSharePayload(overrides?)
Creates a valid retrieve share request payload.
createRevokeSharePayload(overrides?)
Creates a valid revoke share request payload.
MockPrismaService
Full mock implementation of PrismaService for testing without a database.
Coverage Report
Generate coverage report:
npm run test:cov
Coverage output in ./coverage/ directory.