diff --git a/src/main/java/com/corundumstudio/socketio/parser/Encoder.java b/src/main/java/com/corundumstudio/socketio/parser/Encoder.java index 58189ac..8788b53 100644 --- a/src/main/java/com/corundumstudio/socketio/parser/Encoder.java +++ b/src/main/java/com/corundumstudio/socketio/parser/Encoder.java @@ -41,7 +41,7 @@ public class Encoder { int type = packet.getType().getValue(); String id = packet.getId(); String endpoint = packet.getEndpoint(); - String ack = packet.getAck(); + Object ack = packet.getAck(); Object data = packet.getData(); switch(packet.getType()) { @@ -83,16 +83,16 @@ public class Encoder { adviceCode = packet.getAdvice().getValue(); } - StringBuilder errorData = new StringBuilder(); if (reasonCode != -1 || adviceCode != -1) { + StringBuilder errorData = new StringBuilder(); if (reasonCode != -1) { errorData.append(reasonCode); } if (adviceCode != -1) { errorData.append("+").append(adviceCode); } + data = errorData; } - data = errorData; break; } diff --git a/src/test/java/com/corundumstudio/socketio/parser/EncoderErrorPacketTest.java b/src/test/java/com/corundumstudio/socketio/parser/EncoderErrorPacketTest.java new file mode 100644 index 0000000..92d51c9 --- /dev/null +++ b/src/test/java/com/corundumstudio/socketio/parser/EncoderErrorPacketTest.java @@ -0,0 +1,44 @@ +package com.corundumstudio.socketio.parser; + +import java.io.IOException; + +import org.codehaus.jackson.map.ObjectMapper; +import org.junit.Assert; +import org.junit.Test; + +public class EncoderErrorPacketTest { + + private Encoder encoder = new Encoder(new ObjectMapper()); + + @Test + public void testEncode() throws IOException { + Packet packet = new Packet(PacketType.ERROR); + String result = encoder.encodePacket(packet); + Assert.assertEquals("7::", result); + } + + @Test + public void testEncodeWithReason() throws IOException { + Packet packet = new Packet(PacketType.ERROR); + packet.setReason(ErrorReason.TRANSPORT_NOT_SUPPORTED); + String result = encoder.encodePacket(packet); + Assert.assertEquals("7:::0", result); + } + + @Test + public void testEncodeWithReasonAndAdvice() throws IOException { + Packet packet = new Packet(PacketType.ERROR); + packet.setReason(ErrorReason.UNAUTHORIZED); + packet.setAdvice(ErrorAdvice.RECONNECT); + String result = encoder.encodePacket(packet); + Assert.assertEquals("7:::2+0", result); + } + + @Test + public void testEncodeWithEndpoint() throws IOException { + Packet packet = new Packet(PacketType.ERROR); + packet.setEndpoint("/woot"); + String result = encoder.encodePacket(packet); + Assert.assertEquals("7::/woot", result); + } +}