#!/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)