110 lines
4.6 KiB
Java
110 lines
4.6 KiB
Java
package jmri.server.json.message;
|
|
|
|
import java.io.DataOutputStream;
|
|
import java.util.Locale;
|
|
|
|
import jmri.server.json.JSON;
|
|
import jmri.server.json.JsonMockConnection;
|
|
import jmri.util.JUnitUtil;
|
|
|
|
import org.junit.jupiter.api.*;
|
|
|
|
import com.fasterxml.jackson.databind.JsonNode;
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
|
|
|
/**
|
|
*
|
|
* @author Randall Wood (C) 2017
|
|
*/
|
|
public class JsonMessageClientManagerTest {
|
|
|
|
private final Locale locale = Locale.ENGLISH;
|
|
|
|
@BeforeEach
|
|
public void setUp() {
|
|
JUnitUtil.setUp();
|
|
JUnitUtil.resetProfileManager();
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() {
|
|
JUnitUtil.tearDown();
|
|
}
|
|
|
|
@Test
|
|
public void testSubscribe() {
|
|
JsonMockConnection connection1 = new JsonMockConnection((DataOutputStream) null);
|
|
JsonMockConnection connection2 = new JsonMockConnection((DataOutputStream) null);
|
|
JsonNode message1;
|
|
JsonNode message2;
|
|
JsonMessageClientManager instance = new JsonMessageClientManager();
|
|
instance.subscribe("1", connection1);
|
|
IllegalArgumentException ex = assertThrows( IllegalArgumentException.class, () ->
|
|
instance.subscribe("1", connection2));
|
|
assertNotNull(ex);
|
|
instance.subscribe("2", connection2);
|
|
instance.send(new JsonMessage("testSubscribe1", locale));
|
|
message1 = connection1.getMessage();
|
|
message2 = connection2.getMessage();
|
|
assertNotNull( message1, "message1 is not null");
|
|
assertNotNull( message2, "message2 is not null");
|
|
assertEquals("testSubscribe1", message1.path(JSON.DATA).path(JsonMessage.MESSAGE).asText());
|
|
assertEquals("testSubscribe1", message2.path(JSON.DATA).path(JsonMessage.MESSAGE).asText());
|
|
}
|
|
|
|
@Test
|
|
public void testUnsubscribe() {
|
|
JsonMockConnection connection1 = new JsonMockConnection((DataOutputStream) null);
|
|
JsonMockConnection connection2 = new JsonMockConnection((DataOutputStream) null);
|
|
JsonNode message1;
|
|
JsonNode message2;
|
|
JsonMessageClientManager instance = new JsonMessageClientManager();
|
|
instance.subscribe("1", connection1);
|
|
instance.subscribe("2", connection2);
|
|
instance.send(new JsonMessage("testUnsubscribe1", locale));
|
|
message1 = connection1.getMessage();
|
|
message2 = connection2.getMessage();
|
|
assertNotNull( message1, "message1 is not null");
|
|
assertNotNull( message2, "message2 is not null");
|
|
assertEquals("testUnsubscribe1", message1.path(JSON.DATA).path(JsonMessage.MESSAGE).asText());
|
|
assertEquals("testUnsubscribe1", message2.path(JSON.DATA).path(JsonMessage.MESSAGE).asText());
|
|
instance.unsubscribe("2");
|
|
instance.send(new JsonMessage("testUnsubscribe2", locale));
|
|
message1 = connection1.getMessage();
|
|
message2 = connection2.getMessage();
|
|
assertNotNull( message1, "message1 is not null");
|
|
assertNotNull( message2, "message2 is not null");
|
|
assertEquals("testUnsubscribe2", message1.path(JSON.DATA).path(JsonMessage.MESSAGE).asText());
|
|
assertEquals("testUnsubscribe1", message2.path(JSON.DATA).path(JsonMessage.MESSAGE).asText());
|
|
}
|
|
|
|
@Test
|
|
public void testSend() {
|
|
JsonMockConnection connection1 = new JsonMockConnection((DataOutputStream) null);
|
|
JsonMockConnection connection2 = new JsonMockConnection((DataOutputStream) null);
|
|
JsonNode message1;
|
|
JsonNode message2;
|
|
JsonMessageClientManager instance = new JsonMessageClientManager();
|
|
instance.subscribe("1", connection1);
|
|
instance.subscribe("2", connection2);
|
|
instance.send(new JsonMessage("testSend1", locale));
|
|
message1 = connection1.getMessage();
|
|
message2 = connection2.getMessage();
|
|
assertNotNull( message1, "message1 is not null");
|
|
assertNotNull( message2, "message2 is not null");
|
|
assertEquals("testSend1", message1.path(JSON.DATA).path(JsonMessage.MESSAGE).asText());
|
|
assertEquals("testSend1", message2.path(JSON.DATA).path(JsonMessage.MESSAGE).asText());
|
|
instance.send(new JsonMessage(JsonMessage.TYPE.INFO, "testSend2", "1", locale));
|
|
message1 = connection1.getMessage();
|
|
message2 = connection2.getMessage();
|
|
assertNotNull( message1, "message1 is not null");
|
|
assertNotNull( message2, "message2 is not null");
|
|
assertEquals("testSend2", message1.path(JSON.DATA).path(JsonMessage.MESSAGE).asText());
|
|
assertEquals("testSend1", message2.path(JSON.DATA).path(JsonMessage.MESSAGE).asText());
|
|
}
|
|
|
|
}
|