From cdf76080c577329bf831201172ab63431aded2d1 Mon Sep 17 00:00:00 2001 From: andrea Date: Wed, 28 Aug 2013 21:50:19 +0200 Subject: [PATCH] Moved testCleanSession_correctlyClientSubscriptions from custome API to Fuse's --- .../server/ServerIntegrationFuseTest.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/broker/src/test/java/org/dna/mqtt/moquette/server/ServerIntegrationFuseTest.java b/broker/src/test/java/org/dna/mqtt/moquette/server/ServerIntegrationFuseTest.java index 9b7e25f4..27dcef09 100644 --- a/broker/src/test/java/org/dna/mqtt/moquette/server/ServerIntegrationFuseTest.java +++ b/broker/src/test/java/org/dna/mqtt/moquette/server/ServerIntegrationFuseTest.java @@ -8,6 +8,7 @@ import org.junit.Test; import java.io.File; import java.io.IOException; +import java.util.concurrent.TimeUnit; import static org.junit.Assert.*; @@ -106,6 +107,31 @@ public class ServerIntegrationFuseTest { assertEquals("/topic", msg.getTopic()); } + /** + * Check that after a client has connected with clean session false, subscribed + * to some topic and exited, if it reconnect with clean session true, the m_server + * correctly cleanup every previous subscription + */ + @Test + public void testCleanSession_correctlyClientSubscriptions() throws Exception { + MQTT localMqtt = new MQTT(m_mqtt); + localMqtt.setCleanSession(false); + BlockingConnection connection = localMqtt.blockingConnection(); + connection.connect(); + Topic[] topics = {new Topic("/topic", QoS.AT_MOST_ONCE)}; + connection.subscribe(topics); + connection.disconnect(); + + //the client reconnects but with cleanSession = true and publish + m_connection = m_mqtt.blockingConnection(); + m_connection.connect(); + m_connection.publish("/topic", "Test my payload".getBytes(), QoS.AT_MOST_ONCE, false); + + //Verify that no publish reach the previous subscription + Message msg = m_connection.receive(1, TimeUnit.SECONDS); + assertNull(msg); + } + @Test public void testPublishWithQoS1() throws Exception { m_connection = m_mqtt.blockingConnection();