mango-explorer/tests/test_instrumentlookup.py

88 lines
3.3 KiB
Python

from .context import mango
from solana.publickey import PublicKey
def test_spl_token_lookup() -> None:
data = {
"tokens": [
{
"address": "So11111111111111111111111111111111111111112",
"symbol": "SOL",
"name": "Wrapped SOL",
"decimals": 9,
},
{
"address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"symbol": "USDC",
"name": "USD Coin",
"decimals": 6,
},
{
"address": "9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E",
"symbol": "BTC",
"name": "Wrapped Bitcoin (Sollet)",
"decimals": 6,
},
{
"address": "2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk",
"symbol": "ETH",
"name": "Wrapped Ethereum (Sollet)",
"decimals": 6,
}]
}
actual = mango.SPLTokenLookup("test-filename", data)
assert actual is not None
eth = actual.find_by_symbol("ETH")
assert eth is not None
assert eth.name == "Wrapped Ethereum (Sollet)"
btc = actual.find_by_symbol("BTC")
assert btc is not None
assert btc.name == "Wrapped Bitcoin (Sollet)"
def test_spl_token_lookups_with_full_data() -> None:
actual = mango.SPLTokenLookup.load(mango.SPLTokenLookup.DefaultDataFilepath)
btc = actual.find_by_symbol("BTC")
assert btc is not None
assert btc.mint == PublicKey("9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E")
srm = actual.find_by_mint(PublicKey("AKJHspCwDhABucCxNLXUSfEzb7Ny62RqFtC9uNjJi4fq"))
assert srm is not None
assert srm.symbol == "SRM-SOL"
usdt = actual.find_by_mint(PublicKey("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"))
assert usdt is not None
assert usdt.symbol == "USDT"
def test_override_lookups_with_full_data() -> None:
actual = mango.SPLTokenLookup.load("./data/overrides.tokenlist.json")
eth = actual.find_by_symbol("ETH")
assert eth is not None
assert eth.mint == PublicKey("2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk")
usdt = actual.find_by_mint(PublicKey("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"))
assert usdt is not None
assert usdt.symbol == "USDT"
def test_compound_lookups_with_full_data() -> None:
overrides = mango.SPLTokenLookup.load("./data/overrides.tokenlist.json")
spl = mango.SPLTokenLookup.load(mango.SPLTokenLookup.DefaultDataFilepath)
actual = mango.CompoundInstrumentLookup([overrides, spl])
# actual should now find instruments in either overrides or spl
eth = actual.find_by_symbol("ETH")
assert eth is not None
assert isinstance(eth, mango.Token)
assert eth.mint == PublicKey("2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk")
btc = actual.find_by_symbol("BTC")
assert btc is not None
assert isinstance(btc, mango.Token)
assert btc.mint == PublicKey("9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E")
srm = actual.find_by_mint(PublicKey("AKJHspCwDhABucCxNLXUSfEzb7Ny62RqFtC9uNjJi4fq"))
assert srm is not None
assert isinstance(srm, mango.Token)
assert srm.symbol == "SRM-SOL"
usdt = actual.find_by_mint(PublicKey("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"))
assert usdt is not None
assert isinstance(usdt, mango.Token)
assert usdt.symbol == "USDT"