use of com.tvd12.ezyfox.entity.EzyArray in project ezyfox-server by youngmonkeys.
the class EzyWsResponseApiTest method responseTest.
@Test
public void responseTest() throws Exception {
// given
EzyObjectToStringEncoder encoder = mock(EzyObjectToStringEncoder.class);
EzyWsResponseApi sut = new EzyWsResponseApi(encoder);
EzyArray data = EzyEntityFactory.EMPTY_ARRAY;
EzySimplePackage pack = new EzySimplePackage();
pack.setData(data);
pack.setEncrypted(true);
pack.setTransportType(EzyTransportType.TCP);
int sessionCount = RandomUtil.randomSmallInt() + 1;
List<EzySession> sessions = RandomUtil.randomList(sessionCount, () -> {
EzySession session = mock(EzySession.class);
when(session.getConnectionType()).thenReturn(EzyConnectionType.WEBSOCKET);
return session;
});
pack.addRecipients(sessions);
// when
sut.response(pack);
// then
verify(encoder, times(1)).encode(data, String.class);
verify(encoder, times(0)).toMessageContent(data);
verify(encoder, times(0)).encryptMessageContent(any(byte[].class), any(byte[].class));
}
use of com.tvd12.ezyfox.entity.EzyArray in project ezyfox-server by youngmonkeys.
the class EzySocketResponseApiTest method secureResponseImmediateTest.
@Test
public void secureResponseImmediateTest() throws Exception {
// given
EzyArray data = EzyEntityFactory.EMPTY_ARRAY;
byte[] bytes = RandomUtil.randomShortByteArray();
EzyObjectToByteEncoder encoder = mock(EzyObjectToByteEncoder.class);
when(encoder.toMessageContent(data)).thenReturn(bytes);
EzySocketResponseApi sut = new EzySocketResponseApi(encoder);
EzySimplePackage pack = new EzySimplePackage();
pack.setData(data);
pack.setEncrypted(true);
pack.setTransportType(EzyTransportType.TCP);
int sessionCount = RandomUtil.randomSmallInt() + 1;
List<EzySession> sessions = RandomUtil.randomList(sessionCount, () -> {
EzySession session = mock(EzySession.class);
when(session.getConnectionType()).thenReturn(EzyConnectionType.SOCKET);
return session;
});
pack.addRecipients(sessions);
// when
sut.response(pack, true);
// then
verify(encoder, times(1)).toMessageContent(data);
verify(encoder, times(sessionCount)).encryptMessageContent(any(byte[].class), any(byte[].class));
}
use of com.tvd12.ezyfox.entity.EzyArray in project ezyfox-server by youngmonkeys.
the class EzySocketResponseApiTest method normalResponseTest.
@Test
public void normalResponseTest() throws Exception {
// given
EzyArray data = EzyEntityFactory.EMPTY_ARRAY;
EzyObjectToByteEncoder encoder = mock(EzyObjectToByteEncoder.class);
byte[] bytes = RandomUtil.randomShortByteArray();
when(encoder.encode(data)).thenReturn(bytes);
EzySocketResponseApi sut = new EzySocketResponseApi(encoder);
EzySimplePackage pack = new EzySimplePackage();
pack.setData(data);
pack.setEncrypted(false);
pack.setTransportType(EzyTransportType.TCP);
int sessionCount = RandomUtil.randomSmallInt() + 1;
List<EzySession> sessions = RandomUtil.randomList(sessionCount, () -> {
EzySession session = mock(EzySession.class);
when(session.getConnectionType()).thenReturn(EzyConnectionType.SOCKET);
return session;
});
pack.addRecipients(sessions);
// when
sut.response(pack);
// then
verify(encoder, times(1)).encode(data);
verify(encoder, times(0)).toMessageContent(data);
verify(encoder, times(0)).encryptMessageContent(any(byte[].class), any(byte[].class));
}
use of com.tvd12.ezyfox.entity.EzyArray in project ezyfox-server by youngmonkeys.
the class EzySimpleDataHandler method handleRequest.
@SuppressWarnings({ "rawtypes", "unchecked" })
protected void handleRequest(EzyConstant cmd, EzyArray data) {
try {
EzyRequest request = newRequest(cmd, data);
try {
EzyInterceptor interceptor = controllers.getInterceptor(cmd);
interceptor.intercept(context, request);
EzyController controller = controllers.getController(cmd);
controller.handle(context, request);
} finally {
request.release();
}
} catch (Exception e) {
if (context != null) {
Throwable throwable = requestHandleException(session, cmd, data, e);
context.handleException(Thread.currentThread(), throwable);
} else {
if (active) {
logger.warn("fatal error, please add an issue to ezyfox-server github " + "with log: {}\nand stacktrace: ", this, e);
} else {
logger.warn("can't handle command: {} and data: {}, this session " + "maybe destroyed (session: {}), error message: {}", cmd, data, session, e.getMessage());
}
}
}
}
use of com.tvd12.ezyfox.entity.EzyArray in project ezyfox-server by youngmonkeys.
the class EzySendResponseImpl method newPackage.
protected EzySimplePackage newPackage(EzyArray data, boolean encrypted, EzyTransportType transportType) {
EzySimplePackage pack = new EzySimplePackage();
pack.setData(data);
pack.setEncrypted(encrypted);
pack.setTransportType(transportType);
return pack;
}
Aggregations