Files
aitbc/cli/tests/README.md
AITBC System b033923756 chore: normalize file permissions across repository
- Remove executable permissions from configuration files (.editorconfig, .env.example, .gitignore)
- Remove executable permissions from documentation files (README.md, LICENSE, SECURITY.md)
- Remove executable permissions from web assets (HTML, CSS, JS files)
- Remove executable permissions from data files (JSON, SQL, YAML, requirements.txt)
- Remove executable permissions from source code files across all apps
- Add executable permissions to Python
2026-03-08 11:26:18 +01:00

203 lines
5.8 KiB
Markdown

# AITBC CLI Tests
This directory contains test scripts and utilities for the AITBC CLI tool.
## Test Structure
```
tests/
├── test_level1_commands.py # Main level 1 commands test script
├── fixtures/ # Test data and mocks
│ ├── mock_config.py # Mock configuration data
│ ├── mock_responses.py # Mock API responses
│ └── test_wallets/ # Test wallet files
├── utils/ # Test utilities and helpers
│ ├── test_helpers.py # Common test utilities
│ └── command_tester.py # Enhanced command tester
├── integration/ # Integration tests
├── multichain/ # Multi-chain tests
├── gpu/ # GPU-related tests
├── ollama/ # Ollama integration tests
└── [other test files] # Existing test files
```
## Level 1 Commands Test
The `test_level1_commands.py` script tests core CLI functionality:
### What are Level 1 Commands?
Level 1 commands are the primary command groups and their immediate subcommands:
- **Core groups**: wallet, config, auth, blockchain, client, miner
- **Essential groups**: version, help, test
- **Focus**: Command registration, help accessibility, basic functionality
### Test Categories
1. **Command Registration Tests**
- Verify all level 1 command groups are registered
- Test help accessibility for each command group
- Check basic command structure and argument parsing
2. **Basic Functionality Tests**
- Test config commands (show, set, get)
- Test auth commands (login, logout, status)
- Test wallet commands (create, list, address) in test mode
- Test blockchain commands (info, status) with mock data
3. **Help System Tests**
- Verify all subcommands have help text
- Test argument validation and error messages
- Check command aliases and shortcuts
### Running the Tests
#### As Standalone Script
```bash
cd /home/oib/windsurf/aitbc/cli
python tests/test_level1_commands.py
```
#### With pytest
```bash
cd /home/oib/windsurf/aitbc/cli
pytest tests/test_level1_commands.py -v
```
#### In Test Mode
```bash
cd /home/oib/windsurf/aitbc/cli
python tests/test_level1_commands.py --test-mode
```
### Test Features
- **Isolated Testing**: Each test runs in clean environment
- **Mock Data**: Safe testing without real blockchain/wallet operations
- **Comprehensive Coverage**: All level 1 commands and subcommands
- **Error Handling**: Test both success and failure scenarios
- **Output Validation**: Verify help text, exit codes, and response formats
- **Progress Indicators**: Detailed progress reporting during test execution
- **CI/CD Ready**: Proper exit codes and reporting for automation
### Expected Output
```
🚀 Starting AITBC CLI Level 1 Commands Test Suite
============================================================
📂 Testing Command Registration
----------------------------------------
✅ wallet: Registered
✅ config: Registered
✅ auth: Registered
...
📂 Testing Help System
----------------------------------------
✅ wallet --help: Help available
✅ config --help: Help available
...
📂 Testing Config Commands
----------------------------------------
✅ config show: Working
✅ config set: Working
...
📂 TESTING RESULTS SUMMARY
============================================================
Total Tests: 45
✅ Passed: 43
❌ Failed: 2
⏭️ Skipped: 0
🎯 Success Rate: 95.6%
🎉 EXCELLENT: CLI Level 1 commands are in great shape!
```
### Mock Data
The tests use comprehensive mock data to ensure safe testing:
- **Mock Configuration**: Test different config environments
- **Mock API Responses**: Simulated blockchain and service responses
- **Mock Wallet Data**: Test wallet operations without real wallets
- **Mock Authentication**: Test auth flows without real API keys
### Test Environment
Each test runs in an isolated environment:
- Temporary directories for config and wallets
- Mocked external dependencies (API calls, file system)
- Clean state between tests
- Automatic cleanup after test completion
### Extending the Tests
To add new tests:
1. Add test methods to the `Level1CommandTester` class
2. Use the provided utilities (`run_command_test`, `TestEnvironment`)
3. Follow the naming convention: `_test_[feature]`
4. Add the test to the appropriate category in `run_all_tests()`
### Troubleshooting
#### Common Issues
1. **Import Errors**: Ensure CLI path is added to sys.path
2. **Permission Errors**: Check temporary directory permissions
3. **Mock Failures**: Verify mock setup and patching
4. **Command Not Found**: Check command registration in main.py
#### Debug Mode
Run tests with verbose output:
```bash
python tests/test_level1_commands.py --debug
```
#### Individual Test Categories
Run specific test categories:
```bash
python -c "
from tests.test_level1_commands import Level1CommandTester
tester = Level1CommandTester()
tester.test_config_commands()
"
```
## Integration with CI/CD
The test script is designed for CI/CD integration:
- **Exit Codes**: 0 for success, 1 for failure
- **JSON Output**: Option for machine-readable results
- **Parallel Execution**: Can run multiple test suites in parallel
- **Docker Compatible**: Works in containerized environments
### GitHub Actions Example
```yaml
- name: Run CLI Level 1 Tests
run: |
cd cli
python tests/test_level1_commands.py
```
## Contributing
When adding new CLI commands:
1. Update the test script to include the new command
2. Add appropriate mock responses
3. Test both success and error scenarios
4. Update this documentation
## Related Files
- `../aitbc_cli/main.py` - Main CLI entry point
- `../aitbc_cli/commands/` - Command implementations
- `docs/10_plan/06_cli/cli-checklist.md` - CLI command checklist