from .context import mango from solana.publickey import PublicKey def test_serum_market_lookup(): 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(data) assert actual is not None assert actual.logger is not None assert actual.find_by_symbol("ETH/USDT") is not None assert actual.find_by_symbol("ETH/USDT").address == PublicKey("7dLVkUfBVfCGkFhSXDCq1ukM9usathSgS716t643iFGF") assert actual.find_by_symbol("BTC/USDC") is not None assert actual.find_by_symbol("BTC/USDC").address == PublicKey("A8YFbxQYFVqKZaoYJLLUVcQiWP7G2MeEgW5wsAQgMvFw") def test_serum_market_lookups_with_full_data(): market_lookup = mango.SerumMarketLookup.load(mango.SplTokenLookup.DefaultDataFilepath) eth_usdt = market_lookup.find_by_symbol("ETH/USDT") 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.base.symbol == "BTC" assert btc_usdc.quote.symbol == "USDC" assert btc_usdc.address == PublicKey("A8YFbxQYFVqKZaoYJLLUVcQiWP7G2MeEgW5wsAQgMvFw") 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("ByRys5tuUWDgL73G8JBAEfkdFf8JWBzPBDHsBVQ5vbQA") assert srm_usdc.base.symbol == "SRM" assert srm_usdc.quote.symbol == "USDC" assert srm_usdc.address == PublicKey("ByRys5tuUWDgL73G8JBAEfkdFf8JWBzPBDHsBVQ5vbQA")