Test fixes, keep logic for auth for mqtt v3

This commit is contained in:
imbeacon 2022-11-11 15:39:53 +02:00
parent 885c1c3d88
commit dfbf3a9cd8
8 changed files with 13 additions and 23 deletions

View File

@ -121,7 +121,7 @@ public class MqttTestClient {
} }
private MqttAsyncClient createClient(String clientId) throws MqttException { private MqttAsyncClient createClient(String clientId) throws MqttException {
if (clientId == null) { if (StringUtils.isEmpty(clientId)) {
clientId = MqttAsyncClient.generateClientId(); clientId = MqttAsyncClient.generateClientId();
} }
return new MqttAsyncClient(MQTT_URL, clientId, new MemoryPersistence()); return new MqttAsyncClient(MQTT_URL, clientId, new MemoryPersistence());

View File

@ -15,11 +15,9 @@
*/ */
package org.thingsboard.server.transport.mqtt.mqttv5.client.publish; 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.client.IMqttToken;
import org.eclipse.paho.mqttv5.common.packet.MqttPubAck; import org.eclipse.paho.mqttv5.common.packet.MqttPubAck;
import org.eclipse.paho.mqttv5.common.packet.MqttReturnCode; 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.eclipse.paho.mqttv5.common.packet.MqttWireMessage;
import org.junit.Assert; import org.junit.Assert;
import org.thingsboard.server.common.data.device.profile.MqttTopics; 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 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_PUBACK;
import static org.eclipse.paho.mqttv5.common.packet.MqttWireMessage.MESSAGE_TYPE_SUBACK;
public abstract class AbstractMqttV5ClientPublishTest extends AbstractMqttIntegrationTest { public abstract class AbstractMqttV5ClientPublishTest extends AbstractMqttIntegrationTest {

View File

@ -16,25 +16,16 @@
package org.thingsboard.server.transport.mqtt.mqttv5.client.subscribe; package org.thingsboard.server.transport.mqtt.mqttv5.client.subscribe;
import io.netty.handler.codec.mqtt.MqttQoS; 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.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.MqttReturnCode;
import org.eclipse.paho.mqttv5.common.packet.MqttSubAck; import org.eclipse.paho.mqttv5.common.packet.MqttSubAck;
import org.eclipse.paho.mqttv5.common.packet.MqttWireMessage; import org.eclipse.paho.mqttv5.common.packet.MqttWireMessage;
import org.junit.Assert; import org.junit.Assert;
import org.thingsboard.server.common.data.device.profile.MqttTopics; import org.thingsboard.server.common.data.device.profile.MqttTopics;
import org.thingsboard.server.transport.mqtt.AbstractMqttIntegrationTest; import org.thingsboard.server.transport.mqtt.AbstractMqttIntegrationTest;
import org.thingsboard.server.transport.mqtt.mqttv5.MqttV5TestCallback;
import org.thingsboard.server.transport.mqtt.mqttv5.MqttV5TestClient; 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.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 { public abstract class AbstractMqttV5ClientSubscriptionTest extends AbstractMqttIntegrationTest {

View File

@ -16,7 +16,6 @@
package org.thingsboard.server.transport.mqtt.mqttv5.client.subscribe; package org.thingsboard.server.transport.mqtt.mqttv5.client.subscribe;
import org.junit.Before; import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test; import org.junit.Test;
import org.thingsboard.server.dao.service.DaoSqlTest; import org.thingsboard.server.dao.service.DaoSqlTest;
import org.thingsboard.server.transport.mqtt.MqttTestConfigProperties; import org.thingsboard.server.transport.mqtt.MqttTestConfigProperties;

View File

@ -17,7 +17,6 @@ package org.thingsboard.server.transport.mqtt.mqttv5.client.unsubscribe;
import io.netty.handler.codec.mqtt.MqttQoS; import io.netty.handler.codec.mqtt.MqttQoS;
import org.eclipse.paho.mqttv5.client.IMqttToken; 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.MqttReturnCode;
import org.eclipse.paho.mqttv5.common.packet.MqttUnsubAck; import org.eclipse.paho.mqttv5.common.packet.MqttUnsubAck;
import org.eclipse.paho.mqttv5.common.packet.MqttWireMessage; import org.eclipse.paho.mqttv5.common.packet.MqttWireMessage;

View File

@ -42,7 +42,7 @@ import static org.thingsboard.server.common.data.device.profile.MqttTopics.DEVIC
@Slf4j @Slf4j
@DaoSqlTest @DaoSqlTest
public class MqttProvisionJsonDeviceTest extends AbstractMqttV5Test { public class MqttV5ProvisionDeviceTest extends AbstractMqttV5Test {
@Autowired @Autowired
DeviceCredentialsService deviceCredentialsService; DeviceCredentialsService deviceCredentialsService;

View File

@ -17,8 +17,10 @@ package org.thingsboard.server.transport.mqtt.mqttv5.timeseries;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.thingsboard.server.dao.service.DaoSqlTest;
import org.thingsboard.server.transport.mqtt.MqttTestConfigProperties; import org.thingsboard.server.transport.mqtt.MqttTestConfigProperties;
@DaoSqlTest
public class MqttV5TimeseriesTest extends AbstractMqttV5TimeseriesTest { public class MqttV5TimeseriesTest extends AbstractMqttV5TimeseriesTest {
@Before @Before

View File

@ -1010,15 +1010,17 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement
private void onValidateDeviceResponse(ValidateDeviceCredentialsResponse msg, ChannelHandlerContext ctx, MqttConnectMessage connectMessage) { private void onValidateDeviceResponse(ValidateDeviceCredentialsResponse msg, ChannelHandlerContext ctx, MqttConnectMessage connectMessage) {
if (!msg.hasDeviceInfo()) { if (!msg.hasDeviceInfo()) {
context.onAuthFailure(address); context.onAuthFailure(address);
ReturnCode returnCode = ReturnCode.NOT_AUTHORIZED_5; if (MqttVersion.MQTT_5.equals(deviceSessionCtx.getMqttVersion())) {
if (sslHandler == null || getX509Certificate() == null) { ReturnCode returnCode = ReturnCode.NOT_AUTHORIZED_5;
if (connectMessage.payload().userName() == null ^ connectMessage.payload().passwordInBytes() == null) { if (sslHandler == null || getX509Certificate() == null) {
returnCode = ReturnCode.BAD_USERNAME_OR_PASSWORD; if (connectMessage.payload().userName() == null ^ connectMessage.payload().passwordInBytes() == null) {
} else if (!StringUtils.isBlank(connectMessage.payload().clientIdentifier())) { returnCode = ReturnCode.BAD_USERNAME_OR_PASSWORD;
returnCode = ReturnCode.CLIENT_IDENTIFIER_NOT_VALID; } 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(); ctx.close();
} else { } else {
context.onAuthSuccess(address); context.onAuthSuccess(address);