From dfbf3a9cd8b27dfcc211a6649a17aadcee7c4cd9 Mon Sep 17 00:00:00 2001 From: imbeacon Date: Fri, 11 Nov 2022 15:39:53 +0200 Subject: [PATCH] Test fixes, keep logic for auth for mqtt v3 --- .../transport/mqtt/mqttv3/MqttTestClient.java | 2 +- .../publish/AbstractMqttV5ClientPublishTest.java | 3 --- .../AbstractMqttV5ClientSubscriptionTest.java | 9 --------- .../subscribe/MqttV5ClientSubscriptionTest.java | 1 - .../AbstractMqttV5ClientUnsubscribeTest.java | 1 - ...eTest.java => MqttV5ProvisionDeviceTest.java} | 2 +- .../mqttv5/timeseries/MqttV5TimeseriesTest.java | 2 ++ .../transport/mqtt/MqttTransportHandler.java | 16 +++++++++------- 8 files changed, 13 insertions(+), 23 deletions(-) rename application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv5/provision/{MqttProvisionJsonDeviceTest.java => MqttV5ProvisionDeviceTest.java} (98%) diff --git a/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv3/MqttTestClient.java b/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv3/MqttTestClient.java index c4ae91a2b5..a0aa1905eb 100644 --- a/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv3/MqttTestClient.java +++ b/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv3/MqttTestClient.java @@ -121,7 +121,7 @@ public class MqttTestClient { } private MqttAsyncClient createClient(String clientId) throws MqttException { - if (clientId == null) { + if (StringUtils.isEmpty(clientId)) { clientId = MqttAsyncClient.generateClientId(); } return new MqttAsyncClient(MQTT_URL, clientId, new MemoryPersistence()); diff --git a/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv5/client/publish/AbstractMqttV5ClientPublishTest.java b/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv5/client/publish/AbstractMqttV5ClientPublishTest.java index 4520cdcb26..bd4c6b4bb8 100644 --- a/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv5/client/publish/AbstractMqttV5ClientPublishTest.java +++ b/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv5/client/publish/AbstractMqttV5ClientPublishTest.java @@ -15,11 +15,9 @@ */ package org.thingsboard.server.transport.mqtt.mqttv5.client.publish; -import io.netty.handler.codec.mqtt.MqttQoS; import org.eclipse.paho.mqttv5.client.IMqttToken; import org.eclipse.paho.mqttv5.common.packet.MqttPubAck; import org.eclipse.paho.mqttv5.common.packet.MqttReturnCode; -import org.eclipse.paho.mqttv5.common.packet.MqttSubAck; import org.eclipse.paho.mqttv5.common.packet.MqttWireMessage; import org.junit.Assert; import org.thingsboard.server.common.data.device.profile.MqttTopics; @@ -27,7 +25,6 @@ import org.thingsboard.server.transport.mqtt.AbstractMqttIntegrationTest; import org.thingsboard.server.transport.mqtt.mqttv5.MqttV5TestClient; import static org.eclipse.paho.mqttv5.common.packet.MqttWireMessage.MESSAGE_TYPE_PUBACK; -import static org.eclipse.paho.mqttv5.common.packet.MqttWireMessage.MESSAGE_TYPE_SUBACK; public abstract class AbstractMqttV5ClientPublishTest extends AbstractMqttIntegrationTest { diff --git a/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv5/client/subscribe/AbstractMqttV5ClientSubscriptionTest.java b/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv5/client/subscribe/AbstractMqttV5ClientSubscriptionTest.java index d2a11072a2..edab7b5b8d 100644 --- a/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv5/client/subscribe/AbstractMqttV5ClientSubscriptionTest.java +++ b/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv5/client/subscribe/AbstractMqttV5ClientSubscriptionTest.java @@ -16,25 +16,16 @@ package org.thingsboard.server.transport.mqtt.mqttv5.client.subscribe; import io.netty.handler.codec.mqtt.MqttQoS; -import org.apache.commons.lang3.StringUtils; import org.eclipse.paho.mqttv5.client.IMqttToken; -import org.eclipse.paho.mqttv5.client.MqttConnectionOptions; -import org.eclipse.paho.mqttv5.common.MqttException; -import org.eclipse.paho.mqttv5.common.packet.MqttConnAck; import org.eclipse.paho.mqttv5.common.packet.MqttReturnCode; import org.eclipse.paho.mqttv5.common.packet.MqttSubAck; import org.eclipse.paho.mqttv5.common.packet.MqttWireMessage; import org.junit.Assert; import org.thingsboard.server.common.data.device.profile.MqttTopics; import org.thingsboard.server.transport.mqtt.AbstractMqttIntegrationTest; -import org.thingsboard.server.transport.mqtt.mqttv5.MqttV5TestCallback; import org.thingsboard.server.transport.mqtt.mqttv5.MqttV5TestClient; -import java.util.concurrent.TimeUnit; - -import static org.eclipse.paho.mqttv5.common.packet.MqttWireMessage.MESSAGE_TYPE_CONNACK; import static org.eclipse.paho.mqttv5.common.packet.MqttWireMessage.MESSAGE_TYPE_SUBACK; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; public abstract class AbstractMqttV5ClientSubscriptionTest extends AbstractMqttIntegrationTest { diff --git a/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv5/client/subscribe/MqttV5ClientSubscriptionTest.java b/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv5/client/subscribe/MqttV5ClientSubscriptionTest.java index 37404a8911..e40363357a 100644 --- a/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv5/client/subscribe/MqttV5ClientSubscriptionTest.java +++ b/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv5/client/subscribe/MqttV5ClientSubscriptionTest.java @@ -16,7 +16,6 @@ package org.thingsboard.server.transport.mqtt.mqttv5.client.subscribe; import org.junit.Before; -import org.junit.Ignore; import org.junit.Test; import org.thingsboard.server.dao.service.DaoSqlTest; import org.thingsboard.server.transport.mqtt.MqttTestConfigProperties; diff --git a/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv5/client/unsubscribe/AbstractMqttV5ClientUnsubscribeTest.java b/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv5/client/unsubscribe/AbstractMqttV5ClientUnsubscribeTest.java index f2088e704d..79f529fa0d 100644 --- a/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv5/client/unsubscribe/AbstractMqttV5ClientUnsubscribeTest.java +++ b/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv5/client/unsubscribe/AbstractMqttV5ClientUnsubscribeTest.java @@ -17,7 +17,6 @@ package org.thingsboard.server.transport.mqtt.mqttv5.client.unsubscribe; import io.netty.handler.codec.mqtt.MqttQoS; import org.eclipse.paho.mqttv5.client.IMqttToken; -import org.eclipse.paho.mqttv5.client.MqttConnectionOptions; import org.eclipse.paho.mqttv5.common.packet.MqttReturnCode; import org.eclipse.paho.mqttv5.common.packet.MqttUnsubAck; import org.eclipse.paho.mqttv5.common.packet.MqttWireMessage; diff --git a/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv5/provision/MqttProvisionJsonDeviceTest.java b/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv5/provision/MqttV5ProvisionDeviceTest.java similarity index 98% rename from application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv5/provision/MqttProvisionJsonDeviceTest.java rename to application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv5/provision/MqttV5ProvisionDeviceTest.java index 942befc2f1..3fc41e83e2 100644 --- a/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv5/provision/MqttProvisionJsonDeviceTest.java +++ b/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv5/provision/MqttV5ProvisionDeviceTest.java @@ -42,7 +42,7 @@ import static org.thingsboard.server.common.data.device.profile.MqttTopics.DEVIC @Slf4j @DaoSqlTest -public class MqttProvisionJsonDeviceTest extends AbstractMqttV5Test { +public class MqttV5ProvisionDeviceTest extends AbstractMqttV5Test { @Autowired DeviceCredentialsService deviceCredentialsService; diff --git a/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv5/timeseries/MqttV5TimeseriesTest.java b/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv5/timeseries/MqttV5TimeseriesTest.java index 83cf469f79..60b935e661 100644 --- a/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv5/timeseries/MqttV5TimeseriesTest.java +++ b/application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv5/timeseries/MqttV5TimeseriesTest.java @@ -17,8 +17,10 @@ package org.thingsboard.server.transport.mqtt.mqttv5.timeseries; import org.junit.Before; import org.junit.Test; +import org.thingsboard.server.dao.service.DaoSqlTest; import org.thingsboard.server.transport.mqtt.MqttTestConfigProperties; +@DaoSqlTest public class MqttV5TimeseriesTest extends AbstractMqttV5TimeseriesTest { @Before diff --git a/common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/MqttTransportHandler.java b/common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/MqttTransportHandler.java index eee19b61a2..c03a7dd441 100644 --- a/common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/MqttTransportHandler.java +++ b/common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/MqttTransportHandler.java @@ -1010,15 +1010,17 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement private void onValidateDeviceResponse(ValidateDeviceCredentialsResponse msg, ChannelHandlerContext ctx, MqttConnectMessage connectMessage) { if (!msg.hasDeviceInfo()) { context.onAuthFailure(address); - ReturnCode returnCode = ReturnCode.NOT_AUTHORIZED_5; - if (sslHandler == null || getX509Certificate() == null) { - if (connectMessage.payload().userName() == null ^ connectMessage.payload().passwordInBytes() == null) { - returnCode = ReturnCode.BAD_USERNAME_OR_PASSWORD; - } else if (!StringUtils.isBlank(connectMessage.payload().clientIdentifier())) { - returnCode = ReturnCode.CLIENT_IDENTIFIER_NOT_VALID; + if (MqttVersion.MQTT_5.equals(deviceSessionCtx.getMqttVersion())) { + ReturnCode returnCode = ReturnCode.NOT_AUTHORIZED_5; + if (sslHandler == null || getX509Certificate() == null) { + if (connectMessage.payload().userName() == null ^ connectMessage.payload().passwordInBytes() == null) { + returnCode = ReturnCode.BAD_USERNAME_OR_PASSWORD; + } else if (!StringUtils.isBlank(connectMessage.payload().clientIdentifier())) { + returnCode = ReturnCode.CLIENT_IDENTIFIER_NOT_VALID; + } } + ctx.writeAndFlush(createMqttConnAckMsg(returnCode, connectMessage)); } - ctx.writeAndFlush(createMqttConnAckMsg(returnCode, connectMessage)); ctx.close(); } else { context.onAuthSuccess(address);