84 lines
2.5 KiB
Markdown
84 lines
2.5 KiB
Markdown
# Story 7.1: Comprehensive Testing Suite
|
|
|
|
## Metadata
|
|
- **Story ID**: 7.1
|
|
- **Title**: Comprehensive Testing Suite
|
|
- **Epic**: 7 - Testing, Documentation & CI/CD
|
|
- **Status**: Pending
|
|
- **Priority**: High
|
|
- **Estimated Time**: 10-12 hours
|
|
- **Dependencies**: All previous epics
|
|
|
|
## Goal
|
|
Achieve comprehensive test coverage with unit tests, integration tests, and contract tests.
|
|
|
|
## Description
|
|
This story implements a complete testing suite with >80% code coverage, integration tests using testcontainers, and contract tests for API validation.
|
|
|
|
## Deliverables
|
|
|
|
### 1. Unit Tests
|
|
- Achieve >80% code coverage for core modules:
|
|
- Config loader
|
|
- Logger
|
|
- Auth service
|
|
- Permission resolver
|
|
- Module registry
|
|
- Use `github.com/stretchr/testify` for assertions
|
|
- Use `github.com/golang/mock` or `mockery` for mocks
|
|
- Test helpers:
|
|
- `testutil.NewTestDB()` - In-memory SQLite for tests
|
|
- `testutil.NewTestUser()` - Create test user
|
|
- `testutil.NewTestContext()` - Context with user
|
|
|
|
### 2. Integration Tests
|
|
- Install `github.com/testcontainers/testcontainers-go`
|
|
- Create integration test suite:
|
|
- Full HTTP request flow
|
|
- Database operations
|
|
- Event bus publishing/consuming
|
|
- Background job execution
|
|
- Test scenarios:
|
|
- User registration → login → API access
|
|
- Role assignment → permission check
|
|
- Module loading and initialization
|
|
- Multi-module interaction
|
|
- Create `docker-compose.test.yml`:
|
|
- PostgreSQL
|
|
- Redis
|
|
- Kafka (optional)
|
|
- Add test tags: `//go:build integration`
|
|
|
|
### 3. Contract Tests
|
|
- Install `github.com/pact-foundation/pact-go` (optional)
|
|
- Create API contract tests:
|
|
- Verify API responses match OpenAPI spec
|
|
- Test backward compatibility
|
|
- Use OpenAPI validator:
|
|
- Install `github.com/getkin/kin-openapi`
|
|
- Validate request/response against OpenAPI spec
|
|
- Generate OpenAPI spec from code annotations
|
|
|
|
### 4. Load Testing
|
|
- Create `perf/` directory with k6 scripts:
|
|
- `perf/auth-load.js` - Login endpoint load test
|
|
- `perf/api-load.js` - General API load test
|
|
- Document performance benchmarks:
|
|
- Request latency (p50, p95, p99)
|
|
- Throughput (requests/second)
|
|
- Resource usage (CPU, memory)
|
|
|
|
## Acceptance Criteria
|
|
- [ ] All tests pass in CI
|
|
- [ ] Code coverage >80%
|
|
- [ ] Integration tests work with testcontainers
|
|
- [ ] Contract tests validate API
|
|
- [ ] Load tests are documented
|
|
|
|
## Files to Create/Modify
|
|
- `internal/testutil/` - Test utilities
|
|
- `docker-compose.test.yml` - Test containers
|
|
- `perf/` - Load test scripts
|
|
- All test files across the codebase
|
|
|