- 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
77 lines
2.9 KiB
Python
Executable File
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()
|
|
|