Initial commit: add .gitignore and README
This commit is contained in:
336
docs/reports/TESTING_RECOMMENDATIONS.md
Normal file
336
docs/reports/TESTING_RECOMMENDATIONS.md
Normal file
@@ -0,0 +1,336 @@
|
||||
# Testing Recommendations & Additional Tests
|
||||
|
||||
## Current Test Coverage
|
||||
|
||||
### ✅ Existing Tests
|
||||
- **Unit Tests**: 4 tests (strategy loading, validation, blind substitution)
|
||||
- **Integration Tests**: 2 tests (simple compilation, flash loan compilation)
|
||||
- **Foundry Tests**: 8 tests (basic executor functionality)
|
||||
|
||||
### 📊 Coverage Gaps
|
||||
|
||||
## Recommended Additional Tests
|
||||
|
||||
### 1. Unit Tests - Adapters
|
||||
|
||||
#### Aave V3 Adapter Tests
|
||||
```typescript
|
||||
// tests/unit/adapters/aaveV3.test.ts
|
||||
- test supply with valid asset
|
||||
- test supply with invalid asset (should throw)
|
||||
- test withdraw with amount parsing from events
|
||||
- test borrow with different rate modes
|
||||
- test repay with rate mode matching
|
||||
- test flash loan encoding
|
||||
- test health factor calculation
|
||||
- test EMode setting
|
||||
- test collateral toggling
|
||||
```
|
||||
|
||||
#### Compound V3 Adapter Tests
|
||||
```typescript
|
||||
// tests/unit/adapters/compoundV3.test.ts
|
||||
- test supply
|
||||
- test withdraw
|
||||
- test borrow
|
||||
- test repay
|
||||
- test allow
|
||||
- test account liquidity calculation
|
||||
```
|
||||
|
||||
#### Uniswap V3 Adapter Tests
|
||||
```typescript
|
||||
// tests/unit/adapters/uniswapV3.test.ts
|
||||
- test exact input swap encoding
|
||||
- test exact output swap encoding
|
||||
- test path encoding
|
||||
- test fee tier validation
|
||||
- test quote calculation
|
||||
```
|
||||
|
||||
#### Other Adapters
|
||||
- MakerDAO adapter (openVault, frob, join, exit)
|
||||
- Balancer adapter (swap, batchSwap)
|
||||
- Curve adapter (exchange, exchange_underlying)
|
||||
- Lido adapter (wrap, unwrap)
|
||||
- Aggregator adapter (1inch, 0x quotes)
|
||||
- Perps adapter (increase/decrease position)
|
||||
|
||||
### 2. Unit Tests - Guards
|
||||
|
||||
#### Oracle Sanity Guard
|
||||
```typescript
|
||||
// tests/unit/guards/oracleSanity.test.ts
|
||||
- test passes when price within bounds
|
||||
- test fails when price too high
|
||||
- test fails when price too low
|
||||
- test handles missing oracle gracefully
|
||||
- test handles stale price data
|
||||
```
|
||||
|
||||
#### TWAP Sanity Guard
|
||||
```typescript
|
||||
// tests/unit/guards/twapSanity.test.ts
|
||||
- test passes when TWAP within deviation
|
||||
- test fails when TWAP deviation too high
|
||||
- test handles missing pool gracefully
|
||||
```
|
||||
|
||||
#### Min Health Factor Guard
|
||||
```typescript
|
||||
// tests/unit/guards/minHealthFactor.test.ts
|
||||
- test passes when HF above minimum
|
||||
- test fails when HF below minimum
|
||||
- test handles missing user position
|
||||
```
|
||||
|
||||
#### Other Guards
|
||||
- Max Gas guard
|
||||
- Slippage guard
|
||||
- Position Delta Limit guard
|
||||
|
||||
### 3. Unit Tests - Core Components
|
||||
|
||||
#### Price Oracle
|
||||
```typescript
|
||||
// tests/unit/pricing/index.test.ts
|
||||
- test Chainlink price fetching
|
||||
- test Uniswap TWAP calculation
|
||||
- test weighted average with quorum
|
||||
- test fallback when one source fails
|
||||
- test token decimals handling
|
||||
```
|
||||
|
||||
#### Gas Estimation
|
||||
```typescript
|
||||
// tests/unit/utils/gas.test.ts
|
||||
- test estimateGasForCalls with single call
|
||||
- test estimateGasForCalls with multiple calls
|
||||
- test fallback to rough estimate
|
||||
- test gas limit safety buffer
|
||||
```
|
||||
|
||||
#### Strategy Compiler
|
||||
```typescript
|
||||
// tests/unit/planner/compiler.test.ts
|
||||
- test compilation of each action type (25+ tests)
|
||||
- test flash loan wrapping logic
|
||||
- test executor address substitution
|
||||
- test gas estimation integration
|
||||
- test error handling for unsupported actions
|
||||
```
|
||||
|
||||
### 4. Integration Tests
|
||||
|
||||
#### Full Strategy Execution
|
||||
```typescript
|
||||
// tests/integration/full-execution.test.ts
|
||||
- test complete recursive leverage strategy
|
||||
- test liquidation helper strategy
|
||||
- test stablecoin hedge strategy
|
||||
- test multi-protocol strategy
|
||||
- test strategy with all guard types
|
||||
```
|
||||
|
||||
#### Flash Loan Scenarios
|
||||
```typescript
|
||||
// tests/integration/flash-loan.test.ts
|
||||
- test flash loan with swap
|
||||
- test flash loan with multiple operations
|
||||
- test flash loan repayment validation
|
||||
- test flash loan callback security
|
||||
```
|
||||
|
||||
#### Guard Evaluation
|
||||
```typescript
|
||||
// tests/integration/guards.test.ts
|
||||
- test guard evaluation order
|
||||
- test guard failure handling (revert/warn/skip)
|
||||
- test guard context passing
|
||||
- test multiple guards in sequence
|
||||
```
|
||||
|
||||
#### Error Handling
|
||||
```typescript
|
||||
// tests/integration/errors.test.ts
|
||||
- test invalid strategy JSON
|
||||
- test missing blind values
|
||||
- test protocol adapter failures
|
||||
- test guard failures
|
||||
- test execution failures
|
||||
```
|
||||
|
||||
### 5. Foundry Tests - Enhanced
|
||||
|
||||
#### Flash Loan Tests
|
||||
```solidity
|
||||
// contracts/test/AtomicExecutorFlashLoan.t.sol
|
||||
- test executeFlashLoan with valid pool
|
||||
- test executeFlashLoan callback execution
|
||||
- test executeFlashLoan repayment
|
||||
- test executeFlashLoan with unauthorized pool (should revert)
|
||||
- test executeFlashLoan with unauthorized initiator (should revert)
|
||||
- test executeFlashLoan with multiple operations
|
||||
```
|
||||
|
||||
#### Edge Cases
|
||||
```solidity
|
||||
// contracts/test/AtomicExecutorEdgeCases.t.sol
|
||||
- test empty batch execution
|
||||
- test very large batch (gas limits)
|
||||
- test reentrancy attempts
|
||||
- test delegatecall protection
|
||||
- test value handling
|
||||
```
|
||||
|
||||
#### Security Tests
|
||||
```solidity
|
||||
// contracts/test/AtomicExecutorSecurity.t.sol
|
||||
- test only owner can pause
|
||||
- test only owner can set allowed targets
|
||||
- test only owner can set allowed pools
|
||||
- test pause prevents execution
|
||||
- test allow-list enforcement
|
||||
```
|
||||
|
||||
### 6. E2E Tests
|
||||
|
||||
#### Fork Simulation Tests
|
||||
```typescript
|
||||
// tests/e2e/fork-simulation.test.ts
|
||||
- test strategy execution on mainnet fork
|
||||
- test flash loan on fork
|
||||
- test guard evaluation on fork
|
||||
- test state changes after execution
|
||||
```
|
||||
|
||||
#### Cross-Chain Tests
|
||||
```typescript
|
||||
// tests/e2e/cross-chain.test.ts
|
||||
- test CCIP message sending
|
||||
- test LayerZero message sending
|
||||
- test message status checking
|
||||
- test compensating leg execution
|
||||
```
|
||||
|
||||
## Test Infrastructure Improvements
|
||||
|
||||
### 1. Test Utilities
|
||||
```typescript
|
||||
// tests/utils/test-helpers.ts
|
||||
- createMockProvider()
|
||||
- createMockSigner()
|
||||
- createMockStrategy()
|
||||
- createMockAdapter()
|
||||
- setupFork()
|
||||
```
|
||||
|
||||
### 2. Fixtures
|
||||
```typescript
|
||||
// tests/fixtures/
|
||||
- strategies/ (sample strategy JSONs)
|
||||
- contracts/ (mock contracts)
|
||||
- addresses/ (test addresses)
|
||||
```
|
||||
|
||||
### 3. Coverage Goals
|
||||
- **Unit Tests**: 80%+ coverage
|
||||
- **Integration Tests**: All critical paths
|
||||
- **Foundry Tests**: 100% contract coverage
|
||||
|
||||
## Production Recommendations
|
||||
|
||||
### 1. Security Audit
|
||||
- [ ] Professional smart contract audit
|
||||
- [ ] Review of flash loan callback security
|
||||
- [ ] Review of allow-list implementation
|
||||
- [ ] Review of reentrancy protection
|
||||
- [ ] Review of access control
|
||||
|
||||
### 2. Monitoring & Alerting
|
||||
- [ ] Transaction monitoring (success/failure rates)
|
||||
- [ ] Gas usage tracking
|
||||
- [ ] Guard failure alerts
|
||||
- [ ] Protocol adapter health checks
|
||||
- [ ] Price oracle staleness alerts
|
||||
|
||||
### 3. Performance Optimization
|
||||
- [ ] Gas optimization review
|
||||
- [ ] Batch size optimization
|
||||
- [ ] Parallel execution where possible
|
||||
- [ ] Caching for price data
|
||||
- [ ] Connection pooling for RPC
|
||||
|
||||
### 4. Documentation
|
||||
- [ ] API documentation (JSDoc)
|
||||
- [ ] Strategy authoring guide
|
||||
- [ ] Deployment guide
|
||||
- [ ] Troubleshooting guide
|
||||
- [ ] Security best practices
|
||||
|
||||
### 5. Operational
|
||||
- [ ] Multi-sig for executor ownership
|
||||
- [ ] Emergency pause procedures
|
||||
- [ ] Incident response plan
|
||||
- [ ] Backup executor deployment
|
||||
- [ ] Regular address verification
|
||||
|
||||
### 6. Testing in Production
|
||||
- [ ] Testnet deployment first
|
||||
- [ ] Gradual mainnet rollout
|
||||
- [ ] Small position sizes initially
|
||||
- [ ] Monitor for 24-48 hours
|
||||
- [ ] Gradual scaling
|
||||
|
||||
## Priority Order
|
||||
|
||||
### High Priority (Do First)
|
||||
1. Adapter unit tests (critical for reliability)
|
||||
2. Guard unit tests (critical for safety)
|
||||
3. Flash loan Foundry tests (critical for security)
|
||||
4. Integration tests for main flows
|
||||
|
||||
### Medium Priority
|
||||
5. Price oracle tests
|
||||
6. Gas estimation tests
|
||||
7. Compiler edge case tests
|
||||
8. E2E fork simulation tests
|
||||
|
||||
### Low Priority (Nice to Have)
|
||||
9. Cross-chain E2E tests
|
||||
10. Performance tests
|
||||
11. Load tests
|
||||
12. Stress tests
|
||||
|
||||
## Test Execution Strategy
|
||||
|
||||
```bash
|
||||
# Run all tests
|
||||
pnpm test
|
||||
|
||||
# Run with coverage
|
||||
pnpm test --coverage
|
||||
|
||||
# Run specific test suite
|
||||
pnpm test:unit
|
||||
pnpm test:integration
|
||||
pnpm test:e2e
|
||||
|
||||
# Run Foundry tests
|
||||
forge test
|
||||
|
||||
# Run with verbose output
|
||||
pnpm test --reporter=verbose
|
||||
```
|
||||
|
||||
## Continuous Integration
|
||||
|
||||
Recommended CI/CD pipeline:
|
||||
1. Lint check
|
||||
2. Type check
|
||||
3. Unit tests
|
||||
4. Integration tests
|
||||
5. Foundry tests
|
||||
6. Coverage report
|
||||
7. Security scan (optional)
|
||||
|
||||
Reference in New Issue
Block a user