use of co.rsk.test.World in project rskj by rsksmart.
the class Web3ImplTest method callFromAddressInWallet.
@Test
public void callFromAddressInWallet() throws Exception {
World world = new World();
Account acc1 = new AccountBuilder(world).name("notDefault").balance(Coin.valueOf(10000000)).build();
Block genesis = world.getBlockByName("g00");
/* contract compiled in data attribute of tx
contract greeter {
address owner;
modifier onlyOwner { if (msg.sender != owner) throw; _ ; }
function greeter() public {
owner = msg.sender;
}
function greet(string param) onlyOwner constant returns (string) {
return param;
}
} */
Transaction tx = new TransactionBuilder().sender(acc1).gasLimit(BigInteger.valueOf(100000)).gasPrice(BigInteger.ONE).data("60606040525b33600060006101000a81548173ffffffffffffffffffffffffffffffffffffffff02191690836c010000000000000000000000009081020402179055505b610181806100516000396000f360606040526000357c010000000000000000000000000000000000000000000000000000000090048063ead710c41461003c57610037565b610002565b34610002576100956004808035906020019082018035906020019191908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050909091905050610103565b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f1680156100f55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6020604051908101604052806000815260200150600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561017357610002565b81905061017b565b5b91905056").build();
List<Transaction> txs = new ArrayList<>();
txs.add(tx);
Block block1 = new BlockBuilder(world).parent(genesis).transactions(txs).build();
world.getBlockChain().tryToConnect(block1);
Web3Impl web3 = createWeb3Mocked(world);
web3.personal_newAccountWithSeed("default");
web3.personal_newAccountWithSeed("notDefault");
Web3.CallArguments argsForCall = new Web3.CallArguments();
argsForCall.from = TypeConverter.toJsonHex(acc1.getAddress().getBytes());
argsForCall.to = TypeConverter.toJsonHex(tx.getContractAddress().getBytes());
argsForCall.data = "0xead710c40000000000000000000000000000000000000000000000000000000064617665";
String result = web3.eth_call(argsForCall, "latest");
org.junit.Assert.assertEquals("0x0000000000000000000000000000000000000000000000000000000064617665", result);
}
use of co.rsk.test.World in project rskj by rsksmart.
the class Web3ImplTest method getBlockByHash.
@Test
public void getBlockByHash() throws Exception {
World world = new World();
Web3Impl web3 = createWeb3(world);
Block genesis = world.getBlockChain().getBestBlock();
Block block1 = new BlockBuilder(world).difficulty(10).parent(genesis).build();
block1.setBitcoinMergedMiningHeader(new byte[] { 0x01 });
org.junit.Assert.assertEquals(ImportResult.IMPORTED_BEST, world.getBlockChain().tryToConnect(block1));
Block block1b = new BlockBuilder(world).difficulty(block1.getDifficulty().asBigInteger().longValue() - 1).parent(genesis).build();
block1b.setBitcoinMergedMiningHeader(new byte[] { 0x01 });
Block block2b = new BlockBuilder(world).difficulty(2).parent(block1b).build();
block2b.setBitcoinMergedMiningHeader(new byte[] { 0x02 });
org.junit.Assert.assertEquals(ImportResult.IMPORTED_NOT_BEST, world.getBlockChain().tryToConnect(block1b));
org.junit.Assert.assertEquals(ImportResult.IMPORTED_BEST, world.getBlockChain().tryToConnect(block2b));
String block1HashString = "0x" + block1.getHash();
String block1bHashString = "0x" + block1b.getHash();
String block2bHashString = "0x" + block2b.getHash();
Web3.BlockResult bresult = web3.eth_getBlockByHash(block1HashString, false);
Assert.assertNotNull(bresult);
org.junit.Assert.assertEquals(block1HashString, bresult.hash);
org.junit.Assert.assertEquals("0x00", bresult.extraData);
org.junit.Assert.assertEquals(0, bresult.transactions.length);
org.junit.Assert.assertEquals(0, bresult.uncles.length);
bresult = web3.eth_getBlockByHash(block1bHashString, true);
Assert.assertNotNull(bresult);
org.junit.Assert.assertEquals(block1bHashString, bresult.hash);
bresult = web3.eth_getBlockByHash(block2bHashString, true);
Assert.assertNotNull(bresult);
org.junit.Assert.assertEquals(block2bHashString, bresult.hash);
}
use of co.rsk.test.World in project rskj by rsksmart.
the class Web3ImplTest method getCode.
@Test
public void getCode() throws Exception {
World world = new World();
Web3Impl web3 = createWeb3(world);
web3.repository = world.getRepository();
Account acc1 = new AccountBuilder(world).name("acc1").balance(Coin.valueOf(100000000)).build();
byte[] code = new byte[] { 0x01, 0x02, 0x03 };
world.getRepository().saveCode(acc1.getAddress(), code);
Block genesis = world.getBlockChain().getBestBlock();
genesis.setStateRoot(world.getRepository().getRoot());
genesis.flushRLP();
world.getBlockChain().getBlockStore().saveBlock(genesis, genesis.getCumulativeDifficulty(), true);
Block block1 = new BlockBuilder(world).parent(genesis).build();
org.junit.Assert.assertEquals(ImportResult.IMPORTED_BEST, world.getBlockChain().tryToConnect(block1));
String accountAddress = Hex.toHexString(acc1.getAddress().getBytes());
String scode = web3.eth_getCode(accountAddress, "0x1");
Assert.assertNotNull(scode);
org.junit.Assert.assertEquals("0x" + Hex.toHexString(code), scode);
}
use of co.rsk.test.World in project rskj by rsksmart.
the class Web3ImplTest method getUnknownTransactionReceipt.
@Test
public void getUnknownTransactionReceipt() throws Exception {
ReceiptStore receiptStore = new ReceiptStoreImpl(new HashMapDB());
World world = new World(receiptStore);
Web3Impl web3 = createWeb3(world, receiptStore);
Account acc1 = new AccountBuilder().name("acc1").build();
Account acc2 = new AccountBuilder().name("acc2").build();
Transaction tx = new TransactionBuilder().sender(acc1).receiver(acc2).value(BigInteger.valueOf(1000000)).build();
String hashString = tx.getHash().toHexString();
Assert.assertNull(web3.eth_getTransactionReceipt(hashString));
}
use of co.rsk.test.World in project rskj by rsksmart.
the class AccountBuilderTest method createAccountWithBalanceAndCode.
@Test
public void createAccountWithBalanceAndCode() {
World world = new World();
byte[] code = new byte[] { 0x01, 0x02, 0x03 };
Coin balance = Coin.valueOf(10);
Account account = new AccountBuilder(world).name("acc1").balance(balance).code(code).build();
Assert.assertNotNull(account);
Assert.assertTrue(account.getEcKey().hasPrivKey());
Assert.assertEquals(balance, world.getRepository().getBalance(account.getAddress()));
Assert.assertArrayEquals(code, world.getRepository().getCode(account.getAddress()));
}
Aggregations