From c66ed9968176a6416528a413e745298c0fefcfcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vin=C3=ADcius?= Date: Tue, 25 Jul 2017 20:52:15 -0300 Subject: [PATCH] Add LookupAssetSymbols and TransactionBroadcastSequence API tests --- .../graphenej/api/LookupAssetSymbols.java | 2 +- .../api/android/NodeConnectionTest.java | 137 +++++++++++++++++- 2 files changed, 137 insertions(+), 2 deletions(-) diff --git a/graphenej/src/main/java/de/bitsharesmunich/graphenej/api/LookupAssetSymbols.java b/graphenej/src/main/java/de/bitsharesmunich/graphenej/api/LookupAssetSymbols.java index 288c0e9..2a649d0 100644 --- a/graphenej/src/main/java/de/bitsharesmunich/graphenej/api/LookupAssetSymbols.java +++ b/graphenej/src/main/java/de/bitsharesmunich/graphenej/api/LookupAssetSymbols.java @@ -22,7 +22,7 @@ import de.bitsharesmunich.graphenej.models.WitnessResponse; * * Get the assets corresponding to the provided IDs. * - * The request returns the assets corresponding to the provided symbols or IDs. + * The response returns the assets corresponding to the provided symbols or IDs. * * @see lookup_asset_symbols API doc */ diff --git a/graphenej/src/test/java/de/bitsharesmunich/graphenej/api/android/NodeConnectionTest.java b/graphenej/src/test/java/de/bitsharesmunich/graphenej/api/android/NodeConnectionTest.java index e69a786..9e241ec 100644 --- a/graphenej/src/test/java/de/bitsharesmunich/graphenej/api/android/NodeConnectionTest.java +++ b/graphenej/src/test/java/de/bitsharesmunich/graphenej/api/android/NodeConnectionTest.java @@ -1,16 +1,27 @@ package de.bitsharesmunich.graphenej.api.android; +import org.bitcoinj.core.ECKey; +import org.junit.Assert; import org.junit.Test; +import java.io.IOException; +import java.security.NoSuchAlgorithmException; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Timer; import java.util.TimerTask; import com.google.common.primitives.UnsignedLong; +import com.neovisionaries.ws.client.WebSocket; +import com.neovisionaries.ws.client.WebSocketException; +import com.neovisionaries.ws.client.WebSocketFactory; + +import javax.net.ssl.SSLContext; import de.bitsharesmunich.graphenej.Asset; +import de.bitsharesmunich.graphenej.BrainKey; import de.bitsharesmunich.graphenej.OperationType; +import de.bitsharesmunich.graphenej.Transaction; import de.bitsharesmunich.graphenej.api.GetAccounts; import de.bitsharesmunich.graphenej.api.GetAccountBalances; import de.bitsharesmunich.graphenej.api.GetAccountByName; @@ -25,6 +36,8 @@ import de.bitsharesmunich.graphenej.api.GetRequiredFees; import de.bitsharesmunich.graphenej.api.GetTradeHistory; import de.bitsharesmunich.graphenej.api.ListAssets; import de.bitsharesmunich.graphenej.api.LookupAccounts; +import de.bitsharesmunich.graphenej.api.LookupAssetSymbols; +import de.bitsharesmunich.graphenej.api.TransactionBroadcastSequence; import de.bitsharesmunich.graphenej.errors.RepeatedRequestIdException; import de.bitsharesmunich.graphenej.errors.MalformedAddressException; import de.bitsharesmunich.graphenej.interfaces.WitnessResponseListener; @@ -35,6 +48,8 @@ import de.bitsharesmunich.graphenej.UserAccount; import de.bitsharesmunich.graphenej.Address; import de.bitsharesmunich.graphenej.BaseOperation; import de.bitsharesmunich.graphenej.operations.TransferOperation; +import de.bitsharesmunich.graphenej.operations.TransferOperationBuilder; +import de.bitsharesmunich.graphenej.test.NaiveSSLContext; /** * Created by nelson on 6/26/17. @@ -44,6 +59,7 @@ public class NodeConnectionTest { private String NODE_URL_2 = System.getenv("NODE_URL_2"); private String NODE_URL_3 = System.getenv("NODE_URL_3"); private String NODE_URL_4 = System.getenv("NODE_URL_4"); + private String TEST_ACCOUNT_BRAIN_KEY = System.getenv("TEST_ACCOUNT_BRAIN_KEY"); private String ACCOUNT_ID_1 = System.getenv("ACCOUNT_ID_1"); private String ACCOUNT_ID_2 = System.getenv("ACCOUNT_ID_2"); private String ACCOUNT_NAME = System.getenv("ACCOUNT_NAME"); @@ -805,7 +821,6 @@ public class NodeConnectionTest { UserAccount userAccount = new UserAccount(ACCOUNT_ID_1); UserAccount userAccount_2 = new UserAccount(ACCOUNT_ID_2); - //Sequence number of earliest operation int maxAccounts = 10; System.out.println("Adding LookupAccounts request"); @@ -852,6 +867,126 @@ public class NodeConnectionTest { } } + /** + * Test for LookupAssetSymbols Handler. + * + * Request for the assets corresponding to the provided symbols or IDs. + */ + @Test + public void testLookupAssetSymbolsRequest(){ + nodeConnection = NodeConnection.getInstance(); + nodeConnection.addNodeUrl(NODE_URL_1); + nodeConnection.connect("", "", false, mErrorListener); + + + ArrayList assetList = new ArrayList(){{ + add(BLOCKPAY); + add(BTS); + add(BITEURO); + }}; + + System.out.println("Adding LookupAssetSymbols request"); + try{ + nodeConnection.addRequestHandler(new LookupAssetSymbols(assetList, true, new WitnessResponseListener(){ + @Override + public void onSuccess(WitnessResponse response) { + System.out.println("LookupAssetSymbols.onSuccess"); + } + + @Override + public void onError(BaseResponse.Error error) { + System.out.println("LookupAssetSymbols.onError. Msg: "+ error.message); + } + })); + }catch(RepeatedRequestIdException e){ + System.out.println("RepeatedRequestIdException. Msg: "+e.getMessage()); + } + + try{ + // Holding this thread while we get update notifications + synchronized (this){ + wait(); + } + }catch(InterruptedException e){ + System.out.println("InterruptedException. Msg: "+e.getMessage()); + } + } + + /** + * Test for TransactionBroadcastSequence Handler. + * + */ + @Test + public void testTransactionBroadcastSequenceRequest(){ + nodeConnection = NodeConnection.getInstance(); + nodeConnection.addNodeUrl(NODE_URL_1); + nodeConnection.connect("", "", false, mErrorListener); + + + ArrayList assetList = new ArrayList(){{ + add(BLOCKPAY); + add(BTS); + add(BITEURO); + }}; + + ECKey privateKey = new BrainKey(TEST_ACCOUNT_BRAIN_KEY, 0).getPrivateKey(); + + UserAccount userAccount = new UserAccount(ACCOUNT_ID_1); + UserAccount userAccount_2 = new UserAccount(ACCOUNT_ID_2); + + TransferOperation transferOperation1 = new TransferOperationBuilder() + .setTransferAmount(new AssetAmount(UnsignedLong.valueOf(1), BTS)) + .setSource(userAccount) + .setDestination(userAccount_2) + .setFee(new AssetAmount(UnsignedLong.valueOf(264174), BTS)) + .build(); + + + ArrayList operationList = new ArrayList<>(); + operationList.add(transferOperation1); + + try{ + Transaction transaction = new Transaction(privateKey, null, operationList); + + SSLContext context = null; + context = NaiveSSLContext.getInstance("TLS"); + WebSocketFactory factory = new WebSocketFactory(); + + // Set the custom SSL context. + factory.setSSLContext(context); + + WebSocket mWebSocket = factory.createSocket(NODE_URL_1); + + mWebSocket.addListener(new TransactionBroadcastSequence(transaction, BTS, new WitnessResponseListener(){ + @Override + public void onSuccess(WitnessResponse response) { + System.out.println("TransactionBroadcastSequence.onSuccess"); + } + + @Override + public void onError(BaseResponse.Error error) { + System.out.println("TransactionBroadcastSequence.onError. Msg: "+ error.message); + } + })); + mWebSocket.connect(); + + try{ + // Holding this thread while we get update notifications + synchronized (this){ + wait(); + } + }catch(InterruptedException e){ + System.out.println("InterruptedException. Msg: "+e.getMessage()); + } + + }catch(NoSuchAlgorithmException e){ + System.out.println("NoSuchAlgoritmException. Msg: " + e.getMessage()); + } catch (IOException e) { + System.out.println("IOException. Msg: " + e.getMessage()); + } catch (WebSocketException e) { + System.out.println("WebSocketException. Msg: " + e.getMessage()); + } + } private WitnessResponseListener mErrorListener = new WitnessResponseListener() {