package com.workshare.msnos.core;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.util.UUID;
import org.junit.Test;
import com.workshare.msnos.core.payloads.PongPayload;
import com.workshare.msnos.core.payloads.TracePayload;
public class MessageTest {
private static final Iden CLOUD_IDEN = new Iden(Iden.Type.CLD, UUID.randomUUID());
private static final Iden AGENT_IDEN = new Iden(Iden.Type.AGT, UUID.randomUUID());
private static final UUID MSG_UUID = UUID.randomUUID();
@Test(expected = IllegalArgumentException.class)
public void shouldNotBeAbleToCreateAReliableMessageToTheCloud() {
new MessageBuilder(Message.Type.APP, AGENT_IDEN, CLOUD_IDEN).withHops(1).reliable(true).make();
}
@Test
public void shouldGenerateRndWhenSigned() {
Message msg = new MessageBuilder(Message.Type.APP, CLOUD_IDEN, AGENT_IDEN).reliable(true).with(MSG_UUID).signed("12345", null).make();
assertNotNull(msg.getRnd());
}
@Test
public void shouldUsePassedRndWhenSigned() {
Message msg = new MessageBuilder(Message.Type.APP, CLOUD_IDEN, AGENT_IDEN).reliable(true).with(MSG_UUID).signed("12345", "ABC").make();
assertEquals("ABC", msg.getRnd());
}
@Test
public void shouldGenerateUUIDIfUUIDEmpty() throws Exception {
Message msg = new MessageBuilder(Message.Type.APP, AGENT_IDEN, CLOUD_IDEN).make();
assertNotNull(msg.getUuid());
}
@Test
public void shouldProvidePongPayloadOnPong() {
Message msg = new MessageBuilder(Message.Type.PON, CLOUD_IDEN, AGENT_IDEN).make();
assertNotNull(msg.getData());
assertEquals(PongPayload.class, msg.getData().getClass());
}
@Test
public void shouldProvideTracePayloadOnTrace() {
Message msg = new MessageBuilder(Message.Type.TRC, CLOUD_IDEN, AGENT_IDEN).make();
assertNotNull(msg.getData());
assertEquals(TracePayload.class, msg.getData().getClass());
}
}