package com.mygeopay.stratumj;
import com.mygeopay.stratumj.messages.BaseMessage;
import com.mygeopay.stratumj.messages.CallMessage;
import com.mygeopay.stratumj.messages.ResultMessage;
import org.json.JSONException;
import org.junit.Assert;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* @author John L. Jegutanis
*/
public class MessagesTest {
@Test
public void testBaseMessage() {
BaseMessage base = new BaseMessage(999);
Assert.assertEquals(base.getId(), 999);
Assert.assertEquals(base.getError(), "");
Assert.assertEquals(base.getFailedRequest(), "");
}
@Test
public void testBaseMessage2() {
BaseMessage base = new BaseMessage();
Assert.assertEquals(base.getId(), -1);
Assert.assertEquals(base.toString(), "{\"id\":null}\n");
}
@Test
public void testBaseMessageParse() throws JSONException {
String message = "{\"id\": 999, \"method\": \"blockchain.headers.subscribe\", \"params\": []}";
BaseMessage base = BaseMessage.fromJson(message);
Assert.assertEquals(base.getId(), 999);
}
@Test
public void testBaseMessageParseFailed() throws JSONException {
String message = "{\"request\": \"Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\", " +
"\"error\": \"bad JSON\"}";
BaseMessage base = BaseMessage.fromJson(message);
Assert.assertTrue(base.errorOccured());
Assert.assertEquals(base.getError(), "bad JSON");
Assert.assertEquals(base.getFailedRequest(), "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.");
}
@Test
public void testCallMessageParse() throws JSONException {
String message = "{\"id\": 0, \"method\": \"blockchain.headers.subscribe\", \"params\": []}";
CallMessage call = CallMessage.fromJson(message);
Assert.assertEquals(call.getMethod(), "blockchain.headers.subscribe");
}
@Test
public void testCallMessageSubscribe() {
CallMessage call = new CallMessage("blockchain.headers.subscribe", new ArrayList());
Assert.assertEquals(call.getMethod(), "blockchain.headers.subscribe");
Assert.assertEquals("{\"id\":null,\"method\":\"blockchain.headers.subscribe\",\"params\":[]}\n",
call.toString());
}
@Test
public void testCallMessage() {
CallMessage call = new CallMessage(1L, "blockchain.address.listunspent",
Arrays.asList("npF3ApeWwMS8kwXJyybPZ76vNbv5txVjDf"));
Assert.assertEquals(call.getId(), 1L);
Assert.assertEquals(call.getMethod(), "blockchain.address.listunspent");
Assert.assertEquals("{\"id\":1,\"method\":\"blockchain.address.listunspent\"," +
"\"params\":[\"npF3ApeWwMS8kwXJyybPZ76vNbv5txVjDf\"]}\n", call.toString());
}
@Test
public void testCallMessage2() {
CallMessage call = new CallMessage(1L, "blockchain.address.listunspent", "npF3ApeWwMS8kwXJyybPZ76vNbv5txVjDf");
Assert.assertEquals(call.getMethod(), "blockchain.address.listunspent");
Assert.assertEquals("{\"id\":1,\"method\":\"blockchain.address.listunspent\"," +
"\"params\":[\"npF3ApeWwMS8kwXJyybPZ76vNbv5txVjDf\"]}\n", call.toString());
}
@Test
public void testCallMessage3() {
CallMessage call = new CallMessage("blockchain.address.listunspent", (List) null);
call.setParam("npF3ApeWwMS8kwXJyybPZ76vNbv5txVjDf");
Assert.assertEquals("{\"id\":null,\"method\":\"blockchain.address.listunspent\"," +
"\"params\":[\"npF3ApeWwMS8kwXJyybPZ76vNbv5txVjDf\"]}\n", call.toString());
}
@Test
public void testResultMessage() throws JSONException {
String resultString = "{\"id\": 1, \"result\": [{" +
"\"tx_hash\": \"3aa2a5a9825ca767e092bcc19487aa13969eeb217fd0fba8492543bbb8c30954\", " +
"\"height\": 260144}]}";
ResultMessage result = ResultMessage.fromJson(resultString);
Assert.assertEquals(result.getId(), 1L);
Assert.assertTrue(result.getResult().length() > 0);
Assert.assertEquals(result.getResult().getJSONObject(0).getString("tx_hash"),
"3aa2a5a9825ca767e092bcc19487aa13969eeb217fd0fba8492543bbb8c30954");
Assert.assertEquals(result.getResult().getJSONObject(0).getInt("height"), 260144);
}
}