package io.emax.cosigner.bitcoin; import io.emax.cosigner.api.currency.Wallet.Recipient; import io.emax.cosigner.bitcoin.bitcoindrpc.RawTransaction; import io.emax.cosigner.bitcoin.stubrpc.BitcoinTestRpc; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.math.BigDecimal; import java.util.Collections; public class WalletTest { private static final Logger LOGGER = LoggerFactory.getLogger(WalletTest.class); private BitcoinWallet wallet; private String userKey; @Before public void setUp() { BitcoinResource.getResource().setBitcoindRpc(new BitcoinTestRpc()); wallet = new BitcoinWallet(new BitcoinConfiguration()); userKey = "deadbeef"; } @Test public void testWallet() { System.out.println(""); System.out.println("Simple wallet test. Should be no exceptions"); try { String firstAddress = wallet.createAddress(userKey); System.out.println("First Address: " + firstAddress); String secondAddress = wallet.createAddress(userKey + userKey); System.out.println("Second Address: " + secondAddress); Recipient recipient = new Recipient(); recipient.setAmount(BigDecimal.valueOf(20)); recipient.setRecipientAddress(secondAddress); String txString = wallet.createTransaction(Collections.singletonList(firstAddress), Collections.singletonList(recipient)); System.out.println("20 BTC from " + firstAddress + " to " + secondAddress + ": " + txString); System.out.println(RawTransaction.parse(txString)); txString = wallet.signTransaction(txString, firstAddress, userKey); System.out.println("Signed TX: " + txString); System.out.println(RawTransaction.parse(txString)); txString = wallet.sendTransaction(txString); System.out.println("TX ID: " + txString); } catch (Exception e) { LOGGER.error(null, e); Assert.fail("Simple wallet test failed!"); } } @Test public void testBalance() { System.out.println(""); System.out.println("Balance test"); try { String singleAddress = wallet.createAddress(userKey); System.out.println("Single Address: " + singleAddress); String multiSigAddress = wallet.getMultiSigAddress(Collections.singletonList(singleAddress), userKey); System.out.println("Multi-sig Address: " + multiSigAddress); String balance = wallet.getBalance(singleAddress); System.out.println("Balance for " + singleAddress + ": " + balance); balance = wallet.getBalance(multiSigAddress); System.out.println("Balance for " + multiSigAddress + ": " + balance); } catch (Exception e) { LOGGER.error(null, e); Assert.fail("Balance test failed"); } } }