From e3bea1ce5bcad18ab5078f57bdd3af4ee18dc3f6 Mon Sep 17 00:00:00 2001 From: Victor Date: Fri, 6 Oct 2017 17:24:33 -0500 Subject: [PATCH] Check if given keys are null or empty Check if given keys are null or empty, if it is the case a BitsoApiException will be thrown. Signed-off-by: Victor --- src/main/java/com/bitso/Bitso.java | 34 ++++++++++++------- .../bitso/exceptions/BitsoAPIException.java | 1 + src/test/java/com/bitso/BitsoMockTest.java | 17 ++++++++++ src/test/java/com/bitso/BitsoServerTest.java | 10 ++++++ src/test/java/com/bitso/BitsoTest.java | 2 +- 5 files changed, 51 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/bitso/Bitso.java b/src/main/java/com/bitso/Bitso.java index ad2bc2c..6f16803 100644 --- a/src/main/java/com/bitso/Bitso.java +++ b/src/main/java/com/bitso/Bitso.java @@ -576,27 +576,36 @@ private String quoteEliminator(String input) { return input.substring(1, length - 1); } - private String buildBitsoAuthHeader(String requestPath, String httpMethod, String apiKey, String secret) { - long nonce = System.currentTimeMillis() + System.currentTimeMillis(); + private String buildBitsoAuthHeader(String requestPath, String httpMethod, String apiKey, String secret) + throws BitsoAPIException { + if (apiKey == null || secret == null) { + throw new BitsoAPIException("Bitso API key or secret is null"); + } + byte[] secretBytes = secret.getBytes(); - byte[] arrayOfByte = null; - String signature = null; - BigInteger bigInteger = null; - Mac mac = null; + if (secretBytes.length == 0) { + throw new BitsoAPIException("Bitso API key is empty"); + } + long nonce = System.currentTimeMillis() + System.currentTimeMillis(); String message = nonce + httpMethod + requestPath; - SecretKeySpec secretKeySpec = new SecretKeySpec(secretBytes, "HmacSHA256"); + try { - mac = Mac.getInstance("HmacSHA256"); + SecretKeySpec secretKeySpec = new SecretKeySpec(secretBytes, "HmacSHA256"); + Mac mac = Mac.getInstance("HmacSHA256"); mac.init(secretKeySpec); - arrayOfByte = mac.doFinal(message.getBytes()); - bigInteger = new BigInteger(1, arrayOfByte); - signature = String.format("%0" + (arrayOfByte.length << 1) + "x", new Object[] { bigInteger }); + byte[] arrayOfByte = mac.doFinal(message.getBytes()); + BigInteger bigInteger = new BigInteger(1, arrayOfByte); + String signature = String.format("%0" + (arrayOfByte.length << 1) + "x", + new Object[] { bigInteger }); return String.format("Bitso %s:%s:%s", apiKey, nonce, signature); } catch (NoSuchAlgorithmException | InvalidKeyException e) { e.printStackTrace(); + throw new BitsoAPIException(e); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + throw new BitsoAPIException(e); } - return null; } private static Entry buildBitsoAuthHeader(String secretKey, String publicKey, long nonce, @@ -609,6 +618,7 @@ private static Entry buildBitsoAuthHeader(String secretKey, Stri try { Mac mac = Mac.getInstance("HmacSHA256"); mac.init(localMac); + // Compute the hmac on input data bytes byte[] arrayOfByte = mac.doFinal(message.getBytes()); BigInteger localBigInteger = new BigInteger(1, arrayOfByte); diff --git a/src/main/java/com/bitso/exceptions/BitsoAPIException.java b/src/main/java/com/bitso/exceptions/BitsoAPIException.java index 32d536b..314f9d8 100644 --- a/src/main/java/com/bitso/exceptions/BitsoAPIException.java +++ b/src/main/java/com/bitso/exceptions/BitsoAPIException.java @@ -22,6 +22,7 @@ public BitsoAPIException(String message, Throwable cause) { public BitsoAPIException(String message) { super(message); + this.mErrorCode = 101; } public BitsoAPIException(int errorCode, String message, Throwable initialException) { diff --git a/src/test/java/com/bitso/BitsoMockTest.java b/src/test/java/com/bitso/BitsoMockTest.java index 5fa5939..561b57f 100644 --- a/src/test/java/com/bitso/BitsoMockTest.java +++ b/src/test/java/com/bitso/BitsoMockTest.java @@ -10,6 +10,7 @@ import org.json.JSONException; import org.json.JSONObject; import org.junit.Before; +import org.junit.Test; import org.mockito.Mockito; import com.bitso.exceptions.BitsoAPIException; @@ -384,6 +385,22 @@ public void testUserTrades() } } + @Test + public void testOrderTrades() throws JSONException, BitsoNullException, IOException, BitsoAPIException, + BitsoPayloadException, InterruptedException { + int totalElements = 0; + + // TODO: + // This should return a collection of 25 elements, not working limit default value + BitsoTrade[] trades = mBitso.getUserTrades(null); + assertEquals(trades != null, true); + totalElements = trades.length; + assertEquals((totalElements >= 0 && totalElements <= 25), true); + for (BitsoTrade current : trades) { + assertEquals(true, nullCheck(current, BitsoTrade.class)); + } + } + @Override public void testTrading() { System.out.println("This test is overriden"); diff --git a/src/test/java/com/bitso/BitsoServerTest.java b/src/test/java/com/bitso/BitsoServerTest.java index e20850d..36e8cc8 100644 --- a/src/test/java/com/bitso/BitsoServerTest.java +++ b/src/test/java/com/bitso/BitsoServerTest.java @@ -26,4 +26,14 @@ public void tearDown() { e.printStackTrace(); } } + + @Override + public void testTrading() { + System.out.println("This test is overriden in BitsoServerTest"); + } + + @Override + public void testOrderTrades() { + System.out.println("This test is overriden in BitsoServerTest"); + } } diff --git a/src/test/java/com/bitso/BitsoTest.java b/src/test/java/com/bitso/BitsoTest.java index 4411875..3904cda 100644 --- a/src/test/java/com/bitso/BitsoTest.java +++ b/src/test/java/com/bitso/BitsoTest.java @@ -605,7 +605,7 @@ public void testUserTrades() throws JSONException, BitsoNullException, IOExcepti assertEquals((excedingLimit != null || excedingLimit == null), true); } - // @Test + @Test public void testOrderTrades() throws JSONException, BitsoNullException, IOException, BitsoAPIException, BitsoPayloadException, InterruptedException { int totalElements = 0;