Fixed issue #43, not clean handlng of bad formatted topic filters during subscrion

This commit is contained in:
andrea
2015-06-20 18:27:43 +02:00
parent c4ebd75008
commit 867d78b650
7 changed files with 82 additions and 16 deletions
@@ -54,6 +54,7 @@ public class ProtocolProcessorTest {
final static String FAKE_CLIENT_ID2 = "FAKE_456";
final static String FAKE_PUBLISHER_ID = "Publisher";
final static String FAKE_TOPIC = "/news";
final static String BAD_FORMATTED_TOPIC = "#MQTTClient";
final static String TEST_USER = "fakeuser";
final static String TEST_PWD = "fakepwd";
@@ -456,6 +457,27 @@ public class ProtocolProcessorTest {
assertTrue(subscriptions.contains(expectedSubscription));
}
@Test
public void testSubscribeWithBadFormattedTopic() {
SubscribeMessage msg = new SubscribeMessage();
msg.addSubscription(new SubscribeMessage.Couple((byte)AbstractMessage.QOSType.MOST_ONE.ordinal(), BAD_FORMATTED_TOPIC));
m_session.setAttribute(NettyChannel.ATTR_KEY_CLIENTID, FAKE_CLIENT_ID);
m_session.setAttribute(NettyChannel.ATTR_KEY_CLEANSESSION, false);
subscriptions.clearAllSubscriptions();
assertEquals(0, subscriptions.size());
//Exercise
m_processor.processSubscribe(m_session, msg);
//Verify
assertEquals(0, subscriptions.size());
assertTrue(m_receivedMessage instanceof SubAckMessage);
List<QOSType> qosSubAcked = ((SubAckMessage) m_receivedMessage).types();
assertEquals(1, qosSubAcked.size());
assertEquals(QOSType.FAILURE, qosSubAcked.get(0));
}
@Test
public void testPublishOfRetainedMessage_afterNewSubscription() throws Exception {