@Test public void testStaticGasProvider() throws IOException, TransactionException { StaticGasProvider gasProvider = new StaticGasProvider(BigInteger.TEN, BigInteger.ONE); TransactionManager txManager = mock(TransactionManager.class); when(txManager.executeTransaction(any(), any(), any(), any(), any())) .thenReturn(new TransactionReceipt()); contract = new TestContract(ADDRESS, web3j, txManager, gasProvider); Function func = new Function("test", Arrays.<Type>asList(), Collections.<TypeReference<?>>emptyList()); contract.executeTransaction(func); verify(txManager).executeTransaction(eq(BigInteger.TEN), eq(BigInteger.ONE), any(), any(), any()); }
@Test public void testTransactionReceiptIsStatusOK() { TransactionReceipt transactionReceipt = new TransactionReceipt(); transactionReceipt.setStatus("0x1"); assertThat(transactionReceipt.isStatusOK(), equalTo(true)); TransactionReceipt transactionReceiptNoStatus = new TransactionReceipt(); assertThat(transactionReceiptNoStatus.isStatusOK(), equalTo(true)); TransactionReceipt transactionReceiptZeroStatus = new TransactionReceipt(); transactionReceiptZeroStatus.setStatus("0x0"); assertThat(transactionReceiptZeroStatus.isStatusOK(), equalTo(false)); }
@SuppressWarnings("unchecked") protected TransactionReceipt prepareTransfer() throws IOException { TransactionReceipt transactionReceipt = new TransactionReceipt(); transactionReceipt.setTransactionHash(TRANSACTION_HASH); transactionReceipt.setStatus("0x1"); prepareTransaction(transactionReceipt); EthGasPrice ethGasPrice = new EthGasPrice(); ethGasPrice.setResult("0x1"); Request<?, EthGasPrice> gasPriceRequest = mock(Request.class); when(gasPriceRequest.send()).thenReturn(ethGasPrice); when(web3j.ethGasPrice()).thenReturn((Request) gasPriceRequest); return transactionReceipt; } }
@Test public void testProcessEventForLogWithoutTopics() { TransactionReceipt transactionReceipt = new TransactionReceipt(); final Log log = new Log(); log.setTopics(Collections.emptyList()); // non-indexed value log.setData("0000000000000000000000000000000000000000000000000000000000000001"); transactionReceipt.setLogs(Arrays.asList(log)); final List<EventValues> eventValues = contract.processEvent(transactionReceipt); assertTrue("No events expected", eventValues.isEmpty()); }
@Test public void returnsTransactionReceiptWhenItIsAvailableInstantly() throws Exception { TransactionReceipt transactionReceipt = new TransactionReceipt(); doReturn(requestReturning(response(transactionReceipt))) .when(web3j).ethGetTransactionReceipt(TRANSACTION_HASH); TransactionReceipt receipt = processor.waitForTransactionReceipt(TRANSACTION_HASH); assertThat(receipt, sameInstance(transactionReceipt)); }
@Test public void testExtractEventParametersWithLogGivenATransactionReceipt() { final java.util.function.Function<String, Event> eventFactory = name -> new Event(name, emptyList()); final BiFunction<Integer, Event, Log> logFactory = (logIndex, event) -> new Log(false, "" + logIndex, "0", "0x0", "0x0", "0", "0x" + logIndex, "", "", singletonList(EventEncoder.encode(event))); final Event testEvent1 = eventFactory.apply("TestEvent1"); final Event testEvent2 = eventFactory.apply("TestEvent2"); final List<Log> logs = Arrays.asList( logFactory.apply(0, testEvent1), logFactory.apply(1, testEvent2) ); final TransactionReceipt transactionReceipt = new TransactionReceipt(); transactionReceipt.setLogs(logs); final List<Contract.EventValuesWithLog> eventValuesWithLogs1 = contract.extractEventParametersWithLog(testEvent1, transactionReceipt); assertEquals(eventValuesWithLogs1.size(), 1); assertEquals(eventValuesWithLogs1.get(0).getLog(), logs.get(0)); final List<Contract.EventValuesWithLog> eventValuesWithLogs2 = contract.extractEventParametersWithLog(testEvent2, transactionReceipt); assertEquals(eventValuesWithLogs2.size(), 1); assertEquals(eventValuesWithLogs2.get(0).getLog(), logs.get(1)); }
private TransactionReceipt createTransactionReceiptWithStatus(String status) { TransactionReceipt transactionReceipt = new TransactionReceipt(); transactionReceipt.setTransactionHash(TRANSACTION_HASH); transactionReceipt.setContractAddress(ADDRESS); transactionReceipt.setStatus(status); transactionReceipt.setGasUsed("0x1"); return transactionReceipt; }
@Test public void testProcessEvent() { TransactionReceipt transactionReceipt = new TransactionReceipt(); Log log = new Log(); log.setTopics(Arrays.asList( // encoded function "0xfceb437c298f40d64702ac26411b2316e79f3c28ffa60edfc891ad4fc8ab82ca", // indexed value "0000000000000000000000003d6cb163f7c72d20b0fcd6baae5889329d138a4a")); // non-indexed value log.setData("0000000000000000000000000000000000000000000000000000000000000001"); transactionReceipt.setLogs(Arrays.asList(log)); EventValues eventValues = contract.processEvent(transactionReceipt).get(0); assertThat(eventValues.getIndexedValues(), equalTo(singletonList( new Address("0x3d6cb163f7c72d20b0fcd6baae5889329d138a4a")))); assertThat(eventValues.getNonIndexedValues(), equalTo(singletonList(new Uint256(BigInteger.ONE)))); }
@Test(expected = RuntimeException.class) public void testDeployInvalidContractAddress() throws Throwable { TransactionReceipt transactionReceipt = new TransactionReceipt(); transactionReceipt.setTransactionHash(TRANSACTION_HASH); prepareTransaction(transactionReceipt); String encodedConstructor = FunctionEncoder.encodeConstructor( Arrays.<Type>asList(new Uint256(BigInteger.TEN))); try { TestContract.deployRemoteCall( TestContract.class, web3j, SampleKeys.CREDENTIALS, ManagedTransaction.GAS_PRICE, Contract.GAS_LIMIT, "0xcafed00d", encodedConstructor, BigInteger.ZERO).send(); } catch (InterruptedException e) { throw e; } catch (ExecutionException e) { throw e.getCause(); } }
@Test public void testTransaction() throws Exception { TransactionReceipt transactionReceipt = new TransactionReceipt(); transactionReceipt.setTransactionHash(TRANSACTION_HASH); transactionReceipt.setStatus("0x1"); prepareTransaction(transactionReceipt); assertThat(contract.performTransaction( new Address(BigInteger.TEN), new Uint256(BigInteger.ONE)).send(), is(transactionReceipt)); }
@Test public void testTransactionFailed() throws Exception { thrown.expect(TransactionException.class); thrown.expectMessage( "Transaction has failed with status: 0x0. Gas used: 1. (not-enough gas?)"); TransactionReceipt transactionReceipt = new TransactionReceipt(); transactionReceipt.setTransactionHash(TRANSACTION_HASH); transactionReceipt.setStatus("0x0"); transactionReceipt.setGasUsed("0x1"); prepareTransaction(transactionReceipt); contract.performTransaction( new Address(BigInteger.TEN), new Uint256(BigInteger.ONE)).send(); }