def test_coingecko_identifiers_are_reachable(data_dir): """ Test that all assets have a coingecko entry and that all the identifiers exist in coingecko """ coingecko = Coingecko(data_directory=data_dir) all_coins = coingecko.all_coins() for asset_data in GlobalDBHandler().get_all_asset_data(mapping=False): identifier = asset_data.identifier if identifier in DELISTED_ASSETS: # delisted assets won't be in the mapping continue if asset_data.asset_type == AssetType.FIAT: continue found = True coingecko_str = asset_data.coingecko msg = f'Asset {identifier} does not have a coingecko entry' assert coingecko_str is not None, msg if coingecko_str != '': found = False for entry in all_coins: if coingecko_str == entry['id']: found = True break suggestions = [] if not found: for entry in all_coins: if entry['symbol'].upper() == asset_data.symbol.upper(): suggestions.append( (entry['id'], entry['name'], entry['symbol'])) continue if entry['name'].upper() == asset_data.symbol.upper(): suggestions.append( (entry['id'], entry['name'], entry['symbol'])) continue msg = f'Asset {identifier} coingecko mapping does not exist.' if len(suggestions) != 0: for s in suggestions: msg += f'\nSuggestion: id:{s[0]} name:{s[1]} symbol:{s[2]}' if not found: test_warnings.warn(UserWarning(msg))
def test_coingecko_identifiers_are_reachable(): """ Test that all assets have a coingecko entry and that all the identifiers exist in coingecko """ coins_delisted_from_coingecko = [ 'FLUZ', 'EBCH', 'GOLOS', 'NPER', 'BLN', 'PIX' ] coingecko = Coingecko() all_coins = coingecko.all_coins() for identifier, asset_data in AssetResolver().assets.items(): if identifier in coins_delisted_from_coingecko: # data = coingecko.asset_data(Asset(identifier)) # Figure out if the removed assets can still be queried # for historical prices. If not, then remove their mapping from # all_assets.json and remove them from this tests. continue asset_type = asset_type_mapping[asset_data['type']] if asset_type == AssetType.FIAT: continue coingecko_str = asset_data.get('coingecko', None) msg = f'Asset {identifier} does not have a coingecko entry' assert coingecko_str is not None, msg if coingecko_str != '': found = False for entry in all_coins: if coingecko_str == entry['id']: found = True break suggestions = [] if not found: for entry in all_coins: if entry['symbol'].upper() == asset_data['symbol']: suggestions.append( (entry['id'], entry['name'], entry['symbol'])) msg = f'Asset {identifier} coingecko mapping does not exist.' if len(suggestions) != 0: for s in suggestions: msg += f'\nSuggestion: id:{s[0]} name:{s[1]} symbol:{s[2]}' assert found, msg
root_dir = Path(__file__).resolve().parent.parent.parent ASSETS_FILE = Path(f'{root_dir}/rotkehlchen/data/all_assets.json') with open(ASSETS_FILE, 'r') as f: assets = json.loads(f.read()) data_dir = default_data_directory() coingecko = Coingecko(data_directory=data_dir) COINGECKO_COINS_FILE = data_dir / 'coingecko.json' if COINGECKO_COINS_FILE.exists(): with open(COINGECKO_COINS_FILE, 'r') as f: coingecko_coins = json.loads(f.read()) else: coingecko_coins = coingecko.all_coins() with open(COINGECKO_COINS_FILE, 'w') as f: f.write(rlk_jsondumps(coingecko_coins)) coingecko_add = { 'FTT': 'farmatrust', 'SNX': 'synthetix-network-token', '0xBTC': '0xbitcoin', '1SG': '1sg', '1ST': 'first-blood', '1WO': '1world', '2GIVE': '2give', 'ABBC': 'abbc', 'ACC-3': 'accelerator-network', 'ARB': 'arbitrage', 'ARB-2': 'arbit-coin',
def test_coingecko_identifiers_are_reachable(): """ Test that all assets have a coingecko entry and that all the identifiers exist in coingecko """ coins_delisted_from_coingecko = [ '1SG', 'FLUZ', 'EBCH', 'GOLOS', 'NPER', 'BLN', 'ADN', 'PIX', 'MTC-2', 'LKY', 'ARB', 'BBI', 'BITCAR', 'BTR', 'OLE', 'ROC', 'VIN', 'FIH', 'WIN-2', 'ADH', 'AUR', 'BAS', 'BYC', 'DGS', 'GMT', 'HST', 'INS', 'IPSX', 'SHP', 'WDC', 'BOST', 'FND', 'LDC', 'ORI', 'RIPT', 'SGR', 'LOCUS', 'REDC', 'SGN', 'SOAR', 'YUP', 'AC', 'APIS', 'BITPARK', 'CO2', 'DAN', 'DEC', 'DLT', 'DROP', 'ERD', 'ETBS', 'GEN', 'STP', 'SYNC', 'TBT', 'TNT', 'WIC', 'XCN', 'XTP', 'FREC', 'PTC', 'ACC-3', 'J8T', 'MRK', 'TTV', ] coingecko = Coingecko() all_coins = coingecko.all_coins() for identifier, asset_data in AssetResolver().assets.items(): if identifier in coins_delisted_from_coingecko: # data = coingecko.asset_data(Asset(identifier)) # Figure out if the removed assets can still be queried # for historical prices. If not, then remove their mapping from # all_assets.json and remove them from this tests. continue asset_type = asset_type_mapping[asset_data['type']] if asset_type == AssetType.FIAT: continue found = True coingecko_str = asset_data.get('coingecko', None) msg = f'Asset {identifier} does not have a coingecko entry' assert coingecko_str is not None, msg if coingecko_str != '': found = False for entry in all_coins: if coingecko_str == entry['id']: found = True break suggestions = [] if not found: for entry in all_coins: if entry['symbol'].upper() == asset_data['symbol'].upper(): suggestions.append( (entry['id'], entry['name'], entry['symbol'])) continue if entry['name'].upper() == asset_data['symbol'].upper(): suggestions.append( (entry['id'], entry['name'], entry['symbol'])) continue msg = f'Asset {identifier} coingecko mapping does not exist.' if len(suggestions) != 0: for s in suggestions: msg += f'\nSuggestion: id:{s[0]} name:{s[1]} symbol:{s[2]}' if not found: test_warnings.warn(UserWarning(msg))
def test_coingecko_identifiers_are_reachable(): """ Test that all assets have a coingecko entry and that all the identifiers exist in coingecko """ coingecko = Coingecko() all_coins = coingecko.all_coins() # If coingecko identifier is missing test is trying to suggest possible assets. symbol_checked_exceptions = ( # This is the list of already checked assets # only 300 in coingecko is spartan coin: https://www.coingecko.com/en/coins/spartan ethaddress_to_identifier('0xaEc98A708810414878c3BCDF46Aad31dEd4a4557'), # no arcade city in coingeko. Got other ARC symbol tokens ethaddress_to_identifier('0xAc709FcB44a43c35F0DA4e3163b117A17F3770f5'), # no avalon in coingecko. Got travalala.com ethaddress_to_identifier('0xeD247980396B10169BB1d36f6e278eD16700a60f'), # no Bionic in coingecko. Got Bnoincoin ethaddress_to_identifier('0xEf51c9377FeB29856E61625cAf9390bD0B67eA18'), # no Bitair in coingecko. Got other BTCA symbol tokens ethaddress_to_identifier('0x02725836ebF3eCDb1cDf1c7b02FcbBfaa2736AF8'), # no Bither in coingecko. Got other BTR symbol tokens ethaddress_to_identifier('0xcbf15FB8246F679F9Df0135881CB29a3746f734b'), # no Content and Ad Network in coingecko. Got other CAN symbol tokens ethaddress_to_identifier('0x5f3789907b35DCe5605b00C0bE0a7eCDBFa8A841'), # no DICE money in coingecko. Got other CET symbol tokens ethaddress_to_identifier('0xF660cA1e228e7BE1fA8B4f5583145E31147FB577'), # no Cyberfi in coingecko. Got other CFI symbol tokens ethaddress_to_identifier('0x12FEF5e57bF45873Cd9B62E9DBd7BFb99e32D73e'), # The DAO is not in coingecko. Got other DAO symbol tokens ethaddress_to_identifier('0xBB9bc244D798123fDe783fCc1C72d3Bb8C189413'), # no Earth Token in coingecko. Got other EARTH symbol token and in BSC ethaddress_to_identifier('0x900b4449236a7bb26b286601dD14d2bDe7a6aC6c'), # no iDice in coingecko. Got other ICE symbol token ethaddress_to_identifier('0x5a84969bb663fb64F6d015DcF9F622Aedc796750'), # no InvestFeed token in coingecko. Got other IFT symbol token ethaddress_to_identifier('0x7654915A1b82D6D2D0AFc37c52Af556eA8983c7E'), # no Invacio token in coingecko. Got other INV symbol token ethaddress_to_identifier('0xEcE83617Db208Ad255Ad4f45Daf81E25137535bb'), # no Live Start token in coingecko. Got other LIVE symbol token ethaddress_to_identifier('0x24A77c1F17C547105E14813e517be06b0040aa76'), # no Musiconomi in coingecko. Got other MCI symbol token ethaddress_to_identifier('0x138A8752093F4f9a79AaeDF48d4B9248fab93c9C'), # no Remicoin in coingecko. Got other RMC symbol token ethaddress_to_identifier('0x7Dc4f41294697a7903C4027f6Ac528C5d14cd7eB'), # no Sola token in coingecko. Got other SOL symbol token ethaddress_to_identifier('0x1F54638b7737193FFd86c19Ec51907A7c41755D8'), # no Bitcoin card token in coingecko. Got other VD symbol token ethaddress_to_identifier('0x9a9bB9b4b11BF8eccff84B58a6CCCCD4058A7f0D'), # no Venus Energy token in coingecko. Got other VENUS symbol token ethaddress_to_identifier('0xEbeD4fF9fe34413db8fC8294556BBD1528a4DAca'), # no WinToken in coingecko. Got other WIN symbol token ethaddress_to_identifier('0xBfaA8cF522136C6FAfC1D53Fe4b85b4603c765b8'), # no Snowball in coingecko. Got other SNBL symbol token ethaddress_to_identifier('0x198A87b3114143913d4229Fb0f6D4BCb44aa8AFF'), # Token suggestion doesn't match token in db ethaddress_to_identifier('0xFD25676Fc2c4421778B18Ec7Ab86E7C5701DF187'), # Token suggestion doesn't match token in db ethaddress_to_identifier('0xcca0c9c383076649604eE31b20248BC04FdF61cA'), # Token suggestion doesn't match token in db ethaddress_to_identifier('0xAef38fBFBF932D1AeF3B808Bc8fBd8Cd8E1f8BC5'), # Token suggestion doesn't match token in db ethaddress_to_identifier('0x662aBcAd0b7f345AB7FfB1b1fbb9Df7894f18e66'), # Token suggestion doesn't match token in db ethaddress_to_identifier('0x497bAEF294c11a5f0f5Bea3f2AdB3073DB448B56'), # Token suggestion doesn't match token in db ethaddress_to_identifier('0xAbdf147870235FcFC34153828c769A70B3FAe01F'), # Token suggestion doesn't match token in db ethaddress_to_identifier('0x4DF47B4969B2911C966506E3592c41389493953b'), # Token suggestion doesn't match token in db ethaddress_to_identifier('0xB563300A3BAc79FC09B93b6F84CE0d4465A2AC27'), 'ACC', # no Adcoin in Coingecko. Got other ACC symbol token 'APH', # no Aphelion in Coingecko. Got other APH symbol token 'ARCH', # no ARCH in Coingecko. Got other ARCH symbol token 'BET-2', # no BetaCoin in Coingecko. Got other BET symbol token 'CCN-2', # no CannaCoin in Coingecko. Got other CCN symbol token 'CHAT', # no ChatCoin in Coingecko. Got other CHAT symbol token 'CMT-2', # no Comet in Coingecko. Got other CMT symbol token 'CRC-2', # no CrownCoin in Coingecko. Got other CRC symbol token 'CYC', # no ConspiracyCoin in Coingecko. Got other CYC symbol token 'EDR-2', # no E-Dinar coin in Coingecko. Got other EDR symbol token 'FLAP', # no FlappyCoin coin in Coingecko. Got other FLAP symbol token 'HC-2', # no Harvest Masternode Coin in Coingecko. Got other HC symbol token 'KEY-3', # no KeyCoin Coin in Coingecko. Got other KEY symbol token 'MUSIC', # Music in coingecko is nftmusic and not our MUSIC 'NAUT', # Token suggestion doesn't match token in db 'OCC', # no Octoin Coin in Coingecko. Got other OCC symbol token 'SPA', # no SpainCoin Coin in Coingecko. Got other SPA symbol token 'WEB-2', # no Webchain in Coingecko. Got other WEB symbol token 'WOLF', # no Insanity Coin in Coingecko. Got other WOLF symbol token 'XAI', # Token suggestion doesn't match token in db 'XPB', # no Pebble Coin in Coingecko. Got other XPB symbol token 'XNS', # no Insolar in Coingecko. Got other XNS symbol token 'PIGGY', # Coingecko listed another asset PIGGY that is not Piggy Coin # coingecko listed CAR that is not our token CarBlock.io ethaddress_to_identifier('0x4D9e23a3842fE7Eb7682B9725cF6c507C424A41B'), # coingecko listed newb farm with symbol NEWB that is not our newb ethaddress_to_identifier('0x5A63Eb358a751b76e58325eadD86c2473fC40e87'), # coingecko has BigBang Core (BBC) that is not tradove ethaddress_to_identifier('0xe7D3e4413E29ae35B0893140F4500965c74365e5'), # MNT is Meownaut in coingecko and not media network token ethaddress_to_identifier('0xA9877b1e05D035899131DBd1e403825166D09f92'), # Project quantum in coingecko but we have Qubitica ethaddress_to_identifier('0xCb5ea3c190d8f82DEADF7ce5Af855dDbf33e3962'), # We have Cashbery Coin for symbol CBC that is not listed in the coingecko list 'CBC-2', # We have Air token for symbol AIR. Got another AIR symbol token ethaddress_to_identifier('0x27Dce1eC4d3f72C3E457Cc50354f1F975dDEf488'), # We have Acorn Collective for symbol OAK. Got another OAK symbol token ethaddress_to_identifier('0x5e888B83B7287EED4fB7DA7b7d0A0D4c735d94b3'), # Coingecko has yearn v1 vault yUSD ethaddress_to_identifier('0x0ff3773a6984aD900f7FB23A9acbf07AC3aDFB06'), # Coingecko has yearn v1 vault yUSD (different vault from above but same symbol) ethaddress_to_identifier('0x4B5BfD52124784745c1071dcB244C6688d2533d3'), # Coingecko has Aston Martin Cognizant Fan Token and we have AeroME 'AM', # Coingecko has Swarm (BZZ) and we have SwarmCoin 'SWARM', # Coingecko has aircoin and we have a different airtoken 'AIR-2', # Coingecko has Attlas Token and we have Authorship ethaddress_to_identifier('0x2dAEE1AA61D60A252DC80564499A69802853583A'), # Coingecko has Lever Network and we have Leverj ethaddress_to_identifier('0x0F4CA92660Efad97a9a70CB0fe969c755439772C'), # Coingecko has Twirl Governance Token and we have Target Coin ethaddress_to_identifier('0xAc3Da587eac229C9896D919aBC235CA4Fd7f72c1'), # Coingecko has MyWish and we have another WISH (ethereum addresses don't match) ethaddress_to_identifier('0x1b22C32cD936cB97C28C5690a0695a82Abf688e6'), # Coingecko has DroneFly and we have KlondikeCoin for symbol KDC 'KDC', # Coingecko has CoinStarter and we have Student Coin for symbol STC ethaddress_to_identifier('0x15B543e986b8c34074DFc9901136d9355a537e7E'), # Coingecko has Nano Dogecoin symbol:ndc and we have NEVERDIE ethaddress_to_identifier('0xA54ddC7B3CcE7FC8b1E3Fa0256D0DB80D2c10970'), # Coingecko has olecoin and we have Olive ethaddress_to_identifier('0x9d9223436dDD466FC247e9dbbD20207e640fEf58'), # Coingecko has orica and we have origami ethaddress_to_identifier('0xd2Fa8f92Ea72AbB35dBD6DECa57173d22db2BA49'), # Coingeckop has a different storm token ethaddress_to_identifier('0xD0a4b8946Cb52f0661273bfbC6fD0E0C75Fc6433'), # We have Centra (CTR) but coingecko has creator platform ethaddress_to_identifier('0x96A65609a7B84E8842732DEB08f56C3E21aC6f8a'), # We have Gladius Token (GLA) but coingecko has Galaxy adventure ethaddress_to_identifier('0x71D01dB8d6a2fBEa7f8d434599C237980C234e4C'), # We have reftoken (REF) and coingecko has Ref Finance ethaddress_to_identifier('0x89303500a7Abfb178B274FD89F2469C264951e1f'), # We have Aidus (AID) and coingecko has aidcoin ethaddress_to_identifier('0xD178b20c6007572bD1FD01D205cC20D32B4A6015'), # We have depository network but coingecko has depo ethaddress_to_identifier('0x89cbeAC5E8A13F0Ebb4C74fAdFC69bE81A501106'), # Sinthetic ETH but coingecko has iEthereum ethaddress_to_identifier('0xA9859874e1743A32409f75bB11549892138BBA1E'), # blocklancer but coingecko has Linker ethaddress_to_identifier('0x63e634330A20150DbB61B15648bC73855d6CCF07'), # Kora network but coingecko Knekted ethaddress_to_identifier('0xfF5c25D2F40B47C4a37f989DE933E26562Ef0Ac0'), # gambit but coingecko has another gambit ethaddress_to_identifier('0xF67451Dc8421F0e0afEB52faa8101034ed081Ed9'), # publica but coingecko has another polkalab ethaddress_to_identifier('0x55648De19836338549130B1af587F16beA46F66B'), # Spin protocol but spinada in coingecko ethaddress_to_identifier('0x4F22310C27eF39FEAA4A756027896DC382F0b5E2'), # REBL but another REBL (rebel finance) in coingecko ethaddress_to_identifier('0x5F53f7A8075614b699Baad0bC2c899f4bAd8FBBF'), # Sp8de (SPX) but another SPX in coingecko ethaddress_to_identifier('0x05aAaA829Afa407D83315cDED1d45EB16025910c'), # marginless but another MRS in coingecko ethaddress_to_identifier('0x1254E59712e6e727dC71E0E3121Ae952b2c4c3b6'), # oyster (PRL) but another PRL in coingecko ethaddress_to_identifier('0x1844b21593262668B7248d0f57a220CaaBA46ab9'), # oyster shell but another SHL in coingecko ethaddress_to_identifier('0x8542325B72C6D9fC0aD2Ca965A78435413a915A0'), # dorado but another DOR in coingecko ethaddress_to_identifier('0x906b3f8b7845840188Eab53c3f5AD348A787752f'), ) for asset_data in GlobalDBHandler().get_all_asset_data(mapping=False): identifier = asset_data.identifier if identifier in DELISTED_ASSETS: # delisted assets won't be in the mapping continue if asset_data.asset_type == AssetType.FIAT: continue found = True coingecko_str = asset_data.coingecko have_id = True if coingecko_str is not None or coingecko_str != '': have_id = False found = coingecko_str in all_coins suggestions = [] if not found: for cc_id, entry in all_coins.items(): if entry['symbol'].upper() == asset_data.symbol.upper(): suggestions.append((cc_id, entry['name'], entry['symbol'])) continue if entry['name'].upper() == asset_data.symbol.upper(): suggestions.append((cc_id, entry['name'], entry['symbol'])) continue if have_id is False and (len(suggestions) == 0 or identifier in symbol_checked_exceptions): continue # no coingecko identifier and no suggestion or is in known exception msg = f'Asset {identifier} with symbol {asset_data.symbol} coingecko mapping does not exist.' # noqa: E501 if len(suggestions) != 0: for s in suggestions: msg += f'\nSuggestion: id:{s[0]} name:{s[1]} symbol:{s[2]}' if not found: test_warnings.warn(UserWarning(msg))
def test_coingecko_identifiers_are_reachable(): """ Test that all assets have a coingecko entry and that all the identifiers exist in coingecko """ coingecko = Coingecko() all_coins = coingecko.all_coins() # If coingecko identifier is missing test is trying to suggest possible assets. symbol_checked_exceptions = ( # This is the list of already checked assets # only 300 in coingecko is spartan coin: https://www.coingecko.com/en/coins/spartan ethaddress_to_identifier('0xaEc98A708810414878c3BCDF46Aad31dEd4a4557'), # no arcade city in coingeko. Got other ARC symbol tokens ethaddress_to_identifier('0xAc709FcB44a43c35F0DA4e3163b117A17F3770f5'), # no avalon in coingecko. Got travalala.com ethaddress_to_identifier('0xeD247980396B10169BB1d36f6e278eD16700a60f'), # no Bionic in coingecko. Got Bnoincoin ethaddress_to_identifier('0xEf51c9377FeB29856E61625cAf9390bD0B67eA18'), # no Bitair in coingecko. Got other BTCA symbol tokens ethaddress_to_identifier('0x02725836ebF3eCDb1cDf1c7b02FcbBfaa2736AF8'), # no Bither in coingecko. Got other BTR symbol tokens ethaddress_to_identifier('0xcbf15FB8246F679F9Df0135881CB29a3746f734b'), # no Content and Ad Network in coingecko. Got other CAN symbol tokens ethaddress_to_identifier('0x5f3789907b35DCe5605b00C0bE0a7eCDBFa8A841'), # no DICE money in coingecko. Got other CET symbol tokens ethaddress_to_identifier('0xF660cA1e228e7BE1fA8B4f5583145E31147FB577'), # no Cyberfi in coingecko. Got other CFI symbol tokens ethaddress_to_identifier('0x12FEF5e57bF45873Cd9B62E9DBd7BFb99e32D73e'), # The DAO is not in coingecko. Got other DAO symbol tokens ethaddress_to_identifier('0xBB9bc244D798123fDe783fCc1C72d3Bb8C189413'), # no Earth Token in coingecko. Got other EARTH symbol token and in BSC ethaddress_to_identifier('0x900b4449236a7bb26b286601dD14d2bDe7a6aC6c'), # no iDice in coingecko. Got other ICE symbol token ethaddress_to_identifier('0x5a84969bb663fb64F6d015DcF9F622Aedc796750'), # no InvestFeed token in coingecko. Got other IFT symbol token ethaddress_to_identifier('0x7654915A1b82D6D2D0AFc37c52Af556eA8983c7E'), # no Invacio token in coingecko. Got other INV symbol token ethaddress_to_identifier('0xEcE83617Db208Ad255Ad4f45Daf81E25137535bb'), # no Live Start token in coingecko. Got other LIVE symbol token ethaddress_to_identifier('0x24A77c1F17C547105E14813e517be06b0040aa76'), # no Musiconomi in coingecko. Got other MCI symbol token ethaddress_to_identifier('0x138A8752093F4f9a79AaeDF48d4B9248fab93c9C'), # no Remicoin in coingecko. Got other RMC symbol token ethaddress_to_identifier('0x7Dc4f41294697a7903C4027f6Ac528C5d14cd7eB'), # no Sola token in coingecko. Got other SOL symbol token ethaddress_to_identifier('0x1F54638b7737193FFd86c19Ec51907A7c41755D8'), # no Bitcoin card token in coingecko. Got other VD symbol token ethaddress_to_identifier('0x9a9bB9b4b11BF8eccff84B58a6CCCCD4058A7f0D'), # no Venus Energy token in coingecko. Got other VENUS symbol token ethaddress_to_identifier('0xEbeD4fF9fe34413db8fC8294556BBD1528a4DAca'), # no WinToken in coingecko. Got other WIN symbol token ethaddress_to_identifier('0xBfaA8cF522136C6FAfC1D53Fe4b85b4603c765b8'), # no Snowball in coingecko. Got other SNBL symbol token ethaddress_to_identifier('0x198A87b3114143913d4229Fb0f6D4BCb44aa8AFF'), # Token suggestion doesn't match token in db ethaddress_to_identifier('0xFD25676Fc2c4421778B18Ec7Ab86E7C5701DF187'), # Token suggestion doesn't match token in db ethaddress_to_identifier('0xcca0c9c383076649604eE31b20248BC04FdF61cA'), # Token suggestion doesn't match token in db ethaddress_to_identifier('0xAef38fBFBF932D1AeF3B808Bc8fBd8Cd8E1f8BC5'), # Token suggestion doesn't match token in db ethaddress_to_identifier('0x662aBcAd0b7f345AB7FfB1b1fbb9Df7894f18e66'), # Token suggestion doesn't match token in db ethaddress_to_identifier('0x497bAEF294c11a5f0f5Bea3f2AdB3073DB448B56'), # Token suggestion doesn't match token in db ethaddress_to_identifier('0xAbdf147870235FcFC34153828c769A70B3FAe01F'), # Token suggestion doesn't match token in db ethaddress_to_identifier('0x4DF47B4969B2911C966506E3592c41389493953b'), # Token suggestion doesn't match token in db ethaddress_to_identifier('0xB563300A3BAc79FC09B93b6F84CE0d4465A2AC27'), 'ACC', # no Adcoin in Coingecko. Got other ACC symbol token 'APH', # no Aphelion in Coingecko. Got other APH symbol token 'ARCH', # no ARCH in Coingecko. Got other ARCH symbol token 'BET-2', # no BetaCoin in Coingecko. Got other BET symbol token 'CCN-2', # no CannaCoin in Coingecko. Got other CCN symbol token 'CHAT', # no ChatCoin in Coingecko. Got other CHAT symbol token 'CMT-2', # no Comet in Coingecko. Got other CMT symbol token 'CRC-2', # no CrownCoin in Coingecko. Got other CRC symbol token 'CYC', # no ConspiracyCoin in Coingecko. Got other CYC symbol token 'EDR-2', # no E-Dinar coin in Coingecko. Got other EDR symbol token 'FLAP', # no FlappyCoin coin in Coingecko. Got other FLAP symbol token 'HC-2', # no Harvest Masternode Coin in Coingecko. Got other HC symbol token 'KEY-3', # no KeyCoin Coin in Coingecko. Got other KEY symbol token 'MUSIC', # Music in coingecko is nftmusic and not our MUSIC 'NAUT', # Token suggestion doesn't match token in db 'OCC', # no Octoin Coin in Coingecko. Got other OCC symbol token 'SPA', # no SpainCoin Coin in Coingecko. Got other SPA symbol token 'WEB-2', # no Webchain in Coingecko. Got other WEB symbol token 'WOLF', # no Insanity Coin in Coingecko. Got other WOLF symbol token 'XAI', # Token suggestion doesn't match token in db 'XPB', # no Pebble Coin in Coingecko. Got other XPB symbol token 'XNS', # no Insolar in Coingecko. Got other XNS symbol token 'PIGGY', # Coingecko listed another asset PIGGY that is not Piggy Coin # coingecko listed CAR that is not our token CarBlock.io ethaddress_to_identifier('0x4D9e23a3842fE7Eb7682B9725cF6c507C424A41B'), # coingecko listed newb farm with symbol NEWB that is not our newb ethaddress_to_identifier('0x5A63Eb358a751b76e58325eadD86c2473fC40e87'), # coingecko has BigBang Core (BBC) that is not tradove ethaddress_to_identifier('0xe7D3e4413E29ae35B0893140F4500965c74365e5'), # MNT is Meownaut in coingecko and not media network token ethaddress_to_identifier('0xA9877b1e05D035899131DBd1e403825166D09f92'), # Project quantum in coingecko but we have Qubitica ethaddress_to_identifier('0xCb5ea3c190d8f82DEADF7ce5Af855dDbf33e3962'), # We have Cashbery Coin for symbol CBC that is not listed in the coingecko list 'CBC-2', ) for asset_data in GlobalDBHandler().get_all_asset_data(mapping=False): identifier = asset_data.identifier if identifier in DELISTED_ASSETS: # delisted assets won't be in the mapping continue if asset_data.asset_type == AssetType.FIAT: continue found = True coingecko_str = asset_data.coingecko have_id = True if coingecko_str is not None or coingecko_str != '': have_id = False found = False for entry in all_coins: if coingecko_str == entry['id']: found = True break suggestions = [] if not found: for entry in all_coins: if entry['symbol'].upper() == asset_data.symbol.upper(): suggestions.append( (entry['id'], entry['name'], entry['symbol'])) continue if entry['name'].upper() == asset_data.symbol.upper(): suggestions.append( (entry['id'], entry['name'], entry['symbol'])) continue if have_id is False and (len(suggestions) == 0 or identifier in symbol_checked_exceptions): continue # no coingecko identifier and no suggestion or is in known exception msg = f'Asset {identifier} with symbol {asset_data.symbol} coingecko mapping does not exist.' # noqa: E501 if len(suggestions) != 0: for s in suggestions: msg += f'\nSuggestion: id:{s[0]} name:{s[1]} symbol:{s[2]}' if not found: test_warnings.warn(UserWarning(msg))
def test_coingecko_identifiers_are_reachable(data_dir): """ Test that all assets have a coingecko entry and that all the identifiers exist in coingecko """ coingecko = Coingecko(data_directory=data_dir) all_coins = coingecko.all_coins() # If coingecko identifier is missing test is trying to suggest possible assets. symbol_checked_exceptions = ( # This is the list of already checked assets # only 300 in coingecko is spartan coin: https://www.coingecko.com/en/coins/spartan ethaddress_to_identifier('0xaEc98A708810414878c3BCDF46Aad31dEd4a4557'), # no arcade city in coingeko. Got other ARC symbol tokens ethaddress_to_identifier('0xAc709FcB44a43c35F0DA4e3163b117A17F3770f5'), # no avalon in coingecko. Got travalala.com ethaddress_to_identifier('0xeD247980396B10169BB1d36f6e278eD16700a60f'), # no Bionic in coingecko. Got Bnoincoin ethaddress_to_identifier('0xEf51c9377FeB29856E61625cAf9390bD0B67eA18'), # no Bitair in coingecko. Got other BTCA symbol tokens ethaddress_to_identifier('0x02725836ebF3eCDb1cDf1c7b02FcbBfaa2736AF8'), # no Bither in coingecko. Got other BTR symbol tokens ethaddress_to_identifier('0xcbf15FB8246F679F9Df0135881CB29a3746f734b'), # no Content and Ad Network in coingecko. Got other CAN symbol tokens ethaddress_to_identifier('0x5f3789907b35DCe5605b00C0bE0a7eCDBFa8A841'), # no DICE money in coingecko. Got other CET symbol tokens ethaddress_to_identifier('0xF660cA1e228e7BE1fA8B4f5583145E31147FB577'), # no Cyberfi in coingecko. Got other CFI symbol tokens ethaddress_to_identifier('0x12FEF5e57bF45873Cd9B62E9DBd7BFb99e32D73e'), # The DAO is not in coingecko. Got other DAO symbol tokens ethaddress_to_identifier('0xBB9bc244D798123fDe783fCc1C72d3Bb8C189413'), # no Earth Token in coingecko. Got other EARTH symbol token and in BSC ethaddress_to_identifier('0x900b4449236a7bb26b286601dD14d2bDe7a6aC6c'), # no iDice in coingecko. Got other ICE symbol token ethaddress_to_identifier('0x5a84969bb663fb64F6d015DcF9F622Aedc796750'), # no InvestFeed token in coingecko. Got other IFT symbol token ethaddress_to_identifier('0x7654915A1b82D6D2D0AFc37c52Af556eA8983c7E'), # no Invacio token in coingecko. Got other INV symbol token ethaddress_to_identifier('0xEcE83617Db208Ad255Ad4f45Daf81E25137535bb'), # no Live Start token in coingecko. Got other LIVE symbol token ethaddress_to_identifier('0x24A77c1F17C547105E14813e517be06b0040aa76'), # no Musiconomi in coingecko. Got other MCI symbol token ethaddress_to_identifier('0x138A8752093F4f9a79AaeDF48d4B9248fab93c9C'), # no Remicoin in coingecko. Got other RMC symbol token ethaddress_to_identifier('0x7Dc4f41294697a7903C4027f6Ac528C5d14cd7eB'), # no Sola token in coingecko. Got other SOL symbol token ethaddress_to_identifier('0x1F54638b7737193FFd86c19Ec51907A7c41755D8'), # no Bitcoin card token in coingecko. Got other VD symbol token ethaddress_to_identifier('0x9a9bB9b4b11BF8eccff84B58a6CCCCD4058A7f0D'), # no Venus Energy token in coingecko. Got other VENUS symbol token ethaddress_to_identifier('0xEbeD4fF9fe34413db8fC8294556BBD1528a4DAca'), # no WinToken in coingecko. Got other WIN symbol token ethaddress_to_identifier('0xBfaA8cF522136C6FAfC1D53Fe4b85b4603c765b8'), # no Snowball in coingecko. Got other SNBL symbol token ethaddress_to_identifier('0x198A87b3114143913d4229Fb0f6D4BCb44aa8AFF'), 'ACC', # no Adcoin in Coingecko. Got other ACC symbol token 'APH', # no Aphelion in Coingecko. Got other APH symbol token 'ARCH', # no ARCH in Coingecko. Got other ARCH symbol token 'BET-2', # no BetaCoin in Coingecko. Got other BET symbol token 'CCN-2', # no CannaCoin in Coingecko. Got other CCN symbol token 'CHAT', # no ChatCoin in Coingecko. Got other CHAT symbol token 'CMT-2', # no Comet in Coingecko. Got other CMT symbol token 'CRC-2', # no CrownCoin in Coingecko. Got other CRC symbol token 'CYC', # no ConspiracyCoin in Coingecko. Got other CYC symbol token 'EDR-2', # no E-Dinar coin in Coingecko. Got other EDR symbol token 'FLAP', # no FlappyCoin coin in Coingecko. Got other FLAP symbol token 'HC-2', # no Harvest Masternode Coin in Coingecko. Got other HC symbol token 'KEY-3', # no KeyCoin Coin in Coingecko. Got other KEY symbol token 'OCC', # no Octoin Coin in Coingecko. Got other OCC symbol token 'SPA', # no SpainCoin Coin in Coingecko. Got other SPA symbol token 'WEB-2', # no Webchain in Coingecko. Got other WEB symbol token 'WOLF', # no Insanity Coin in Coingecko. Got other WOLF symbol token 'XPB', # no Pebble Coin in Coingecko. Got other XPB symbol token 'XNS', # no Insolar in Coingecko. Got other XNS symbol token ) for asset_data in GlobalDBHandler().get_all_asset_data(mapping=False): identifier = asset_data.identifier if identifier in DELISTED_ASSETS: # delisted assets won't be in the mapping continue if asset_data.asset_type == AssetType.FIAT: continue found = True coingecko_str = asset_data.coingecko have_id = True if coingecko_str is not None or coingecko_str != '': have_id = False found = False for entry in all_coins: if coingecko_str == entry['id']: found = True break suggestions = [] if not found: for entry in all_coins: if entry['symbol'].upper() == asset_data.symbol.upper(): suggestions.append((entry['id'], entry['name'], entry['symbol'])) continue if entry['name'].upper() == asset_data.symbol.upper(): suggestions.append((entry['id'], entry['name'], entry['symbol'])) continue if have_id is False and (len(suggestions) == 0 or identifier in symbol_checked_exceptions): continue # no coingecko identifier and no suggestion or is in known exception msg = f'Asset {identifier} with symbol {asset_data.symbol} coingecko mapping does not exist.' # noqa: E501 if len(suggestions) != 0: for s in suggestions: msg += f'\nSuggestion: id:{s[0]} name:{s[1]} symbol:{s[2]}' if not found: test_warnings.warn(UserWarning(msg))