Files
metamask-integration/provider/test-integration.mjs

99 lines
3.9 KiB
JavaScript
Raw Permalink Normal View History

#!/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)
})