Migrate codec-mqtt to junit5 (#11431)

Motivation:

We should update to use junit5 in all modules.

Modifications:

Adjust codec-mqtt tests to use junit5

Result:

Part of https://github.com/netty/netty/issues/10757
This commit is contained in:
Norman Maurer 2021-06-30 15:32:16 +02:00 committed by GitHub
parent 3716575102
commit 94a4880358
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 159 additions and 181 deletions

View File

@ -26,16 +26,16 @@ import io.netty.handler.codec.EncoderException;
import io.netty.util.Attribute;
import io.netty.util.CharsetUtil;
import io.netty.util.ReferenceCountUtil;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.function.Executable;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
@ -45,8 +45,21 @@ import static io.netty.handler.codec.mqtt.MqttTestUtils.validateUnsubscribePaylo
import static io.netty.handler.codec.mqtt.MqttProperties.MqttPropertyType.*;
import static io.netty.handler.codec.mqtt.MqttQoS.AT_LEAST_ONCE;
import static io.netty.handler.codec.mqtt.MqttSubscriptionOption.RetainedHandlingPolicy.SEND_AT_SUBSCRIBE_IF_NOT_YET_EXISTS;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import static org.hamcrest.CoreMatchers.not;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.clearInvocations;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.CoreMatchers.instanceOf;
/**
* Unit tests for MqttEncoder and MqttDecoder.
@ -83,7 +96,7 @@ public class MqttCodecTest {
*/
private final MqttDecoder mqttDecoderLimitedMessageSize = new MqttDecoder(1);
@Before
@BeforeEach
public void setup() {
MockitoAnnotations.initMocks(this);
when(ctx.channel()).thenReturn(channel);
@ -98,7 +111,7 @@ public class MqttCodecTest {
when(channel.attr(MqttCodecUtil.MQTT_VERSION_KEY)).thenReturn(versionAttrMock);
}
@After
@AfterEach
public void after() {
for (Object o : out) {
ReferenceCountUtil.release(o);
@ -113,7 +126,7 @@ public class MqttCodecTest {
mqttDecoder.channelRead(ctx, byteBuf);
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertEquals(1, out.size());
final MqttConnectMessage decodedMessage = (MqttConnectMessage) out.get(0);
@ -129,7 +142,7 @@ public class MqttCodecTest {
mqttDecoder.channelRead(ctx, byteBuf);
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertEquals(1, out.size());
final MqttConnectMessage decodedMessage = (MqttConnectMessage) out.get(0);
@ -147,12 +160,12 @@ public class MqttCodecTest {
byteBuf.setByte(9, byteBuf.getByte(9) | 0x1);
mqttDecoder.channelRead(ctx, byteBuf);
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertEquals(1, out.size());
final MqttMessage decodedMessage = (MqttMessage) out.get(0);
assertTrue(decodedMessage.decoderResult().isFailure());
Throwable cause = decodedMessage.decoderResult().cause();
assertTrue(cause instanceof DecoderException);
assertThat(cause, instanceOf(DecoderException.class));
assertEquals("non-zero reserved flag", cause.getMessage());
}
@ -223,12 +236,10 @@ public class MqttCodecTest {
}
private void checkForSingleDecoderException(final List<Object> out) {
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertFalse("Message should not be an MqttConnectMessage",
MqttConnectMessage.class.isAssignableFrom(out.get(0).getClass()));
assertEquals(1, out.size());
assertThat(out.get(0), not(instanceOf(MqttConnectMessage.class)));
MqttMessage result = (MqttMessage) out.get(0);
assertTrue("Decoding should have resulted in a DecoderException",
result.decoderResult().cause() instanceof DecoderException);
assertThat(result.decoderResult().cause(), instanceOf(DecoderException.class));
}
@Test
@ -240,11 +251,12 @@ public class MqttCodecTest {
MqttProperties.NO_PROPERTIES,
MqttProperties.NO_PROPERTIES);
try {
ByteBuf byteBuf = MqttEncoder.doEncode(ctx, message);
} catch (Exception cause) {
assertTrue(cause instanceof EncoderException);
}
assertThrows(EncoderException.class, new Executable() {
@Override
public void execute() {
MqttEncoder.doEncode(ctx, message);
}
});
}
@Test
@ -254,7 +266,7 @@ public class MqttCodecTest {
mqttDecoder.channelRead(ctx, byteBuf);
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertEquals(1, out.size());
final MqttConnAckMessage decodedMessage = (MqttConnAckMessage) out.get(0);
validateFixedHeaders(message.fixedHeader(), decodedMessage.fixedHeader());
@ -268,7 +280,7 @@ public class MqttCodecTest {
mqttDecoder.channelRead(ctx, byteBuf);
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertEquals(1, out.size());
final MqttPublishMessage decodedMessage = (MqttPublishMessage) out.get(0);
validateFixedHeaders(message.fixedHeader(), decodedMessage.fixedHeader());
@ -303,7 +315,7 @@ public class MqttCodecTest {
mqttDecoder.channelRead(ctx, byteBuf);
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertEquals(1, out.size());
final MqttSubscribeMessage decodedMessage = (MqttSubscribeMessage) out.get(0);
validateFixedHeaders(message.fixedHeader(), decodedMessage.fixedHeader());
@ -318,7 +330,7 @@ public class MqttCodecTest {
mqttDecoder.channelRead(ctx, byteBuf);
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertEquals(1, out.size());
final MqttSubAckMessage decodedMessage = (MqttSubAckMessage) out.get(0);
validateFixedHeaders(message.fixedHeader(), decodedMessage.fixedHeader());
@ -339,7 +351,7 @@ public class MqttCodecTest {
mqttDecoder.channelRead(ctx, byteBuf);
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertEquals(1, out.size());
MqttSubAckMessage decodedMessage = (MqttSubAckMessage) out.get(0);
validateFixedHeaders(message.fixedHeader(), decodedMessage.fixedHeader());
@ -356,7 +368,7 @@ public class MqttCodecTest {
mqttDecoder.channelRead(ctx, byteBuf);
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertEquals(1, out.size());
final MqttUnsubscribeMessage decodedMessage = (MqttUnsubscribeMessage) out.get(0);
validateFixedHeaders(message.fixedHeader(), decodedMessage.fixedHeader());
@ -395,12 +407,12 @@ public class MqttCodecTest {
byteBuf.setByte(0, 0xF0);
mqttDecoder.channelRead(ctx, byteBuf);
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertEquals(1, out.size());
final MqttMessage decodedMessage = (MqttMessage) out.get(0);
assertTrue(decodedMessage.decoderResult().isFailure());
Throwable cause = decodedMessage.decoderResult().cause();
assertTrue(cause instanceof DecoderException);
assertThat(cause, instanceOf(DecoderException.class));
assertEquals("AUTH message requires at least MQTT 5", cause.getMessage());
}
@ -411,7 +423,7 @@ public class MqttCodecTest {
mqttDecoderLimitedMessageSize.channelRead(ctx, byteBuf);
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertEquals(1, out.size());
assertEquals(0, byteBuf.readableBytes());
@ -430,7 +442,7 @@ public class MqttCodecTest {
mqttDecoderLimitedMessageSize.channelRead(ctx, byteBuf);
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertEquals(1, out.size());
assertEquals(0, byteBuf.readableBytes());
@ -449,7 +461,7 @@ public class MqttCodecTest {
mqttDecoderLimitedMessageSize.channelRead(ctx, byteBuf);
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertEquals(1, out.size());
assertEquals(0, byteBuf.readableBytes());
@ -465,7 +477,7 @@ public class MqttCodecTest {
mqttDecoderLimitedMessageSize.channelRead(ctx, byteBuf);
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertEquals(1, out.size());
assertEquals(0, byteBuf.readableBytes());
@ -484,7 +496,7 @@ public class MqttCodecTest {
mqttDecoderLimitedMessageSize.channelRead(ctx, byteBuf);
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertEquals(1, out.size());
assertEquals(0, byteBuf.readableBytes());
@ -502,7 +514,7 @@ public class MqttCodecTest {
mqttDecoderLimitedMessageSize.channelRead(ctx, byteBuf);
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertEquals(1, out.size());
assertEquals(0, byteBuf.readableBytes());
@ -520,7 +532,7 @@ public class MqttCodecTest {
mqttDecoderLimitedMessageSize.channelRead(ctx, byteBuf);
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertEquals(1, out.size());
assertEquals(0, byteBuf.readableBytes());
@ -544,7 +556,7 @@ public class MqttCodecTest {
mqttDecoder.channelRead(ctx, byteBuf);
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertEquals(1, out.size());
final MqttConnectMessage decodedMessage = (MqttConnectMessage) out.get(0);
@ -564,7 +576,7 @@ public class MqttCodecTest {
mqttDecoder.channelRead(ctx, byteBuf);
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertEquals(1, out.size());
final MqttConnAckMessage decodedMessage = (MqttConnAckMessage) out.get(0);
validateFixedHeaders(message.fixedHeader(), decodedMessage.fixedHeader());
@ -581,18 +593,18 @@ public class MqttCodecTest {
props.add(new MqttProperties.UserProperty("isSecret", "true"));
props.add(new MqttProperties.UserProperty("tag", "firstTag"));
props.add(new MqttProperties.UserProperty("tag", "secondTag"));
assertEquals("Subscription IDs count mismatch", 2,
(props.getProperties(SUBSCRIPTION_IDENTIFIER.value())).size());
assertEquals("User properties count mismatch", 3,
(props.getProperties(USER_PROPERTY.value())).size());
assertEquals("UserProperties count mismatch", 3,
assertEquals(2,
props.getProperties(SUBSCRIPTION_IDENTIFIER.value()).size());
assertEquals(3,
props.getProperties(USER_PROPERTY.value()).size());
assertEquals(3,
((MqttProperties.UserProperties) props.getProperty(USER_PROPERTY.value())).value.size());
final MqttPublishMessage message = createPublishMessage(props);
ByteBuf byteBuf = MqttEncoder.doEncode(ctx, message);
mqttDecoder.channelRead(ctx, byteBuf);
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertEquals(1, out.size());
final MqttPublishMessage decodedMessage = (MqttPublishMessage) out.get(0);
validateFixedHeaders(message.fixedHeader(), decodedMessage.fixedHeader());
@ -611,7 +623,7 @@ public class MqttCodecTest {
mqttDecoder.channelRead(ctx, byteBuf);
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertEquals(1, out.size());
final MqttMessage decodedMessage = (MqttMessage) out.get(0);
validateFixedHeaders(message.fixedHeader(), decodedMessage.fixedHeader());
@ -627,7 +639,7 @@ public class MqttCodecTest {
mqttDecoder.channelRead(ctx, byteBuf);
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertEquals(1, out.size());
final MqttMessage decodedMessage = (MqttMessage) out.get(0);
validateFixedHeaders(message.fixedHeader(), decodedMessage.fixedHeader());
@ -644,7 +656,7 @@ public class MqttCodecTest {
mqttDecoder.channelRead(ctx, byteBuf);
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertEquals(1, out.size());
final MqttSubAckMessage decodedMessage = (MqttSubAckMessage) out.get(0);
validateFixedHeaders(message.fixedHeader(), decodedMessage.fixedHeader());
@ -652,9 +664,7 @@ public class MqttCodecTest {
(MqttMessageIdAndPropertiesVariableHeader) message.variableHeader(),
(MqttMessageIdAndPropertiesVariableHeader) decodedMessage.variableHeader());
validateSubAckPayload(message.payload(), decodedMessage.payload());
assertArrayEquals(
"MqttSubAckPayload QoS mismatch ",
new Integer[] {1, 2, 0, 0x80},
assertArrayEquals(new Integer[] {1, 2, 0, 0x80},
decodedMessage.payload().grantedQoSLevels().toArray());
}
@ -676,7 +686,7 @@ public class MqttCodecTest {
mqttDecoder.channelRead(ctx, byteBuf);
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertEquals(1, out.size());
final MqttSubscribeMessage decodedMessage = (MqttSubscribeMessage) out.get(0);
validateFixedHeaders(message.fixedHeader(), decodedMessage.fixedHeader());
final MqttMessageIdAndPropertiesVariableHeader expectedHeader =
@ -706,7 +716,7 @@ public class MqttCodecTest {
mqttDecoder.channelRead(ctx, byteBuf);
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertEquals(1, out.size());
final MqttSubscribeMessage decodedMessage = (MqttSubscribeMessage) out.get(0);
final MqttSubscribeMessage expectedMessage = MqttMessageBuilders.subscribe()
@ -737,14 +747,14 @@ public class MqttCodecTest {
mqttDecoder.channelRead(ctx, byteBuf);
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertEquals(1, out.size());
final MqttUnsubAckMessage decodedMessage = (MqttUnsubAckMessage) out.get(0);
validateFixedHeaders(message.fixedHeader(), decodedMessage.fixedHeader());
validatePacketIdAndPropertiesVariableHeader(
(MqttMessageIdAndPropertiesVariableHeader) message.variableHeader(),
(MqttMessageIdAndPropertiesVariableHeader) decodedMessage.variableHeader());
assertEquals("Reason code list doesn't match", message.payload().unsubscribeReasonCodes(),
assertEquals(message.payload().unsubscribeReasonCodes(),
decodedMessage.payload().unsubscribeReasonCodes());
}
@ -762,7 +772,7 @@ public class MqttCodecTest {
mqttDecoder.channelRead(ctx, byteBuf);
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertEquals(1, out.size());
final MqttMessage decodedMessage = (MqttMessage) out.get(0);
validateFixedHeaders(message.fixedHeader(), decodedMessage.fixedHeader());
validateReasonCodeAndPropertiesVariableHeader(
@ -781,7 +791,7 @@ public class MqttCodecTest {
mqttDecoder.channelRead(ctx, byteBuf);
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertEquals(1, out.size());
final MqttMessage decodedMessage = (MqttMessage) out.get(0);
validateFixedHeaders(message.fixedHeader(), decodedMessage.fixedHeader());
validateReasonCodeAndPropertiesVariableHeader(
@ -803,7 +813,7 @@ public class MqttCodecTest {
mqttDecoder.channelRead(ctx, byteBuf);
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertEquals(1, out.size());
final MqttMessage decodedMessage = (MqttMessage) out.get(0);
validateFixedHeaders(message.fixedHeader(), decodedMessage.fixedHeader());
validateReasonCodeAndPropertiesVariableHeader(
@ -825,7 +835,7 @@ public class MqttCodecTest {
verify(versionAttrMock, times(1)).set(MqttVersion.MQTT_5);
assertEquals("Expected one CONNECT object but got " + out.size(), 1, out.size());
assertEquals(out.size(), 1, out.size());
final MqttConnectMessage decodedConnectMessage = (MqttConnectMessage) out.get(0);
@ -841,7 +851,7 @@ public class MqttCodecTest {
mqttDecoder.channelRead(ctx, byteBuf);
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertEquals(1, out.size());
final MqttMessage decodedMessage = (MqttMessage) out.get(0);
validateFixedHeaders(message.fixedHeader(), decodedMessage.fixedHeader());
@ -855,7 +865,7 @@ public class MqttCodecTest {
mqttDecoder.channelRead(ctx, byteBuf);
assertEquals("Expected one object but got " + out.size(), 1, out.size());
assertEquals(out.size(), 1, out.size());
final MqttMessage decodedMessage = (MqttMessage) out.get(0);
validateFixedHeaders(message.fixedHeader(), decodedMessage.fixedHeader());
@ -992,109 +1002,81 @@ public class MqttCodecTest {
// MQTT messages
private static void validateFixedHeaders(MqttFixedHeader expected, MqttFixedHeader actual) {
assertEquals("MqttFixedHeader MqttMessageType mismatch ", expected.messageType(), actual.messageType());
assertEquals("MqttFixedHeader Qos mismatch ", expected.qosLevel(), actual.qosLevel());
assertEquals(expected.messageType(), actual.messageType());
assertEquals(expected.qosLevel(), actual.qosLevel());
}
private static void validateConnectVariableHeader(
MqttConnectVariableHeader expected,
MqttConnectVariableHeader actual) {
assertEquals("MqttConnectVariableHeader Name mismatch ", expected.name(), actual.name());
assertEquals(
"MqttConnectVariableHeader KeepAliveTimeSeconds mismatch ",
expected.keepAliveTimeSeconds(),
actual.keepAliveTimeSeconds());
assertEquals("MqttConnectVariableHeader Version mismatch ", expected.version(), actual.version());
assertEquals("MqttConnectVariableHeader Version mismatch ", expected.version(), actual.version());
assertEquals(expected.name(), actual.name());
assertEquals(expected.keepAliveTimeSeconds(), actual.keepAliveTimeSeconds());
assertEquals(expected.version(), actual.version());
assertEquals(expected.version(), actual.version());
validateProperties(expected.properties(), actual.properties());
assertEquals("MqttConnectVariableHeader WillQos mismatch ", expected.willQos(), actual.willQos());
assertEquals(expected.willQos(), actual.willQos());
assertEquals("MqttConnectVariableHeader HasUserName mismatch ", expected.hasUserName(), actual.hasUserName());
assertEquals("MqttConnectVariableHeader HasPassword mismatch ", expected.hasPassword(), actual.hasPassword());
assertEquals(
"MqttConnectVariableHeader IsCleanSession mismatch ",
expected.isCleanSession(),
actual.isCleanSession());
assertEquals("MqttConnectVariableHeader IsWillFlag mismatch ", expected.isWillFlag(), actual.isWillFlag());
assertEquals(
"MqttConnectVariableHeader IsWillRetain mismatch ",
expected.isWillRetain(),
actual.isWillRetain());
assertEquals(expected.hasUserName(), actual.hasUserName());
assertEquals(expected.hasPassword(), actual.hasPassword());
assertEquals(expected.isCleanSession(), actual.isCleanSession());
assertEquals(expected.isWillFlag(), actual.isWillFlag());
assertEquals(expected.isWillRetain(), actual.isWillRetain());
}
private static void validateConnectPayload(MqttConnectPayload expected, MqttConnectPayload actual) {
assertEquals(
"MqttConnectPayload ClientIdentifier mismatch ",
expected.clientIdentifier(),
actual.clientIdentifier());
assertEquals("MqttConnectPayload UserName mismatch ", expected.userName(), actual.userName());
assertEquals("MqttConnectPayload Password mismatch ", expected.password(), actual.password());
assertTrue(
"MqttConnectPayload Password bytes mismatch ",
Arrays.equals(expected.passwordInBytes(), actual.passwordInBytes()));
assertEquals("MqttConnectPayload WillMessage mismatch ", expected.willMessage(), actual.willMessage());
assertTrue(
"MqttConnectPayload WillMessage bytes mismatch ",
Arrays.equals(expected.willMessageInBytes(), actual.willMessageInBytes()));
assertEquals("MqttConnectPayload WillTopic mismatch ", expected.willTopic(), actual.willTopic());
assertEquals(expected.clientIdentifier(), actual.clientIdentifier());
assertEquals(expected.userName(), actual.userName());
assertEquals(expected.password(), actual.password());
assertArrayEquals(expected.passwordInBytes(), actual.passwordInBytes());
assertEquals(expected.willMessage(), actual.willMessage());
assertArrayEquals(expected.willMessageInBytes(), actual.willMessageInBytes());
assertEquals(expected.willTopic(), actual.willTopic());
validateProperties(expected.willProperties(), actual.willProperties());
}
private static void validateConnAckVariableHeader(
MqttConnAckVariableHeader expected,
MqttConnAckVariableHeader actual) {
assertEquals(
"MqttConnAckVariableHeader MqttConnectReturnCode mismatch",
expected.connectReturnCode(),
actual.connectReturnCode());
assertEquals(expected.connectReturnCode(), actual.connectReturnCode());
}
private static void validatePublishVariableHeader(
MqttPublishVariableHeader expected,
MqttPublishVariableHeader actual) {
assertEquals("MqttPublishVariableHeader TopicName mismatch ", expected.topicName(), actual.topicName());
assertEquals("MqttPublishVariableHeader MessageId mismatch ", expected.packetId(), actual.packetId());
assertEquals(expected.topicName(), actual.topicName());
assertEquals(expected.packetId(), actual.packetId());
validateProperties(expected.properties(), actual.properties());
}
private static void validatePublishPayload(ByteBuf expected, ByteBuf actual) {
assertEquals("PublishPayload mismatch ", 0, expected.compareTo(actual));
assertEquals(0, expected.compareTo(actual));
}
private static void validateMessageIdVariableHeader(
MqttMessageIdVariableHeader expected,
MqttMessageIdVariableHeader actual) {
assertEquals("MqttMessageIdVariableHeader MessageId mismatch ", expected.messageId(), actual.messageId());
assertEquals(expected.messageId(), actual.messageId());
}
private static void validateSubAckPayload(MqttSubAckPayload expected, MqttSubAckPayload actual) {
assertArrayEquals(
"MqttSubAckPayload reason codes mismatch ",
expected.reasonCodes().toArray(),
actual.reasonCodes().toArray());
assertArrayEquals(
"MqttSubAckPayload QoS level mismatch ",
expected.grantedQoSLevels().toArray(),
actual.grantedQoSLevels().toArray());
assertArrayEquals(expected.reasonCodes().toArray(), actual.reasonCodes().toArray());
assertArrayEquals(expected.grantedQoSLevels().toArray(), actual.grantedQoSLevels().toArray());
}
private static void validateDecoderExceptionTooLargeMessage(MqttMessage message) {
assertNull("MqttMessage payload expected null ", message.payload());
assertNull(message.payload());
assertTrue(message.decoderResult().isFailure());
Throwable cause = message.decoderResult().cause();
assertTrue("MqttMessage DecoderResult cause expected instance of DecoderException ",
cause instanceof DecoderException);
assertTrue("MqttMessage DecoderResult cause reason expect to contain 'too large message' ",
cause.getMessage().contains("too large message:"));
assertThat(cause, instanceOf(DecoderException.class));
assertTrue(cause.getMessage().contains("too large message:"));
}
private static void validatePubReplyVariableHeader(
MqttPubReplyMessageVariableHeader expected,
MqttPubReplyMessageVariableHeader actual) {
assertEquals("MqttPubReplyMessageVariableHeader MessageId mismatch ",
expected.messageId(), actual.messageId());
assertEquals("MqttPubReplyMessageVariableHeader reasonCode mismatch ",
expected.reasonCode(), actual.reasonCode());
assertEquals(expected.messageId(), actual.messageId());
assertEquals(expected.reasonCode(), actual.reasonCode());
final MqttProperties expectedProps = expected.properties();
final MqttProperties actualProps = actual.properties();
@ -1103,8 +1085,7 @@ public class MqttCodecTest {
private void validatePacketIdAndPropertiesVariableHeader(MqttMessageIdAndPropertiesVariableHeader expected,
MqttMessageIdAndPropertiesVariableHeader actual) {
assertEquals("MqttMessageIdAndPropertiesVariableHeader MessageId mismatch ",
expected.messageId(), actual.messageId());
assertEquals(expected.messageId(), actual.messageId());
final MqttProperties expectedProps = expected.properties();
final MqttProperties actualProps = actual.properties();
validateProperties(expectedProps, actualProps);
@ -1112,8 +1093,7 @@ public class MqttCodecTest {
private void validateReasonCodeAndPropertiesVariableHeader(MqttReasonCodeAndPropertiesVariableHeader expected,
MqttReasonCodeAndPropertiesVariableHeader actual) {
assertEquals("MqttReasonCodeAndPropertiesVariableHeader reason mismatch ",
expected.reasonCode(), actual.reasonCode());
assertEquals(expected.reasonCode(), actual.reasonCode());
final MqttProperties expectedProps = expected.properties();
final MqttProperties actualProps = actual.properties();
validateProperties(expectedProps, actualProps);

View File

@ -16,10 +16,10 @@
package io.netty.handler.codec.mqtt;
import static org.junit.Assert.assertNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import io.netty.util.CharsetUtil;
import org.junit.Test;
import org.junit.jupiter.api.Test;
import java.util.Collections;

View File

@ -16,21 +16,16 @@
package io.netty.handler.codec.mqtt;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
import java.util.Arrays;
import static org.junit.Assert.*;
import static org.junit.jupiter.api.Assertions.assertEquals;
@RunWith(value = Parameterized.class)
public class MqttMessageBuildersPacketIdTest {
@Parameterized.Parameter
public Integer id;
@Parameterized.Parameters(name = "{index}: {0}")
public static Iterable<Integer> data() {
static Iterable<Integer> data() {
// we take a subset of valid packetIds
return Arrays.asList(
0x0001,
@ -41,8 +36,9 @@ public class MqttMessageBuildersPacketIdTest {
);
}
@Test
public void testUnsubAckMessageIdAsShort() {
@ParameterizedTest()
@MethodSource("data")
public void testUnsubAckMessageIdAsShort(Integer id) {
final MqttUnsubAckMessage msg = MqttMessageBuilders.unsubAck()
.packetId(id.shortValue())
.build();
@ -53,8 +49,9 @@ public class MqttMessageBuildersPacketIdTest {
);
}
@Test
public void testSubAckMessageIdAsShort() {
@ParameterizedTest
@MethodSource("data")
public void testSubAckMessageIdAsShort(Integer id) {
final MqttSubAckMessage msg = MqttMessageBuilders.subAck()
.packetId(id.shortValue())
.build();
@ -65,8 +62,9 @@ public class MqttMessageBuildersPacketIdTest {
);
}
@Test
public void testPubAckMessageIdAsShort() {
@ParameterizedTest
@MethodSource("data")
public void testPubAckMessageIdAsShort(Integer id) {
final MqttMessage msg = MqttMessageBuilders.pubAck()
.packetId(id.shortValue())
.build();
@ -77,8 +75,9 @@ public class MqttMessageBuildersPacketIdTest {
);
}
@Test
public void testUnsubAckMessageIdAsInt() {
@ParameterizedTest
@MethodSource("data")
public void testUnsubAckMessageIdAsInt(Integer id) {
final MqttUnsubAckMessage msg = MqttMessageBuilders.unsubAck()
.packetId(id)
.build();
@ -89,8 +88,9 @@ public class MqttMessageBuildersPacketIdTest {
);
}
@Test
public void testSubAckMessageIdAsInt() {
@ParameterizedTest
@MethodSource("data")
public void testSubAckMessageIdAsInt(Integer id) {
final MqttSubAckMessage msg = MqttMessageBuilders.subAck()
.packetId(id)
.build();
@ -101,8 +101,9 @@ public class MqttMessageBuildersPacketIdTest {
);
}
@Test
public void testPubAckMessageIdAsInt() {
@ParameterizedTest
@MethodSource("data")
public void testPubAckMessageIdAsInt(Integer id) {
final MqttMessage msg = MqttMessageBuilders.pubAck()
.packetId(id)
.build();

View File

@ -17,9 +17,9 @@
package io.netty.handler.codec.mqtt;
import io.netty.handler.codec.mqtt.MqttMessageBuilders.PropertiesInitializer;
import org.junit.Test;
import org.junit.jupiter.api.Test;
import static org.junit.Assert.*;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class MqttMessageBuildersTest {

View File

@ -16,14 +16,14 @@
package io.netty.handler.codec.mqtt;
import org.junit.Test;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.List;
import static io.netty.handler.codec.mqtt.MqttQoS.AT_LEAST_ONCE;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static io.netty.handler.codec.mqtt.MqttTestUtils.validateProperties;
import static io.netty.handler.codec.mqtt.MqttTestUtils.validateSubscribePayload;
import static io.netty.handler.codec.mqtt.MqttTestUtils.validateUnsubscribePayload;
@ -41,14 +41,14 @@ public class MqttMessageFactoryTest {
MqttMessage unsuback = MqttMessageFactory.newMessage(fixedHeader, variableHeader, null);
assertEquals("Message type mismatch", MqttMessageType.UNSUBACK, unsuback.fixedHeader().messageType());
assertEquals(MqttMessageType.UNSUBACK, unsuback.fixedHeader().messageType());
MqttMessageIdAndPropertiesVariableHeader actualVariableHeader =
(MqttMessageIdAndPropertiesVariableHeader) unsuback.variableHeader();
assertEquals("MessageId mismatch", SAMPLE_MESSAGE_ID, actualVariableHeader.messageId());
assertEquals(SAMPLE_MESSAGE_ID, actualVariableHeader.messageId());
validateProperties(MqttProperties.NO_PROPERTIES, actualVariableHeader.properties());
MqttUnsubAckPayload actualPayload = (MqttUnsubAckPayload) unsuback.payload();
assertNotNull("payload", actualPayload);
assertEquals("reason codes size", 0, actualPayload.unsubscribeReasonCodes().size());
assertNotNull(actualPayload);
assertEquals(0, actualPayload.unsubscribeReasonCodes().size());
}
@Test
@ -66,15 +66,13 @@ public class MqttMessageFactoryTest {
MqttMessage unsuback = MqttMessageFactory.newMessage(fixedHeader, variableHeader, payload);
assertEquals("Message type mismatch", MqttMessageType.UNSUBACK, unsuback.fixedHeader().messageType());
assertEquals(MqttMessageType.UNSUBACK, unsuback.fixedHeader().messageType());
MqttMessageIdAndPropertiesVariableHeader actualVariableHeader =
(MqttMessageIdAndPropertiesVariableHeader) unsuback.variableHeader();
assertEquals("MessageId mismatch", SAMPLE_MESSAGE_ID, actualVariableHeader.messageId());
assertEquals(SAMPLE_MESSAGE_ID, actualVariableHeader.messageId());
validateProperties(properties, actualVariableHeader.properties());
MqttUnsubAckPayload actualPayload = (MqttUnsubAckPayload) unsuback.payload();
assertEquals("Reason code list doesn't match",
payload.unsubscribeReasonCodes(),
actualPayload.unsubscribeReasonCodes());
assertEquals(payload.unsubscribeReasonCodes(), actualPayload.unsubscribeReasonCodes());
}
@Test
@ -89,10 +87,10 @@ public class MqttMessageFactoryTest {
MqttMessage subscribe = MqttMessageFactory.newMessage(fixedHeader, variableHeader, payload);
assertEquals("Message type mismatch", MqttMessageType.SUBSCRIBE, subscribe.fixedHeader().messageType());
assertEquals(MqttMessageType.SUBSCRIBE, subscribe.fixedHeader().messageType());
MqttMessageIdAndPropertiesVariableHeader actualVariableHeader =
(MqttMessageIdAndPropertiesVariableHeader) subscribe.variableHeader();
assertEquals("MessageId mismatch", SAMPLE_MESSAGE_ID, actualVariableHeader.messageId());
assertEquals(SAMPLE_MESSAGE_ID, actualVariableHeader.messageId());
validateProperties(MqttProperties.NO_PROPERTIES, actualVariableHeader.properties());
MqttSubscribePayload actualPayload = (MqttSubscribePayload) subscribe.payload();
validateSubscribePayload(payload, actualPayload);
@ -113,10 +111,10 @@ public class MqttMessageFactoryTest {
MqttMessage subscribe = MqttMessageFactory.newMessage(fixedHeader, variableHeader, payload);
assertEquals("Message type mismatch", MqttMessageType.SUBSCRIBE, subscribe.fixedHeader().messageType());
assertEquals(MqttMessageType.SUBSCRIBE, subscribe.fixedHeader().messageType());
MqttMessageIdAndPropertiesVariableHeader actualVariableHeader =
(MqttMessageIdAndPropertiesVariableHeader) subscribe.variableHeader();
assertEquals("MessageId mismatch", SAMPLE_MESSAGE_ID, actualVariableHeader.messageId());
assertEquals(SAMPLE_MESSAGE_ID, actualVariableHeader.messageId());
validateProperties(properties, actualVariableHeader.properties());
MqttSubscribePayload actualPayload = (MqttSubscribePayload) subscribe.payload();
validateSubscribePayload(payload, actualPayload);
@ -134,10 +132,10 @@ public class MqttMessageFactoryTest {
MqttMessage unsubscribe = MqttMessageFactory.newMessage(fixedHeader, variableHeader, payload);
assertEquals("Message type mismatch", MqttMessageType.UNSUBSCRIBE, unsubscribe.fixedHeader().messageType());
assertEquals(MqttMessageType.UNSUBSCRIBE, unsubscribe.fixedHeader().messageType());
MqttMessageIdAndPropertiesVariableHeader actualVariableHeader =
(MqttMessageIdAndPropertiesVariableHeader) unsubscribe.variableHeader();
assertEquals("MessageId mismatch", SAMPLE_MESSAGE_ID, actualVariableHeader.messageId());
assertEquals(SAMPLE_MESSAGE_ID, actualVariableHeader.messageId());
validateProperties(MqttProperties.NO_PROPERTIES, actualVariableHeader.properties());
MqttUnsubscribePayload actualPayload = (MqttUnsubscribePayload) unsubscribe.payload();
validateUnsubscribePayload(payload, actualPayload);
@ -158,10 +156,10 @@ public class MqttMessageFactoryTest {
MqttMessage unsubscribe = MqttMessageFactory.newMessage(fixedHeader, variableHeader, payload);
assertEquals("Message type mismatch", MqttMessageType.UNSUBSCRIBE, unsubscribe.fixedHeader().messageType());
assertEquals(MqttMessageType.UNSUBSCRIBE, unsubscribe.fixedHeader().messageType());
MqttMessageIdAndPropertiesVariableHeader actualVariableHeader =
(MqttMessageIdAndPropertiesVariableHeader) unsubscribe.variableHeader();
assertEquals("MessageId mismatch", SAMPLE_MESSAGE_ID, actualVariableHeader.messageId());
assertEquals(SAMPLE_MESSAGE_ID, actualVariableHeader.messageId());
validateProperties(properties, actualVariableHeader.properties());
MqttUnsubscribePayload actualPayload = (MqttUnsubscribePayload) unsubscribe.payload();
validateUnsubscribePayload(payload, actualPayload);

View File

@ -16,7 +16,8 @@
package io.netty.handler.codec.mqtt;
import org.junit.Test;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.Collections;
@ -26,7 +27,7 @@ import static io.netty.handler.codec.mqtt.MqttProperties.MqttPropertyType.CONTEN
import static io.netty.handler.codec.mqtt.MqttProperties.MqttPropertyType.PAYLOAD_FORMAT_INDICATOR;
import static io.netty.handler.codec.mqtt.MqttProperties.MqttPropertyType.SUBSCRIPTION_IDENTIFIER;
import static io.netty.handler.codec.mqtt.MqttProperties.MqttPropertyType.USER_PROPERTY;
import static org.junit.Assert.assertEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class MqttPropertiesTest {
@ -46,10 +47,10 @@ public class MqttPropertiesTest {
public void testGetProperty() {
MqttProperties props = createSampleProperties();
assertEquals("getProperty Content Type",
assertEquals(
"text/plain",
((MqttProperties.StringProperty) props.getProperty(CONTENT_TYPE.value())).value);
assertEquals("getProperty Subscription ID",
assertEquals(
10,
((MqttProperties.IntegerProperty) props.getProperty(SUBSCRIPTION_IDENTIFIER.value())).value.intValue());
@ -59,21 +60,21 @@ public class MqttPropertiesTest {
expectedUserProps.add(new MqttProperties.StringPair("tag", "secondTag"));
List<MqttProperties.StringPair> actualUserProps =
((MqttProperties.UserProperties) props.getProperty(USER_PROPERTY.value())).value;
assertEquals("getProperty User Properties", expectedUserProps, actualUserProps);
assertEquals(expectedUserProps, actualUserProps);
}
@Test
public void testGetProperties() {
MqttProperties props = createSampleProperties();
assertEquals("getProperties Content Type",
assertEquals(
Collections.singletonList(new MqttProperties.StringProperty(CONTENT_TYPE.value(), "text/plain")),
props.getProperties(CONTENT_TYPE.value()));
List<MqttProperties.IntegerProperty> expectedSubscriptionIds = new ArrayList<MqttProperties.IntegerProperty>();
expectedSubscriptionIds.add(new MqttProperties.IntegerProperty(SUBSCRIPTION_IDENTIFIER.value(), 10));
expectedSubscriptionIds.add(new MqttProperties.IntegerProperty(SUBSCRIPTION_IDENTIFIER.value(), 20));
assertEquals("getProperties Subscription ID",
assertEquals(
expectedSubscriptionIds,
props.getProperties(SUBSCRIPTION_IDENTIFIER.value()));
@ -83,7 +84,7 @@ public class MqttPropertiesTest {
expectedUserProps.add(new MqttProperties.UserProperty("tag", "secondTag"));
List<MqttProperties.UserProperty> actualUserProps =
(List<MqttProperties.UserProperty>) props.getProperties(USER_PROPERTY.value());
assertEquals("getProperty User Properties", expectedUserProps, actualUserProps);
assertEquals(expectedUserProps, actualUserProps);
}
@Test
@ -104,9 +105,7 @@ public class MqttPropertiesTest {
expectedProperties.add(expectedUserProperties);
assertEquals("listAll",
expectedProperties,
props.listAll());
assertEquals(expectedProperties, props.listAll());
}
}