broker/ProtocolProcessor_CONNECT_Test: code formatter used
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
*
|
||||
* You may elect to redistribute this code under either of these licenses.
|
||||
*/
|
||||
|
||||
package io.moquette.spi.impl;
|
||||
|
||||
import io.moquette.server.netty.MessageBuilder;
|
||||
@@ -30,12 +31,10 @@ import io.netty.handler.codec.mqtt.MqttSubscribeMessage;
|
||||
import io.netty.handler.codec.mqtt.MqttVersion;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import static io.moquette.spi.impl.NettyChannelAssertions.assertEqualsConnAck;
|
||||
import static io.moquette.spi.impl.NettyChannelAssertions.assertEqualsSubAck;
|
||||
import static io.netty.handler.codec.mqtt.MqttConnectReturnCode.*;
|
||||
@@ -59,19 +58,17 @@ public class ProtocolProcessor_CONNECT_Test {
|
||||
|
||||
@Before
|
||||
public void setUp() throws InterruptedException {
|
||||
connMsg = MessageBuilder.connect()
|
||||
.protocolVersion(MqttVersion.MQTT_3_1)
|
||||
.cleanSession(true);
|
||||
connMsg = MessageBuilder.connect().protocolVersion(MqttVersion.MQTT_3_1).cleanSession(true);
|
||||
|
||||
m_session = new EmbeddedChannel();
|
||||
|
||||
//sleep to let the messaging batch processor to process the initEvent
|
||||
// sleep to let the messaging batch processor to process the initEvent
|
||||
Thread.sleep(300);
|
||||
MemoryStorageService memStorage = new MemoryStorageService();
|
||||
memStorage.initStore();
|
||||
m_messagesStore = memStorage.messagesStore();
|
||||
m_sessionStore = memStorage.sessionsStore();
|
||||
//m_messagesStore.initStore();
|
||||
// m_messagesStore.initStore();
|
||||
|
||||
Set<String> clientIds = new HashSet<>();
|
||||
clientIds.add(ProtocolProcessorTest.FAKE_CLIENT_ID);
|
||||
@@ -82,284 +79,273 @@ public class ProtocolProcessor_CONNECT_Test {
|
||||
subscriptions = new SubscriptionsStore();
|
||||
subscriptions.init(m_sessionStore);
|
||||
m_processor = new ProtocolProcessor();
|
||||
m_processor.init(subscriptions, m_messagesStore, m_sessionStore, m_mockAuthenticator, true,
|
||||
new PermitAllAuthorizator(), ProtocolProcessorTest.NO_OBSERVERS_INTERCEPTOR);
|
||||
m_processor.init(
|
||||
subscriptions,
|
||||
m_messagesStore,
|
||||
m_sessionStore,
|
||||
m_mockAuthenticator,
|
||||
true,
|
||||
new PermitAllAuthorizator(),
|
||||
ProtocolProcessorTest.NO_OBSERVERS_INTERCEPTOR);
|
||||
}
|
||||
|
||||
// @Test
|
||||
// public void testHandleConnect_BadProtocol() {
|
||||
// connMsg.setProtocolVersion((byte) 0x02);
|
||||
//
|
||||
// //Exercise
|
||||
// m_processor.processConnect(m_session, connMsg);
|
||||
//
|
||||
// //Verify
|
||||
// assertEqualsConnAck(UNNACEPTABLE_PROTOCOL_VERSION, m_session.readOutbound());
|
||||
// assertFalse("Connection should be closed by the broker.", m_session.isOpen());
|
||||
// }
|
||||
// @Test
|
||||
// public void testHandleConnect_BadProtocol() {
|
||||
// connMsg.setProtocolVersion((byte) 0x02);
|
||||
//
|
||||
// //Exercise
|
||||
// m_processor.processConnect(m_session, connMsg);
|
||||
//
|
||||
// //Verify
|
||||
// assertEqualsConnAck(UNNACEPTABLE_PROTOCOL_VERSION, m_session.readOutbound());
|
||||
// assertFalse("Connection should be closed by the broker.", m_session.isOpen());
|
||||
// }
|
||||
|
||||
@Test
|
||||
public void testConnect_badClientID() {
|
||||
connMsg.clientId("extremely_long_clientID_greater_than_23").build();
|
||||
|
||||
//Exercise
|
||||
// Exercise
|
||||
m_processor.processConnect(m_session, connMsg.clientId("extremely_long_clientID_greater_than_23").build());
|
||||
|
||||
//Verify
|
||||
// Verify
|
||||
assertEqualsConnAck(CONNECTION_ACCEPTED, m_session.readOutbound());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWill() {
|
||||
MqttConnectMessage msg = connMsg
|
||||
.clientId(ProtocolProcessorTest.FAKE_CLIENT_ID)
|
||||
.willFlag(true)
|
||||
.willTopic("topic")
|
||||
.willMessage("Topic message")
|
||||
.build();
|
||||
MqttConnectMessage msg = connMsg.clientId(ProtocolProcessorTest.FAKE_CLIENT_ID).willFlag(true)
|
||||
.willTopic("topic").willMessage("Topic message").build();
|
||||
|
||||
//Exercise
|
||||
//m_handler.setMessaging(mockedMessaging);
|
||||
// Exercise
|
||||
// m_handler.setMessaging(mockedMessaging);
|
||||
m_processor.processConnect(m_session, msg);
|
||||
|
||||
//Verify
|
||||
// Verify
|
||||
assertEqualsConnAck(CONNECTION_ACCEPTED, m_session.readOutbound());
|
||||
assertTrue("Connection is accepted and therefore should remain open.", m_session.isOpen());
|
||||
//TODO verify the call
|
||||
/*verify(mockedMessaging).publish(eq("topic"), eq("Topic message".getBytes()),
|
||||
any(AbstractMessage.QOSType.class), anyBoolean(), eq("123"), any(IoSession.class));*/
|
||||
// TODO verify the call
|
||||
/*
|
||||
* verify(mockedMessaging).publish(eq("topic"), eq("Topic message".getBytes()),
|
||||
* any(AbstractMessage.QOSType.class), anyBoolean(), eq("123"), any(IoSession.class));
|
||||
*/
|
||||
}
|
||||
|
||||
@Test
|
||||
public void validAuthentication() {
|
||||
MqttConnectMessage msg = connMsg
|
||||
.clientId(ProtocolProcessorTest.FAKE_CLIENT_ID)
|
||||
.hasUser()
|
||||
.hasPassword()
|
||||
.username(ProtocolProcessorTest.TEST_USER)
|
||||
.password(ProtocolProcessorTest.TEST_PWD)
|
||||
.build();
|
||||
MqttConnectMessage msg = connMsg.clientId(ProtocolProcessorTest.FAKE_CLIENT_ID).hasUser().hasPassword()
|
||||
.username(ProtocolProcessorTest.TEST_USER).password(ProtocolProcessorTest.TEST_PWD).build();
|
||||
|
||||
//Exercise
|
||||
// Exercise
|
||||
m_processor.processConnect(m_session, msg);
|
||||
|
||||
//Verify
|
||||
// Verify
|
||||
assertEqualsConnAck(CONNECTION_ACCEPTED, m_session.readOutbound());
|
||||
assertTrue("Connection is accepted and therefore should remain open.", m_session.isOpen());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void noPasswdAuthentication() {
|
||||
MqttConnectMessage msg = connMsg
|
||||
.clientId(ProtocolProcessorTest.FAKE_CLIENT_ID)
|
||||
.hasUser()
|
||||
.username(ProtocolProcessorTest.TEST_USER)
|
||||
.build();
|
||||
MqttConnectMessage msg = connMsg.clientId(ProtocolProcessorTest.FAKE_CLIENT_ID).hasUser()
|
||||
.username(ProtocolProcessorTest.TEST_USER).build();
|
||||
|
||||
//Exercise
|
||||
// Exercise
|
||||
m_processor.processConnect(m_session, msg);
|
||||
|
||||
//Verify
|
||||
// Verify
|
||||
assertEqualsConnAck(CONNECTION_REFUSED_BAD_USER_NAME_OR_PASSWORD, m_session.readOutbound());
|
||||
assertFalse("Connection should be closed by the broker.", m_session.isOpen());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void invalidAuthentication() {
|
||||
MqttConnectMessage msg = connMsg
|
||||
.clientId(ProtocolProcessorTest.FAKE_CLIENT_ID)
|
||||
.hasUser()
|
||||
.hasPassword()
|
||||
.username(ProtocolProcessorTest.TEST_USER + "_fake")
|
||||
.password(ProtocolProcessorTest.TEST_PWD)
|
||||
.build();
|
||||
MqttConnectMessage msg = connMsg.clientId(ProtocolProcessorTest.FAKE_CLIENT_ID).hasUser().hasPassword()
|
||||
.username(ProtocolProcessorTest.TEST_USER + "_fake").password(ProtocolProcessorTest.TEST_PWD).build();
|
||||
|
||||
//Exercise
|
||||
// Exercise
|
||||
m_processor.processConnect(m_session, msg);
|
||||
|
||||
//Verify
|
||||
// Verify
|
||||
assertEqualsConnAck(CONNECTION_REFUSED_BAD_USER_NAME_OR_PASSWORD, m_session.readOutbound());
|
||||
assertFalse("Connection should be closed by the broker.", m_session.isOpen());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void prohibitAnonymousClient() {
|
||||
MqttConnectMessage msg = connMsg
|
||||
.clientId(ProtocolProcessorTest.FAKE_CLIENT_ID)
|
||||
.build();
|
||||
m_processor.init(subscriptions, m_messagesStore, m_sessionStore, m_mockAuthenticator, false,
|
||||
new PermitAllAuthorizator(), ProtocolProcessorTest.NO_OBSERVERS_INTERCEPTOR);
|
||||
MqttConnectMessage msg = connMsg.clientId(ProtocolProcessorTest.FAKE_CLIENT_ID).build();
|
||||
m_processor.init(
|
||||
subscriptions,
|
||||
m_messagesStore,
|
||||
m_sessionStore,
|
||||
m_mockAuthenticator,
|
||||
false,
|
||||
new PermitAllAuthorizator(),
|
||||
ProtocolProcessorTest.NO_OBSERVERS_INTERCEPTOR);
|
||||
|
||||
//Exercise
|
||||
// Exercise
|
||||
m_processor.processConnect(m_session, msg);
|
||||
|
||||
//Verify
|
||||
// Verify
|
||||
assertEqualsConnAck(CONNECTION_REFUSED_BAD_USER_NAME_OR_PASSWORD, m_session.readOutbound());
|
||||
assertFalse("Connection should be closed by the broker.", m_session.isOpen());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void prohibitAnonymousClient_providingUsername() {
|
||||
MqttConnectMessage msg = connMsg
|
||||
.clientId(ProtocolProcessorTest.FAKE_CLIENT_ID)
|
||||
.hasUser()
|
||||
.username(ProtocolProcessorTest.TEST_USER + "_fake")
|
||||
.build();
|
||||
m_processor.init(subscriptions, m_messagesStore, m_sessionStore, m_mockAuthenticator, false,
|
||||
new PermitAllAuthorizator(), ProtocolProcessorTest.NO_OBSERVERS_INTERCEPTOR);
|
||||
MqttConnectMessage msg = connMsg.clientId(ProtocolProcessorTest.FAKE_CLIENT_ID).hasUser()
|
||||
.username(ProtocolProcessorTest.TEST_USER + "_fake").build();
|
||||
m_processor.init(
|
||||
subscriptions,
|
||||
m_messagesStore,
|
||||
m_sessionStore,
|
||||
m_mockAuthenticator,
|
||||
false,
|
||||
new PermitAllAuthorizator(),
|
||||
ProtocolProcessorTest.NO_OBSERVERS_INTERCEPTOR);
|
||||
|
||||
//Exercise
|
||||
// Exercise
|
||||
m_processor.processConnect(m_session, msg);
|
||||
|
||||
//Verify
|
||||
// Verify
|
||||
assertEqualsConnAck(CONNECTION_REFUSED_BAD_USER_NAME_OR_PASSWORD, m_session.readOutbound());
|
||||
assertFalse("Connection should be closed by the broker.", m_session.isOpen());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void acceptAnonymousClient() {
|
||||
MqttConnectMessage msg = connMsg
|
||||
.clientId(ProtocolProcessorTest.FAKE_CLIENT_ID)
|
||||
.build();
|
||||
m_processor.init(subscriptions, m_messagesStore, m_sessionStore, m_mockAuthenticator, true,
|
||||
new PermitAllAuthorizator(), ProtocolProcessorTest.NO_OBSERVERS_INTERCEPTOR);
|
||||
MqttConnectMessage msg = connMsg.clientId(ProtocolProcessorTest.FAKE_CLIENT_ID).build();
|
||||
m_processor.init(
|
||||
subscriptions,
|
||||
m_messagesStore,
|
||||
m_sessionStore,
|
||||
m_mockAuthenticator,
|
||||
true,
|
||||
new PermitAllAuthorizator(),
|
||||
ProtocolProcessorTest.NO_OBSERVERS_INTERCEPTOR);
|
||||
|
||||
//Exercise
|
||||
// Exercise
|
||||
m_processor.processConnect(m_session, msg);
|
||||
|
||||
//Verify
|
||||
// Verify
|
||||
assertEqualsConnAck(CONNECTION_ACCEPTED, m_session.readOutbound());
|
||||
assertTrue("Connection is accepted and therefore should remain open.", m_session.isOpen());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void connectWithCleanSessionUpdateClientSession() throws InterruptedException {
|
||||
m_processor.init(subscriptions, m_messagesStore, m_sessionStore, m_mockAuthenticator, true,
|
||||
new PermitAllAuthorizator(), ProtocolProcessorTest.NO_OBSERVERS_INTERCEPTOR);
|
||||
m_processor.init(
|
||||
subscriptions,
|
||||
m_messagesStore,
|
||||
m_sessionStore,
|
||||
m_mockAuthenticator,
|
||||
true,
|
||||
new PermitAllAuthorizator(),
|
||||
ProtocolProcessorTest.NO_OBSERVERS_INTERCEPTOR);
|
||||
|
||||
//first connect with clean session true
|
||||
MqttConnectMessage msg = connMsg
|
||||
.clientId(ProtocolProcessorTest.FAKE_CLIENT_ID)
|
||||
.cleanSession(true)
|
||||
.build();
|
||||
// first connect with clean session true
|
||||
MqttConnectMessage msg = connMsg.clientId(ProtocolProcessorTest.FAKE_CLIENT_ID).cleanSession(true).build();
|
||||
m_processor.processConnect(m_session, msg);
|
||||
assertEqualsConnAck(CONNECTION_ACCEPTED, m_session.readOutbound());
|
||||
m_processor.processDisconnect(m_session);
|
||||
assertFalse(m_session.isOpen());
|
||||
|
||||
//second connect with clean session false
|
||||
// second connect with clean session false
|
||||
m_session = new EmbeddedChannel();
|
||||
MqttConnectMessage secondConnMsg = MessageBuilder.connect()
|
||||
.clientId(ProtocolProcessorTest.FAKE_CLIENT_ID)
|
||||
.protocolVersion(MqttVersion.MQTT_3_1)
|
||||
.build();
|
||||
MqttConnectMessage secondConnMsg = MessageBuilder.connect().clientId(ProtocolProcessorTest.FAKE_CLIENT_ID)
|
||||
.protocolVersion(MqttVersion.MQTT_3_1).build();
|
||||
|
||||
m_processor.processConnect(m_session, secondConnMsg);
|
||||
assertEqualsConnAck(CONNECTION_ACCEPTED, m_session.readOutbound());
|
||||
|
||||
//Verify client session is clean false
|
||||
// Verify client session is clean false
|
||||
ClientSession session = m_sessionStore.sessionForClient(ProtocolProcessorTest.FAKE_CLIENT_ID);
|
||||
assertFalse(session.isCleanSession());
|
||||
|
||||
//Verify
|
||||
//assertEqualsConnAck(CONNECTION_ACCEPTED, m_session.readOutbound());
|
||||
// Verify
|
||||
// assertEqualsConnAck(CONNECTION_ACCEPTED, m_session.readOutbound());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void connectWithSameClientIDBadCredentialsDoesntDropExistingClient() {
|
||||
//Connect a client1
|
||||
MqttConnectMessage msg = connMsg
|
||||
.clientId(ProtocolProcessorTest.FAKE_CLIENT_ID)
|
||||
.hasUser()
|
||||
.hasPassword()
|
||||
.username(ProtocolProcessorTest.TEST_USER)
|
||||
.password(ProtocolProcessorTest.TEST_PWD)
|
||||
.build();
|
||||
// Connect a client1
|
||||
MqttConnectMessage msg = connMsg.clientId(ProtocolProcessorTest.FAKE_CLIENT_ID).hasUser().hasPassword()
|
||||
.username(ProtocolProcessorTest.TEST_USER).password(ProtocolProcessorTest.TEST_PWD).build();
|
||||
m_processor.processConnect(m_session, msg);
|
||||
assertEqualsConnAck(CONNECTION_ACCEPTED, m_session.readOutbound());
|
||||
|
||||
//create another connect same clientID but with bad credentials
|
||||
MqttConnectMessage evilClientConnMsg = MessageBuilder.connect().
|
||||
protocolVersion(MqttVersion.MQTT_3_1)
|
||||
.clientId(ProtocolProcessorTest.FAKE_CLIENT_ID)
|
||||
.hasUser().username(ProtocolProcessorTest.EVIL_TEST_USER)
|
||||
.hasPassword().password(ProtocolProcessorTest.EVIL_TEST_PWD)
|
||||
.build();
|
||||
// create another connect same clientID but with bad credentials
|
||||
MqttConnectMessage evilClientConnMsg = MessageBuilder.connect().protocolVersion(MqttVersion.MQTT_3_1)
|
||||
.clientId(ProtocolProcessorTest.FAKE_CLIENT_ID).hasUser().username(ProtocolProcessorTest.EVIL_TEST_USER)
|
||||
.hasPassword().password(ProtocolProcessorTest.EVIL_TEST_PWD).build();
|
||||
|
||||
EmbeddedChannel evilSession = new EmbeddedChannel();
|
||||
|
||||
//Exercise
|
||||
// Exercise
|
||||
m_processor.processConnect(evilSession, evilClientConnMsg);
|
||||
|
||||
//Verify
|
||||
//the evil client gets a not auth notification
|
||||
// Verify
|
||||
// the evil client gets a not auth notification
|
||||
assertEqualsConnAck(CONNECTION_REFUSED_BAD_USER_NAME_OR_PASSWORD, evilSession.readOutbound());
|
||||
//the good client remains connected
|
||||
// the good client remains connected
|
||||
assertTrue(m_session.isOpen());
|
||||
assertFalse(evilSession.isOpen());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testConnAckContainsSessionPresentFlag() throws InterruptedException {
|
||||
MqttConnectMessage msg = connMsg
|
||||
.clientId(ProtocolProcessorTest.FAKE_CLIENT_ID)
|
||||
.protocolVersion(MqttVersion.MQTT_3_1_1)
|
||||
.build();
|
||||
MqttConnectMessage msg = connMsg.clientId(ProtocolProcessorTest.FAKE_CLIENT_ID)
|
||||
.protocolVersion(MqttVersion.MQTT_3_1_1).build();
|
||||
NettyUtils.clientID(m_session, ProtocolProcessorTest.FAKE_CLIENT_ID);
|
||||
NettyUtils.cleanSession(m_session, false);
|
||||
|
||||
//Connect a first time
|
||||
// Connect a first time
|
||||
m_processor.processConnect(m_session, msg);
|
||||
//disconnect
|
||||
// disconnect
|
||||
m_processor.processDisconnect(m_session);
|
||||
|
||||
//Exercise, reconnect
|
||||
// Exercise, reconnect
|
||||
EmbeddedChannel firstReceiverSession = new EmbeddedChannel();
|
||||
m_processor.processConnect(firstReceiverSession, msg);
|
||||
|
||||
//Verify
|
||||
// Verify
|
||||
assertEqualsConnAck(CONNECTION_ACCEPTED, firstReceiverSession.readOutbound());
|
||||
assertTrue("Connection is accepted and therefore should remain open.", firstReceiverSession.isOpen());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testMultipleReconnection() throws InterruptedException {
|
||||
//connect with clean a false and subscribe to a topic
|
||||
MqttConnectMessage msg = MessageBuilder.connect()
|
||||
.clientId(ProtocolProcessorTest.FAKE_CLIENT_ID)
|
||||
.protocolVersion(MqttVersion.MQTT_3_1_1)
|
||||
.build();
|
||||
// connect with clean a false and subscribe to a topic
|
||||
MqttConnectMessage msg = MessageBuilder.connect().clientId(ProtocolProcessorTest.FAKE_CLIENT_ID)
|
||||
.protocolVersion(MqttVersion.MQTT_3_1_1).build();
|
||||
m_processor.processConnect(m_session, msg);
|
||||
assertEqualsConnAck(CONNECTION_ACCEPTED, m_session.readOutbound());
|
||||
assertTrue("Connection is accepted and therefore should remain open.", m_session.isOpen());
|
||||
|
||||
//subscribe
|
||||
// subscribe
|
||||
MqttSubscribeMessage subscribeMsg = MessageBuilder.subscribe()
|
||||
.addSubscription(MqttQoS.AT_MOST_ONCE, ProtocolProcessorTest.FAKE_TOPIC)
|
||||
.messageId(10)
|
||||
.build();
|
||||
.addSubscription(MqttQoS.AT_MOST_ONCE, ProtocolProcessorTest.FAKE_TOPIC).messageId(10).build();
|
||||
|
||||
NettyUtils.clientID(m_session, ProtocolProcessorTest.FAKE_CLIENT_ID);
|
||||
NettyUtils.cleanSession(m_session, false);
|
||||
m_processor.processSubscribe(m_session, subscribeMsg);
|
||||
Subscription expectedSubscription = new Subscription(ProtocolProcessorTest.FAKE_CLIENT_ID, ProtocolProcessorTest.FAKE_TOPIC,
|
||||
Subscription expectedSubscription = new Subscription(
|
||||
ProtocolProcessorTest.FAKE_CLIENT_ID,
|
||||
ProtocolProcessorTest.FAKE_TOPIC,
|
||||
MqttQoS.AT_MOST_ONCE);
|
||||
assertTrue(subscriptions.contains(expectedSubscription));
|
||||
assertEqualsSubAck(m_session.readOutbound());
|
||||
|
||||
//disconnect
|
||||
// disconnect
|
||||
m_processor.processDisconnect(m_session);
|
||||
assertFalse(m_session.isOpen());
|
||||
|
||||
//reconnect clean session a false
|
||||
// reconnect clean session a false
|
||||
m_session = new EmbeddedChannel();
|
||||
m_processor.processConnect(m_session, msg);
|
||||
assertEqualsConnAck(CONNECTION_ACCEPTED, m_session.readOutbound());
|
||||
assertTrue("Connection is accepted and therefore should remain open.", m_session.isOpen());
|
||||
|
||||
//verify that the first subscription is still preserved
|
||||
// verify that the first subscription is still preserved
|
||||
assertTrue(subscriptions.contains(expectedSubscription));
|
||||
}
|
||||
|
||||
@@ -367,18 +353,25 @@ public class ProtocolProcessor_CONNECT_Test {
|
||||
public void testZeroByteClientIdWithoutCleanSession() {
|
||||
// Allow zero byte client ids
|
||||
m_processor = new ProtocolProcessor();
|
||||
m_processor.init(subscriptions, m_messagesStore, m_sessionStore, m_mockAuthenticator, true, true,
|
||||
new PermitAllAuthorizator(), ProtocolProcessorTest.NO_OBSERVERS_INTERCEPTOR);
|
||||
m_processor.init(
|
||||
subscriptions,
|
||||
m_messagesStore,
|
||||
m_sessionStore,
|
||||
m_mockAuthenticator,
|
||||
true,
|
||||
true,
|
||||
new PermitAllAuthorizator(),
|
||||
ProtocolProcessorTest.NO_OBSERVERS_INTERCEPTOR);
|
||||
|
||||
// Connect message without clean session set to true but client id is still null
|
||||
MqttConnectMessage msg = MessageBuilder.connect()
|
||||
.clientId(null)
|
||||
.protocolVersion(MqttVersion.MQTT_3_1_1)
|
||||
MqttConnectMessage msg = MessageBuilder.connect().clientId(null).protocolVersion(MqttVersion.MQTT_3_1_1)
|
||||
.build();
|
||||
|
||||
m_processor.processConnect(m_session, msg);
|
||||
assertEqualsConnAck("Identifier should be rejected due to having clean session set to false.",
|
||||
CONNECTION_REFUSED_IDENTIFIER_REJECTED, m_session.readOutbound());
|
||||
assertEqualsConnAck(
|
||||
"Identifier should be rejected due to having clean session set to false.",
|
||||
CONNECTION_REFUSED_IDENTIFIER_REJECTED,
|
||||
m_session.readOutbound());
|
||||
|
||||
assertFalse("Connection should be closed by the broker.", m_session.isOpen());
|
||||
}
|
||||
@@ -387,19 +380,26 @@ public class ProtocolProcessor_CONNECT_Test {
|
||||
public void testZeroByteClientIdWithCleanSession() {
|
||||
// Allow zero byte client ids
|
||||
m_processor = new ProtocolProcessor();
|
||||
m_processor.init(subscriptions, m_messagesStore, m_sessionStore, m_mockAuthenticator, true, true,
|
||||
new PermitAllAuthorizator(), ProtocolProcessorTest.NO_OBSERVERS_INTERCEPTOR);
|
||||
m_processor.init(
|
||||
subscriptions,
|
||||
m_messagesStore,
|
||||
m_sessionStore,
|
||||
m_mockAuthenticator,
|
||||
true,
|
||||
true,
|
||||
new PermitAllAuthorizator(),
|
||||
ProtocolProcessorTest.NO_OBSERVERS_INTERCEPTOR);
|
||||
|
||||
// Connect message with clean session set to true and client id is null.
|
||||
MqttConnectMessage msg = connMsg
|
||||
.clientId(null)
|
||||
.protocolVersion(MqttVersion.MQTT_3_1_1)
|
||||
.cleanSession(true)
|
||||
MqttConnectMessage msg = connMsg.clientId(null).protocolVersion(MqttVersion.MQTT_3_1_1).cleanSession(true)
|
||||
.build();
|
||||
|
||||
m_processor.processConnect(m_session, msg);
|
||||
assertEqualsConnAck("Connection should be accepted. A unique clientid should be generated" +
|
||||
" and clean session set to true.", CONNECTION_ACCEPTED, m_session.readOutbound());
|
||||
assertEqualsConnAck(
|
||||
"Connection should be accepted. A unique clientid should be generated"
|
||||
+ " and clean session set to true.",
|
||||
CONNECTION_ACCEPTED,
|
||||
m_session.readOutbound());
|
||||
|
||||
assertTrue("Connection should be valid and open,", m_session.isOpen());
|
||||
}
|
||||
@@ -407,15 +407,14 @@ public class ProtocolProcessor_CONNECT_Test {
|
||||
@Test
|
||||
public void testZeroByteClientIdNotAllowed() {
|
||||
// Connect message with clean session set to true and client id is null.
|
||||
MqttConnectMessage msg = connMsg
|
||||
.clientId(null)
|
||||
.protocolVersion(MqttVersion.MQTT_3_1_1)
|
||||
.cleanSession(true)
|
||||
MqttConnectMessage msg = connMsg.clientId(null).protocolVersion(MqttVersion.MQTT_3_1_1).cleanSession(true)
|
||||
.build();
|
||||
|
||||
m_processor.processConnect(m_session, msg);
|
||||
assertEqualsConnAck("Zero byte client identifiers are not allowed.",
|
||||
CONNECTION_REFUSED_IDENTIFIER_REJECTED, m_session.readOutbound());
|
||||
assertEqualsConnAck(
|
||||
"Zero byte client identifiers are not allowed.",
|
||||
CONNECTION_REFUSED_IDENTIFIER_REJECTED,
|
||||
m_session.readOutbound());
|
||||
|
||||
assertFalse("Connection should closed.", m_session.isOpen());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user