import json

from eth_account import Account

from src.tools.hl_env_diagnose import build_diagnosis_payload


def test_diagnose_cli_payload_has_no_private_key_and_uses_expected_file(tmp_path):
    api = Account.create()
    wallet = Account.create().address
    (tmp_path / "Testnet.env").write_text(
        f"HL_WALLET_ADDRESS={wallet}\n"
        f"HL_API_PRIVATE_KEY={api.key.hex()}\n"
        "API Wallet Name=Hermes Agent\n"
        f"API Key={api.address}\n",
        encoding="utf-8",
    )

    payload = build_diagnosis_payload(env="testnet", search_dirs=(tmp_path,))
    dumped = json.dumps(payload)

    assert payload["env"] == "testnet"
    assert payload["env_file_found"] is True
    assert payload["env_file_path"].endswith("Testnet.env")
    assert payload["api_wallet_key_matches_private_key"] is True
    assert payload["sdk_account_address_will_be"] == payload["account_address_masked"]
    assert payload["sdk_secret_key_source"] == "HL_API_PRIVATE_KEY in Testnet.env"
    assert api.key.hex() not in dumped
