Files
aitbc/tests/cli/test_wallet.py
oib 15427c96c0 chore: update file permissions to executable across repository
- Change file mode from 644 to 755 for all project files
- Add chain_id parameter to get_balance RPC endpoint with default "ait-devnet"
- Rename Miner.extra_meta_data to extra_metadata for consistency
2026-03-06 22:17:54 +01:00

77 lines
2.9 KiB
Python
Executable File

"""Tests for wallet commands using AITBC CLI"""
import pytest
import json
import re
import tempfile
import os
from pathlib import Path
from click.testing import CliRunner
from unittest.mock import Mock, patch
from aitbc_cli.main import cli
def extract_json_from_output(output):
"""Extract JSON from CLI output"""
try:
# Look for JSON blocks in output
json_match = re.search(r'\{.*\}', output, re.DOTALL)
if json_match:
return json.loads(json_match.group())
return None
except json.JSONDecodeError:
return None
class TestWalletCommands:
"""Test suite for wallet commands"""
def test_wallet_help(self):
"""Test wallet help command"""
runner = CliRunner()
result = runner.invoke(cli, ['wallet', '--help'])
assert result.exit_code == 0
assert 'wallet' in result.output.lower()
def test_wallet_create(self):
"""Test wallet creation"""
runner = CliRunner()
with tempfile.TemporaryDirectory() as temp_dir:
# Set wallet directory in environment
env = {'WALLET_DIR': temp_dir}
# Use unique wallet name with timestamp
import time
wallet_name = f"test-wallet-{int(time.time())}"
result = runner.invoke(cli, ['wallet', 'create', wallet_name], env=env)
print(f"Exit code: {result.exit_code}")
print(f"Output: {result.output}")
print(f"Temp dir contents: {list(Path(temp_dir).iterdir())}")
assert result.exit_code == 0
# Check if wallet was created successfully
assert 'created' in result.output.lower() or 'wallet' in result.output.lower()
def test_wallet_balance(self):
"""Test wallet balance command"""
runner = CliRunner()
with tempfile.TemporaryDirectory() as temp_dir:
# Set wallet directory in environment
env = {'WALLET_DIR': temp_dir}
# Use unique wallet name
import time
wallet_name = f"test-wallet-balance-{int(time.time())}"
# Create wallet first
create_result = runner.invoke(cli, ['wallet', 'create', wallet_name], env=env)
assert create_result.exit_code == 0
# Switch to the created wallet
switch_result = runner.invoke(cli, ['wallet', 'switch', wallet_name], env=env)
assert switch_result.exit_code == 0
# Check balance (uses current active wallet)
result = runner.invoke(cli, ['wallet', 'balance'], env=env)
print(f"Balance exit code: {result.exit_code}")
print(f"Balance output: {result.output}")
assert result.exit_code == 0
# Should contain balance information
assert 'balance' in result.output.lower() or 'aitbc' in result.output.lower()