99 lines
3.9 KiB
JavaScript
99 lines
3.9 KiB
JavaScript
|
|
#!/usr/bin/env node
|
||
|
|
/**
|
||
|
|
* Provider integration test (Node).
|
||
|
|
* Tests chain configs, token list, and exports without window.ethereum.
|
||
|
|
* Run: node test-integration.mjs
|
||
|
|
*/
|
||
|
|
|
||
|
|
const assert = (ok, msg) => {
|
||
|
|
if (!ok) throw new Error(msg)
|
||
|
|
}
|
||
|
|
|
||
|
|
async function main() {
|
||
|
|
console.log('Provider integration test (Node)\n')
|
||
|
|
|
||
|
|
const { CHAINS, CHAIN_138, CHAIN_MAINNET, CHAIN_ALL_MAINNET, getChainById, getChainByHex } = await import('./chains.js')
|
||
|
|
const { getTokensByChain, getToken, TOKEN_LIST_URL } = await import('./tokens.js')
|
||
|
|
const { addChainsToWallet, switchChain, addTokenToWallet, ensureChain } = await import('./wallet.js')
|
||
|
|
const { ORACLES_CHAIN_138, ORACLES_MAINNET, getOracleConfig } = await import('./oracles.js')
|
||
|
|
|
||
|
|
let passed = 0
|
||
|
|
let failed = 0
|
||
|
|
|
||
|
|
// Chains
|
||
|
|
try {
|
||
|
|
assert(Array.isArray(CHAINS) && CHAINS.length >= 3, 'CHAINS has at least 3 entries')
|
||
|
|
assert(CHAIN_138 && CHAIN_138.chainIdDecimal === 138, 'CHAIN_138 has chainIdDecimal 138')
|
||
|
|
assert(CHAIN_MAINNET && CHAIN_MAINNET.chainIdDecimal === 1, 'CHAIN_MAINNET has chainIdDecimal 1')
|
||
|
|
assert(CHAIN_ALL_MAINNET && CHAIN_ALL_MAINNET.chainIdDecimal === 651940, 'CHAIN_ALL_MAINNET has chainIdDecimal 651940')
|
||
|
|
assert(getChainById(138) === CHAIN_138, 'getChainById(138) returns CHAIN_138')
|
||
|
|
assert(getChainById(1) === CHAIN_MAINNET, 'getChainById(1) returns CHAIN_MAINNET')
|
||
|
|
assert(getChainByHex('0x8a') === CHAIN_138, 'getChainByHex(0x8a) returns CHAIN_138')
|
||
|
|
console.log(' ✓ Chains (CHAINS, CHAIN_138, CHAIN_MAINNET, CHAIN_ALL_MAINNET, getChainById, getChainByHex)')
|
||
|
|
passed++
|
||
|
|
} catch (e) {
|
||
|
|
console.log(' ✗ Chains:', e.message)
|
||
|
|
failed++
|
||
|
|
}
|
||
|
|
|
||
|
|
// Tokens
|
||
|
|
try {
|
||
|
|
const t138 = getTokensByChain(138)
|
||
|
|
const t1 = getTokensByChain(1)
|
||
|
|
const t651940 = getTokensByChain(651940)
|
||
|
|
assert(Array.isArray(t138) && t138.length > 0, 'getTokensByChain(138) returns non-empty array')
|
||
|
|
assert(Array.isArray(t1) && t1.length > 0, 'getTokensByChain(1) returns non-empty array')
|
||
|
|
assert(Array.isArray(t651940), 'getTokensByChain(651940) returns array')
|
||
|
|
assert(typeof TOKEN_LIST_URL === 'string' && TOKEN_LIST_URL.length > 0, 'TOKEN_LIST_URL is set')
|
||
|
|
const weth138 = getToken(138, '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2')
|
||
|
|
assert(weth138 && weth138.symbol, 'getToken(138, WETH9) returns token with symbol')
|
||
|
|
console.log(' ✓ Tokens (getTokensByChain, getToken, TOKEN_LIST_URL)')
|
||
|
|
passed++
|
||
|
|
} catch (e) {
|
||
|
|
console.log(' ✗ Tokens:', e.message)
|
||
|
|
failed++
|
||
|
|
}
|
||
|
|
|
||
|
|
// Wallet (exports only; no window.ethereum)
|
||
|
|
try {
|
||
|
|
assert(typeof addChainsToWallet === 'function', 'addChainsToWallet is function')
|
||
|
|
assert(typeof switchChain === 'function', 'switchChain is function')
|
||
|
|
assert(typeof addTokenToWallet === 'function', 'addTokenToWallet is function')
|
||
|
|
assert(typeof ensureChain === 'function', 'ensureChain is function')
|
||
|
|
console.log(' ✓ Wallet exports (addChainsToWallet, switchChain, addTokenToWallet, ensureChain)')
|
||
|
|
passed++
|
||
|
|
} catch (e) {
|
||
|
|
console.log(' ✗ Wallet:', e.message)
|
||
|
|
failed++
|
||
|
|
}
|
||
|
|
|
||
|
|
// Oracles
|
||
|
|
try {
|
||
|
|
assert(ORACLES_CHAIN_138 && ORACLES_CHAIN_138.ethUsdProxy, 'ORACLES_CHAIN_138 has ethUsdProxy')
|
||
|
|
assert(ORACLES_MAINNET && ORACLES_MAINNET.ethUsdProxy, 'ORACLES_MAINNET has ethUsdProxy')
|
||
|
|
const cfg138 = getOracleConfig(138)
|
||
|
|
const cfg1 = getOracleConfig(1)
|
||
|
|
assert(cfg138 && cfg138.ethUsdProxy, 'getOracleConfig(138) has ethUsdProxy')
|
||
|
|
assert(cfg1 && cfg1.ethUsdProxy, 'getOracleConfig(1) has ethUsdProxy')
|
||
|
|
console.log(' ✓ Oracles (ORACLES_CHAIN_138, ORACLES_MAINNET, getOracleConfig)')
|
||
|
|
passed++
|
||
|
|
} catch (e) {
|
||
|
|
console.log(' ✗ Oracles:', e.message)
|
||
|
|
failed++
|
||
|
|
}
|
||
|
|
|
||
|
|
console.log('')
|
||
|
|
if (failed === 0) {
|
||
|
|
console.log(`Result: ${passed} passed, 0 failed`)
|
||
|
|
process.exit(0)
|
||
|
|
} else {
|
||
|
|
console.log(`Result: ${passed} passed, ${failed} failed`)
|
||
|
|
process.exit(1)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
main().catch((err) => {
|
||
|
|
console.error(err)
|
||
|
|
process.exit(1)
|
||
|
|
})
|