parent
5d065a5e36
commit
85424403c2
@ -0,0 +1,5 @@ |
|||||||
|
GENESIS_PRIV_KEY=27978f895b11d9c737e1ab1623fde722c04b4f9ccb4ab776bf15932cc72d7c66 |
||||||
|
HTTP_PROVIDER=http://localhost:9500 |
||||||
|
CHAIN_TYPE=hmy |
||||||
|
CHAIN_ID=0 |
||||||
|
|
@ -0,0 +1,79 @@ |
|||||||
|
{ |
||||||
|
"Accounts": [ |
||||||
|
{ |
||||||
|
"Address": "0x1a3e7a44ee21101d7D64FBf29B0F6F1fc295F723", |
||||||
|
"Private": "27978f895b11d9c737e1ab1623fde722c04b4f9ccb4ab776bf15932cc72d7c66", |
||||||
|
"Public": "0x1a3e7a44ee21101d7D64FBf29B0F6F1fc295F723" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"Address": "0x10A02A0a6e95a676AE23e2db04BEa3D1B8b7ca2E", |
||||||
|
"Private": "371cb68abe6a6101ac88603fc847e0c013a834253acee5315884d2c4e387ebca", |
||||||
|
"Public": "0x10A02A0a6e95a676AE23e2db04BEa3D1B8b7ca2E" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"Address": "0x3e881F6C36A3A14a2D1816b0A5471d1caBB16F33", |
||||||
|
"Private": "3f8af52063c6648be37d4b33559f784feb16d8e5ffaccf082b3657ea35b05977", |
||||||
|
"Public": "0x3e881F6C36A3A14a2D1816b0A5471d1caBB16F33" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"Address": "0x9d72989b68777a1f3FfD6F1DB079f1928373eE52", |
||||||
|
"Private": "df77927961152e6a080ac299e7af2135fc0fb02eb044d0d7bbb1e8c5ad523809", |
||||||
|
"Public": "0x9d72989b68777a1f3FfD6F1DB079f1928373eE52" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"Address": "0x67957240b6eB045E17B47dcE98102f09aaC03435", |
||||||
|
"Private": "fcff43741ad2dd0b232efb159dc47736bbb16f11a79aaeec39b388d06f91116d", |
||||||
|
"Public": "0x67957240b6eB045E17B47dcE98102f09aaC03435" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"Address": "0xf70fBDB1AD002baDF19024785b1a4bf6F841F558", |
||||||
|
"Private": "916d3d78b7f413452434e89f9c1f1d136995ef02d7dc8038e84cc9cef4a02b96", |
||||||
|
"Public": "0xf70fBDB1AD002baDF19024785b1a4bf6F841F558" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"Address": "0x3f1A559be93C9456Ca75712535Fd522f5EC22c6B", |
||||||
|
"Private": "f5967bd87fd2b9dbf51855a2a75ef0a811c84953b3b300ffe90c430a5c856303", |
||||||
|
"Public": "0x3f1A559be93C9456Ca75712535Fd522f5EC22c6B" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"Address": "0xedD257B4e0F5e7d632c737f4277e93b64DC268FC", |
||||||
|
"Private": "f02f7b3bb5aa03aa97f9e030020dd9ca306b209742fafe018104a3207a70a3c9", |
||||||
|
"Public": "0xedD257B4e0F5e7d632c737f4277e93b64DC268FC" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"Address": "0x66A74477FC1dd0F4924ed943C1d2F1Dece3Ab138", |
||||||
|
"Private": "0436864cc15772448f88dd40554592ff6c91a6c1a389d965ad26ee143db1234d", |
||||||
|
"Public": "0x66A74477FC1dd0F4924ed943C1d2F1Dece3Ab138" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"Address": "0x04178CdbCe3a9Ff9Ea385777aFc4b78B3E745281", |
||||||
|
"Private": "dea956e530073ab23d9cae704f5d068482b1977c3173c9efd697c48a7fd3ce83", |
||||||
|
"Public": "0x04178CdbCe3a9Ff9Ea385777aFc4b78B3E745281" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"Address": "0x46C61d50874A7A06D29FF89a710AbBD0856265be", |
||||||
|
"Private": "af539d4ace07a9f601a8d3a6ca6f914d5a9fabe09cfe7d62ebc2348fc95f03a4", |
||||||
|
"Public": "0x46C61d50874A7A06D29FF89a710AbBD0856265be" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"Address": "0xfE9BABE6904C28E31971337738FBCBAF8c72873e", |
||||||
|
"Private": "7d24797eeba0cdac9bf943f0d82c4b18eb206108d6e1b7f610471594c0c94306", |
||||||
|
"Public": "0xfE9BABE6904C28E31971337738FBCBAF8c72873e" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"Address": "0x3f78622de8D8f87EAa0E8b28C2851e2450E91250", |
||||||
|
"Private": "4fa2fecce1becfaf7e5fba5394caacb318333b04071462b5ca850ee5a406dcfe", |
||||||
|
"Public": "0x3f78622de8D8f87EAa0E8b28C2851e2450E91250" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"Address": "0xd2Cb501B40D3a9a013A38267a4d2A4Cf6bD2CAa8", |
||||||
|
"Private": "3c8642f7188e05acc4467d9e2aa7fd539e82aa90a5497257cf0ecbb98ed3b88f", |
||||||
|
"Public": "0xd2Cb501B40D3a9a013A38267a4d2A4Cf6bD2CAa8" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"Address": "0x2676e6dd2d7618be14cb4c18a355c81bf7aac647", |
||||||
|
"Private": "bf29f6a33b2c24a8b5182ef44cc35ce87534ef827c8dfbc1e6bb536aa52f8563", |
||||||
|
"Public": "0x2676e6dd2d7618be14cb4c18a355c81bf7aac647" |
||||||
|
} |
||||||
|
] |
||||||
|
} |
@ -0,0 +1,88 @@ |
|||||||
|
import { harmony } from './harmony'; |
||||||
|
|
||||||
|
import demoAccounts from '../fixtures/testAccount.json'; |
||||||
|
|
||||||
|
const bc = harmony.blockchain; |
||||||
|
|
||||||
|
const testAccount = demoAccounts.Accounts[1]; |
||||||
|
|
||||||
|
describe('e2e test blockchain', () => { |
||||||
|
// net_*
|
||||||
|
it('should test net_peerCount', async () => { |
||||||
|
const peerCount = await bc.net_peerCount(); |
||||||
|
expect(harmony.utils.isHex(peerCount.result)).toEqual(true); |
||||||
|
}); |
||||||
|
|
||||||
|
it('should test net_version', async () => { |
||||||
|
const netVersion = await bc.net_version(); |
||||||
|
const versionNumber = parseInt(netVersion.result as string, 10); |
||||||
|
expect(netVersion.result).toEqual(`${versionNumber}`); |
||||||
|
}); |
||||||
|
it('should test hmy_protocalVersion', async () => { |
||||||
|
const protocalVersion = await bc.getProtocalVersion(); |
||||||
|
expect(harmony.utils.isHex(protocalVersion.result)).toEqual(true); |
||||||
|
}); |
||||||
|
|
||||||
|
// block chain info
|
||||||
|
it('should test hmy_blockNumber', async () => { |
||||||
|
const res = await bc.getBlockNumber(); |
||||||
|
expect(res.responseType).toEqual('raw'); |
||||||
|
expect(harmony.utils.isHex(res.result)).toEqual(true); |
||||||
|
}); |
||||||
|
it('should test hmy_getBlockByNumber', async () => { |
||||||
|
const res = await bc.getBlockByNumber({ blockNumber: 'latest' }); |
||||||
|
const size = res.result.size; |
||||||
|
expect(res.responseType).toEqual('raw'); |
||||||
|
expect(harmony.utils.isHex(size)).toEqual(true); |
||||||
|
expect(checkBlockData(res.result)).toEqual(true); |
||||||
|
const res2 = await bc.getBlockByNumber({ blockNumber: '0x1' }); |
||||||
|
expect(res2.responseType).toEqual('raw'); |
||||||
|
expect(harmony.utils.isHex(res2.result.size)).toEqual(true); |
||||||
|
expect(checkBlockData(res2.result)).toEqual(true); |
||||||
|
const res3 = await bc.getBlockByNumber({ returnObject: true }); |
||||||
|
expect(res3.responseType).toEqual('raw'); |
||||||
|
expect(checkBlockData(res3.result)).toEqual(true); |
||||||
|
expect(typeof res3.result.timestamp).toEqual('number'); |
||||||
|
}); |
||||||
|
it('should test hmy_getBlockByHash', async () => { |
||||||
|
const latestBlock = await bc.getBlockByNumber({ blockNumber: 'latest' }); |
||||||
|
const res = await bc.getBlockByHash({ blockHash: latestBlock.result.hash }); |
||||||
|
expect(res.responseType).toEqual('raw'); |
||||||
|
expect(latestBlock.result.hash).toEqual(res.result.hash); |
||||||
|
expect(harmony.utils.isHex(res.result.size)).toEqual(true); |
||||||
|
expect(checkBlockData(res.result)).toEqual(true); |
||||||
|
}); |
||||||
|
|
||||||
|
// account related
|
||||||
|
it('should test hmy_getBalance', async () => { |
||||||
|
const balance = await bc.getBalance({ address: testAccount.Address }); |
||||||
|
expect(harmony.utils.isHex(balance.result)).toEqual(true); |
||||||
|
}); |
||||||
|
}); |
||||||
|
|
||||||
|
function checkBlockData(data: any) { |
||||||
|
return harmony.utils.validateArgs( |
||||||
|
data, |
||||||
|
{ |
||||||
|
difficulty: [harmony.utils.isNumber], |
||||||
|
// tslint:disable-next-line: no-shadowed-variable
|
||||||
|
extraData: [(data: any) => data === '0x' || harmony.utils.isHex(data)], |
||||||
|
gasLimit: [harmony.utils.isHex], |
||||||
|
gasUsed: [harmony.utils.isHex], |
||||||
|
hash: [harmony.utils.isHash], |
||||||
|
logsBloom: [harmony.utils.isHex], |
||||||
|
miner: [harmony.utils.isAddress], |
||||||
|
mixHash: [harmony.utils.isHash], |
||||||
|
nonce: [harmony.utils.isNumber], |
||||||
|
number: [harmony.utils.isHex], |
||||||
|
parentHash: [harmony.utils.isHash], |
||||||
|
receiptsRoot: [harmony.utils.isHash], |
||||||
|
size: [harmony.utils.isHex], |
||||||
|
stateRoot: [harmony.utils.isHash], |
||||||
|
timestamp: [harmony.utils.isNumber], |
||||||
|
transactionsRoot: [harmony.utils.isHash], |
||||||
|
uncles: [harmony.utils.isArray], |
||||||
|
}, |
||||||
|
{ transactions: [harmony.utils.isArray] }, |
||||||
|
); |
||||||
|
} |
@ -0,0 +1,29 @@ |
|||||||
|
// tslint:disable-next-line: no-implicit-dependencies
|
||||||
|
import { Harmony } from '@harmony-js/core'; |
||||||
|
// tslint:disable-next-line: no-implicit-dependencies
|
||||||
|
import { ChainType } from '@harmony-js/utils'; |
||||||
|
// tslint:disable-next-line: no-implicit-dependencies
|
||||||
|
import { Account } from '@harmony-js/account'; |
||||||
|
|
||||||
|
const CHAIN_ID: number = parseInt(process.env.CHAIN_ID as string, 10); |
||||||
|
const CHAIN_TYPE: string = process.env.CHAIN_TYPE as string; |
||||||
|
const HTTP_PROVIDER: string = process.env.HTTP_PROVIDER as string; |
||||||
|
const GENESIS_PRIV_KEY: string = process.env.GENESIS_PRIV_KEY as string; |
||||||
|
|
||||||
|
let chainType: ChainType = ChainType.Harmony; |
||||||
|
|
||||||
|
if (CHAIN_TYPE === 'hmy') { |
||||||
|
chainType = ChainType.Harmony; |
||||||
|
} else if (CHAIN_TYPE === 'eth') { |
||||||
|
chainType = ChainType.Ethereum; |
||||||
|
} |
||||||
|
|
||||||
|
export const harmony: Harmony = new Harmony(HTTP_PROVIDER, { |
||||||
|
chainId: CHAIN_ID, |
||||||
|
chainType, |
||||||
|
chainUrl: HTTP_PROVIDER, |
||||||
|
}); |
||||||
|
|
||||||
|
export const myAccount: Account = harmony.wallet.addByPrivateKey( |
||||||
|
GENESIS_PRIV_KEY, |
||||||
|
); |
@ -0,0 +1,17 @@ |
|||||||
|
{ |
||||||
|
"extends": "../tsconfig.base.json", |
||||||
|
"compilerOptions": { |
||||||
|
"outDir": "dist", |
||||||
|
"rootDir": "src", |
||||||
|
"declarationDir": "dist" |
||||||
|
}, |
||||||
|
"include": ["src", "../typings/**/*.d.ts"], |
||||||
|
"references": [ |
||||||
|
{ "path": "../packages/harmony-account" }, |
||||||
|
{ "path": "../packages/harmony-crypto" }, |
||||||
|
{ "path": "../packages/harmony-utils" }, |
||||||
|
{ "path": "../packages/harmony-network" }, |
||||||
|
{ "path": "../packages/harmony-transaction" }, |
||||||
|
{ "path": "../packages/harmony-contract" } |
||||||
|
] |
||||||
|
} |
@ -0,0 +1,10 @@ |
|||||||
|
const baseConfig = require('./jest.src.config'); |
||||||
|
module.exports = { |
||||||
|
...baseConfig, |
||||||
|
moduleNameMapper: { |
||||||
|
'^@harmony-js/(.*)$': '<rootDir>/packages/harmony-$1/src/index.ts', |
||||||
|
}, |
||||||
|
setupTestFrameworkScriptFile: |
||||||
|
'<rootDir>/scripts/jest/jest.framework-setup.js', |
||||||
|
testMatch: ['<rootDir>/e2e/src/?(*.)+(spec|test|e2e).ts'], |
||||||
|
}; |
@ -1,3 +1,5 @@ |
|||||||
global.fetch = require('jest-fetch-mock') |
global.fetch = require('jest-fetch-mock'); |
||||||
|
|
||||||
window.fetch = global.fetch |
window.fetch = global.fetch; |
||||||
|
|
||||||
|
require('dotenv').config('../../.env'); |
||||||
|
@ -0,0 +1,4 @@ |
|||||||
|
{ |
||||||
|
"files": [], |
||||||
|
"references": [{ "path": "e2e" }] |
||||||
|
} |
Loading…
Reference in new issue