public void OnMessageCallbackDoesNotGetCalledAfterClose() { var are = new AutoResetEvent(false); var ip = "1.1.1.1"; var port = 1883; var eventData = "Test data"; string connectionKey = "123"; var moqSocket = new MoqSocket(); var protocol = new MqttClientProtocol(new LogCompositor(), moqSocket); var bldr = new MqttConnectMessageBuilder { ClientId = "UnitTest" }; protocol.ConnectAsync(bldr, ip, port, SocketEncryption.None, eventData); var subscriptionItem = new SubscriptionItem { TopicName = "a/b/c", QualityOfService = QualityOfService.AtMostOnce }; var subClient = new SubscriptionClient(protocol, subscriptionItem, connectionKey); subClient.OnMessage(msg => { Assert.Fail("OnMessage callback was called after Close call."); are.Set(); }); subClient.Close(); moqSocket.ReceiveMessage(new MqttPublishMessageBuilder { TopicName = "a/b/c", Payload = new byte[] { 0x00, 0x01, 0x02 } }); are.WaitOne(3000); }
public void IsClosedCorrectlyReflectsStateOfObject() { var ip = "1.1.1.1"; var port = 1883; var eventData = "Test data"; string connectionKey = "123"; var moqSocket = new MoqSocket(); var protocol = new MqttClientProtocol(new LogCompositor(), moqSocket); var bldr = new MqttConnectMessageBuilder { ClientId = "UnitTest" }; protocol.ConnectAsync(bldr, ip, port, SocketEncryption.None, eventData); var subscriptionItem = new SubscriptionItem { TopicName = "a/b/+", QualityOfService = QualityOfService.AtMostOnce }; var subClient = new SubscriptionClient(protocol, subscriptionItem, connectionKey); Assert.IsTrue(subClient.IsClosed); subClient.OnMessage(msg => { Assert.IsNotNull(msg); Assert.IsTrue(msg.MessageType == MessageType.Publish); }); Assert.IsFalse(subClient.IsClosed); subClient.Close(); Assert.IsTrue(subClient.IsClosed); }