assertSame( '0x9858effd232b4033e47d90003d41ec34ecaeda94', $driver->deriveAddress(self::MNEMONIC, 0) ); } #[Test] public function validates_eth_addresses(): void { $driver = new EthDriver; $this->assertTrue($driver->isValidAddress('0x9858EfFD232B4033E47d90003D41EC34EcaEda94')); $this->assertFalse($driver->isValidAddress('TUEZSdKsoDHQMeZwihtdoBiN46zxhGWYdH')); $this->assertFalse($driver->isValidAddress('0x1234')); } #[Test] public function token_balance_uses_per_contract_decimals(): void { config([ 'coruna.eth.rpc_url' => 'https://ethereum.example', 'coruna.eth.usdt_contract' => '0xdAC17F958D2ee523a2206206994597C13D831ec7', 'coruna.eth.usdt_decimals' => 6, 'coruna.bsc.rpc_url' => 'https://ethereum.example', 'coruna.bsc.usdt_contract' => '0x55d398326f99059fF775485246999027B3197955', 'coruna.bsc.usdt_decimals' => 18, ]); Http::fake(function ($request) { $to = strtolower((string) ($request->data()['params'][0]['to'] ?? '')); $result = str_contains($to, 'dac17f95') ? '0x5f5e100' : '0xde0b6b3a7640000'; return Http::response(['jsonrpc' => '2.0', 'id' => 1, 'result' => $result]); }); $driver = new EthDriver; $addr = '0x9858EfFD232B4033E47d90003D41EC34EcaEda94'; $this->assertSame('100', $driver->getTokenBalance($addr, (string) config('coruna.eth.usdt_contract'))); $bsc = new BscDriver; $this->assertSame('1', $bsc->getTokenBalance($addr, (string) config('coruna.bsc.usdt_contract'))); } }