- 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
159 lines
5.2 KiB
Python
Executable File
159 lines
5.2 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
Group-based CLI Test Suite - Tests specific command groups
|
|
"""
|
|
|
|
import sys
|
|
import os
|
|
from pathlib import Path
|
|
|
|
# Add CLI to path
|
|
sys.path.insert(0, '/opt/aitbc/cli')
|
|
|
|
from click.testing import CliRunner
|
|
from aitbc_cli.main_minimal import cli
|
|
|
|
def test_wallet_group():
|
|
"""Test wallet command group"""
|
|
print("=== Wallet Group Tests ===")
|
|
runner = CliRunner()
|
|
|
|
# Test wallet commands
|
|
wallet_tests = [
|
|
(['wallet', '--help'], 'Wallet help'),
|
|
(['wallet', 'list'], 'List wallets'),
|
|
(['wallet', 'create', '--help'], 'Create wallet help'),
|
|
(['wallet', 'balance', '--help'], 'Balance help'),
|
|
(['wallet', 'send', '--help'], 'Send help'),
|
|
(['wallet', 'address', '--help'], 'Address help'),
|
|
(['wallet', 'history', '--help'], 'History help'),
|
|
(['wallet', 'backup', '--help'], 'Backup help'),
|
|
(['wallet', 'restore', '--help'], 'Restore help'),
|
|
]
|
|
|
|
passed = 0
|
|
for args, description in wallet_tests:
|
|
result = runner.invoke(cli, args)
|
|
status = "PASS" if result.exit_code == 0 else "FAIL"
|
|
print(f" {description}: {status}")
|
|
if result.exit_code == 0:
|
|
passed += 1
|
|
|
|
print(f" Wallet Group: {passed}/{len(wallet_tests)} passed")
|
|
return passed, len(wallet_tests)
|
|
|
|
def test_blockchain_group():
|
|
"""Test blockchain command group"""
|
|
print("\n=== Blockchain Group Tests ===")
|
|
runner = CliRunner()
|
|
|
|
blockchain_tests = [
|
|
(['blockchain', '--help'], 'Blockchain help'),
|
|
(['blockchain', 'info'], 'Blockchain info'),
|
|
(['blockchain', 'status'], 'Blockchain status'),
|
|
(['blockchain', 'blocks', '--help'], 'Blocks help'),
|
|
(['blockchain', 'balance', '--help'], 'Balance help'),
|
|
(['blockchain', 'peers', '--help'], 'Peers help'),
|
|
(['blockchain', 'transaction', '--help'], 'Transaction help'),
|
|
(['blockchain', 'validators', '--help'], 'Validators help'),
|
|
]
|
|
|
|
passed = 0
|
|
for args, description in blockchain_tests:
|
|
result = runner.invoke(cli, args)
|
|
status = "PASS" if result.exit_code == 0 else "FAIL"
|
|
print(f" {description}: {status}")
|
|
if result.exit_code == 0:
|
|
passed += 1
|
|
|
|
print(f" Blockchain Group: {passed}/{len(blockchain_tests)} passed")
|
|
return passed, len(blockchain_tests)
|
|
|
|
def test_config_group():
|
|
"""Test config command group"""
|
|
print("\n=== Config Group Tests ===")
|
|
runner = CliRunner()
|
|
|
|
config_tests = [
|
|
(['config', '--help'], 'Config help'),
|
|
(['config', 'show'], 'Config show'),
|
|
(['config', 'get', '--help'], 'Get config help'),
|
|
(['config', 'set', '--help'], 'Set config help'),
|
|
(['config', 'edit', '--help'], 'Edit config help'),
|
|
(['config', 'validate', '--help'], 'Validate config help'),
|
|
(['config', 'profiles', '--help'], 'Profiles help'),
|
|
(['config', 'environments', '--help'], 'Environments help'),
|
|
]
|
|
|
|
passed = 0
|
|
for args, description in config_tests:
|
|
result = runner.invoke(cli, args)
|
|
status = "PASS" if result.exit_code == 0 else "FAIL"
|
|
print(f" {description}: {status}")
|
|
if result.exit_code == 0:
|
|
passed += 1
|
|
|
|
print(f" Config Group: {passed}/{len(config_tests)} passed")
|
|
return passed, len(config_tests)
|
|
|
|
def test_compliance_group():
|
|
"""Test compliance command group"""
|
|
print("\n=== Compliance Group Tests ===")
|
|
runner = CliRunner()
|
|
|
|
compliance_tests = [
|
|
(['compliance', '--help'], 'Compliance help'),
|
|
(['compliance', 'list-providers'], 'List providers'),
|
|
(['compliance', 'kyc-submit', '--help'], 'KYC submit help'),
|
|
(['compliance', 'kyc-status', '--help'], 'KYC status help'),
|
|
(['compliance', 'aml-screen', '--help'], 'AML screen help'),
|
|
(['compliance', 'full-check', '--help'], 'Full check help'),
|
|
]
|
|
|
|
passed = 0
|
|
for args, description in compliance_tests:
|
|
result = runner.invoke(cli, args)
|
|
status = "PASS" if result.exit_code == 0 else "FAIL"
|
|
print(f" {description}: {status}")
|
|
if result.exit_code == 0:
|
|
passed += 1
|
|
|
|
print(f" Compliance Group: {passed}/{len(compliance_tests)} passed")
|
|
return passed, len(compliance_tests)
|
|
|
|
def run_group_tests():
|
|
"""Run all group tests"""
|
|
print("🚀 AITBC CLI Group Test Suite")
|
|
print("=" * 50)
|
|
|
|
total_passed = 0
|
|
total_tests = 0
|
|
|
|
# Run all group tests
|
|
groups = [
|
|
test_wallet_group,
|
|
test_blockchain_group,
|
|
test_config_group,
|
|
test_compliance_group,
|
|
]
|
|
|
|
for group_test in groups:
|
|
passed, tests = group_test()
|
|
total_passed += passed
|
|
total_tests += tests
|
|
|
|
print("\n" + "=" * 50)
|
|
print(f"Group Test Results: {total_passed}/{total_tests} tests passed")
|
|
print(f"Success Rate: {(total_passed/total_tests)*100:.1f}%")
|
|
|
|
if total_passed >= total_tests * 0.8: # 80% success rate
|
|
print("🎉 Group tests completed successfully!")
|
|
return True
|
|
else:
|
|
print("❌ Some group tests failed!")
|
|
return False
|
|
|
|
if __name__ == "__main__":
|
|
success = run_group_tests()
|
|
sys.exit(0 if success else 1)
|