112 lines
4.0 KiB
Python
Executable File
112 lines
4.0 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
Test ENS Resolver
|
|
|
|
This script tests the ENS resolver with known ENS names and addresses.
|
|
|
|
Usage:
|
|
python test_ens_resolver.py
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
from dotenv import load_dotenv
|
|
|
|
# Add parent directory to path to import utils
|
|
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
from utils.ens_resolver import ENSResolver
|
|
from utils.logger import setup_logger
|
|
from web3 import Web3
|
|
|
|
# Load environment variables
|
|
load_dotenv()
|
|
|
|
# Setup logging
|
|
logger = setup_logger("test_ens_resolver")
|
|
|
|
def test_ens_resolver():
|
|
"""
|
|
Test the ENS resolver with known ENS names and addresses.
|
|
"""
|
|
logger.info("Testing ENS resolver")
|
|
|
|
# Initialize Web3 and ENS resolver
|
|
alchemy_api_key = os.getenv("ALCHEMY_API_KEY")
|
|
if not alchemy_api_key:
|
|
logger.error("ALCHEMY_API_KEY not found in environment variables")
|
|
sys.exit(1)
|
|
|
|
web3 = Web3(Web3.HTTPProvider(f"https://eth-mainnet.g.alchemy.com/v2/{alchemy_api_key}"))
|
|
ens_resolver = ENSResolver(web3)
|
|
|
|
# Test cases - known ENS names and addresses
|
|
test_cases = [
|
|
# Vitalik's ENS
|
|
{"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045", "expected_ens": "vitalik.eth"},
|
|
# ENS DAO
|
|
{"address": "0x4f3a120E72C76c22ae802D129F599BFDbc31cb81", "expected_ens": "ens.eth"},
|
|
# Brantly.eth
|
|
{"address": "0x983110309620D911731Ac0932219af06091b6744", "expected_ens": "brantly.eth"},
|
|
# Nick.eth
|
|
{"address": "0xb8c2C29ee19D8307cb7255e1Cd9CbDE883A267d5", "expected_ens": "nick.eth"}
|
|
]
|
|
|
|
# Test address to ENS resolution
|
|
logger.info("Testing address to ENS resolution")
|
|
for test_case in test_cases:
|
|
address = test_case["address"]
|
|
expected_ens = test_case["expected_ens"]
|
|
|
|
try:
|
|
resolved_ens = ens_resolver.get_ens_name(address)
|
|
if resolved_ens:
|
|
logger.info(f"✅ Address {address} resolved to {resolved_ens}")
|
|
if resolved_ens.lower() == expected_ens.lower():
|
|
logger.info(f"✅ Matches expected ENS {expected_ens}")
|
|
else:
|
|
logger.warning(f"❌ Does not match expected ENS {expected_ens}")
|
|
else:
|
|
logger.warning(f"❌ Could not resolve ENS for address {address}")
|
|
except Exception as e:
|
|
logger.error(f"Error resolving ENS for {address}: {str(e)}")
|
|
|
|
# Test ENS to address resolution
|
|
logger.info("\nTesting ENS to address resolution")
|
|
for test_case in test_cases:
|
|
address = test_case["address"]
|
|
ens_name = test_case["expected_ens"]
|
|
|
|
try:
|
|
resolved_address = ens_resolver.get_ens_address(ens_name)
|
|
if resolved_address:
|
|
logger.info(f"✅ ENS {ens_name} resolved to {resolved_address}")
|
|
if resolved_address.lower() == address.lower():
|
|
logger.info(f"✅ Matches expected address {address}")
|
|
else:
|
|
logger.warning(f"❌ Does not match expected address {address}")
|
|
else:
|
|
logger.warning(f"❌ Could not resolve address for ENS {ens_name}")
|
|
except Exception as e:
|
|
logger.error(f"Error resolving address for {ens_name}: {str(e)}")
|
|
|
|
# Test ENS profile retrieval
|
|
logger.info("\nTesting ENS profile retrieval")
|
|
for test_case in test_cases:
|
|
ens_name = test_case["expected_ens"]
|
|
|
|
try:
|
|
profile = ens_resolver.get_ens_profile(ens_name)
|
|
if profile:
|
|
logger.info(f"✅ Retrieved profile for {ens_name}:")
|
|
for key, value in profile.items():
|
|
if value:
|
|
logger.info(f" - {key}: {value}")
|
|
else:
|
|
logger.warning(f"❌ Could not retrieve profile for {ens_name}")
|
|
except Exception as e:
|
|
logger.error(f"Error retrieving profile for {ens_name}: {str(e)}")
|
|
|
|
logger.info("ENS resolver testing completed")
|
|
|
|
if __name__ == "__main__":
|
|
test_ens_resolver() |