mango-explorer/tests/test_marketlookup.py

144 lines
6.0 KiB
Python

from .context import mango, disable_logging
from solana.publickey import PublicKey
from .fakes import fake_seeded_public_key
def test_serum_market_lookup() -> None:
data = {
"tokens": [
{
"chainId": 101,
"address": "So11111111111111111111111111111111111111112",
"symbol": "SOL",
"name": "Wrapped SOL",
"decimals": 9,
"logoURI": "https://cdn.jsdelivr.net/gh/trustwallet/assets@master/blockchains/solana/info/logo.png",
"tags": [],
"extensions": {
"website": "https://solana.com/",
"serumV3Usdc": "9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusDBzvT",
"serumV3Usdt": "HWHvQhFmJB3NUcu1aihKmrKegfVxBEHzwVX6yZCKEsi1",
"coingeckoId": "solana"
}
},
{
"chainId": 101,
"address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"symbol": "USDC",
"name": "USD Coin",
"decimals": 6,
"logoURI": "https://cdn.jsdelivr.net/gh/solana-labs/token-list@main/assets/mainnet/EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v/logo.png",
"tags": [
"stablecoin"
],
"extensions": {
"website": "https://www.centre.io/",
"coingeckoId": "usd-coin"
}
},
{
"chainId": 101,
"address": "9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E",
"symbol": "BTC",
"name": "Wrapped Bitcoin (Sollet)",
"decimals": 6,
"logoURI": "https://cdn.jsdelivr.net/gh/trustwallet/assets@master/blockchains/bitcoin/info/logo.png",
"tags": [
"wrapped-sollet",
"ethereum"
],
"extensions": {
"bridgeContract": "https://etherscan.io/address/0xeae57ce9cc1984f202e15e038b964bb8bdf7229a",
"serumV3Usdc": "A8YFbxQYFVqKZaoYJLLUVcQiWP7G2MeEgW5wsAQgMvFw",
"serumV3Usdt": "C1EuT9VokAKLiW7i2ASnZUvxDoKuKkCpDDeNxAptuNe4",
"coingeckoId": "bitcoin"
}
},
{
"chainId": 101,
"address": "2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk",
"symbol": "ETH",
"name": "Wrapped Ethereum (Sollet)",
"decimals": 6,
"logoURI": "https://cdn.jsdelivr.net/gh/trustwallet/assets@master/blockchains/ethereum/assets/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2/logo.png",
"tags": [
"wrapped-sollet",
"ethereum"
],
"extensions": {
"bridgeContract": "https://etherscan.io/address/0xeae57ce9cc1984f202e15e038b964bb8bdf7229a",
"serumV3Usdc": "4tSvZvnbyzHXLMTiFonMyxZoHmFqau1XArcRCVHLZ5gX",
"serumV3Usdt": "7dLVkUfBVfCGkFhSXDCq1ukM9usathSgS716t643iFGF",
"coingeckoId": "ethereum"
}
},
{
"chainId": 101,
"address": "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB",
"symbol": "USDT",
"name": "USDT",
"decimals": 6,
"logoURI": "https://cdn.jsdelivr.net/gh/solana-labs/explorer/public/tokens/usdt.svg",
"tags": [
"stablecoin"
],
"extensions": {
"website": "https://tether.to/",
"coingeckoId": "tether"
}
},
{
"chainId": 101,
"address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"symbol": "USDC",
"name": "USD Coin",
"decimals": 6,
"logoURI": "https://cdn.jsdelivr.net/gh/solana-labs/token-list@main/assets/mainnet/EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v/logo.png",
"tags": [
"stablecoin"
],
"extensions": {
"website": "https://www.centre.io/",
"coingeckoId": "usd-coin"
}
}
]
}
actual = mango.SerumMarketLookup(fake_seeded_public_key("program ID"), data)
assert actual is not None
assert actual.logger is not None
eth_usdt = actual.find_by_symbol("ETH/USDT")
assert eth_usdt is not None
assert eth_usdt.address == PublicKey("7dLVkUfBVfCGkFhSXDCq1ukM9usathSgS716t643iFGF")
btc_usdc = actual.find_by_symbol("BTC/USDC")
assert btc_usdc is not None
assert btc_usdc.address == PublicKey("A8YFbxQYFVqKZaoYJLLUVcQiWP7G2MeEgW5wsAQgMvFw")
def test_serum_market_lookups_with_full_data() -> None:
market_lookup = mango.SerumMarketLookup.load(fake_seeded_public_key(
"program ID"), mango.SPLTokenLookup.DefaultDataFilepath)
eth_usdt = market_lookup.find_by_symbol("ETH/USDT")
assert eth_usdt is not None
assert eth_usdt.base.symbol == "ETH"
assert eth_usdt.quote.symbol == "USDT"
assert eth_usdt.address == PublicKey("7dLVkUfBVfCGkFhSXDCq1ukM9usathSgS716t643iFGF")
btc_usdc = market_lookup.find_by_symbol("BTC/USDC")
assert btc_usdc is not None
assert btc_usdc.base.symbol == "BTC"
assert btc_usdc.quote.symbol == "USDC"
assert btc_usdc.address == PublicKey("A8YFbxQYFVqKZaoYJLLUVcQiWP7G2MeEgW5wsAQgMvFw")
with disable_logging():
non_existant_market = market_lookup.find_by_symbol("ETH/BTC")
assert non_existant_market is None # No such market
srm_usdc = market_lookup.find_by_address(PublicKey("ByRys5tuUWDgL73G8JBAEfkdFf8JWBzPBDHsBVQ5vbQA"))
assert srm_usdc is not None
assert srm_usdc.base.symbol == "SRM"
assert srm_usdc.quote.symbol == "USDC"
assert srm_usdc.address == PublicKey("ByRys5tuUWDgL73G8JBAEfkdFf8JWBzPBDHsBVQ5vbQA")