Example #1
0
        public void UnacceptableProtocolVersion()
        {
            // Our test deserialization message, with the following properties. Note this message is not
            // yet a real MQTT message, because not everything is implemented, but it must be modified
            // and ammeneded as work progresses
            //
            // Message Specs________________
            // <20><02><00><00>
            var sampleMessage = new[]
            {
                (byte)0x20,
                (byte)0x02,
                (byte)0x0,
                (byte)0x1,
            };

            MqttMessage baseMessage = MqttMessage.CreateFrom(sampleMessage);

            Console.WriteLine(baseMessage.ToString());

            // check that the message was correctly identified as a connect message.
            Assert.IsType <MqttConnectAckMessage>(baseMessage);
            MqttConnectAckMessage message = (MqttConnectAckMessage)baseMessage;

            // validate the message deserialization
            Assert.Equal <bool>(false, message.Header.Duplicate);
            Assert.Equal <bool>(false, message.Header.Retain);
            Assert.Equal <MqttQos>(MqttQos.AtMostOnce, message.Header.Qos);
            Assert.Equal <MqttMessageType>(MqttMessageType.ConnectAck, message.Header.MessageType);
            Assert.Equal <int>(2, message.Header.MessageSize);

            // validate the variable header
            //Assert.Equal<int>(30, message.VariableHeader.KeepAlive);
            Assert.Equal <MqttConnectReturnCode>(MqttConnectReturnCode.UnacceptedProtocolVersion, message.VariableHeader.ReturnCode);
        }
        public void SuccessfullResponseCausesConnectionStateConnected()
        {
            // register a method to process the Connect message and respond with a ConnectAck message
            broker.SetMessageHandler((messageArrived) =>
            {
                MqttConnectMessage connect = (MqttConnectMessage)MqttMessage.CreateFrom(messageArrived);
                MqttConnectAckMessage ack  = new MqttConnectAckMessage().WithReturnCode(MqttConnectReturnCode.ConnectionAccepted);
                broker.SendMessage(ack);
            });

            var ch = new SynchronousMqttConnectionHandler();

            Assert.Equal <ConnectionState>(ConnectionState.Connected,
                                           ch.Connect(mockBrokerAddress, mockBrokerPort, new MqttConnectMessage().WithClientIdentifier(testClientId)));
        }
Example #3
0
        public void IdentifierRejected()
        {
            // our expected result
            var expected = new[]
            {
                (byte)0x20,
                (byte)0x02,
                (byte)0x0,
                (byte)0x2,
            };

            MqttConnectAckMessage msg = new MqttConnectAckMessage().WithReturnCode(MqttConnectReturnCode.IdentifierRejected);

            Console.WriteLine(msg);

            byte[] actual = MessageSerializationHelper.GetMessageBytes(msg);

            Assert.Equal <int>(expected.Length, actual.Length);
            Assert.Equal <byte>(expected[0], actual[0]); // msg type of header
            Assert.Equal <byte>(expected[1], actual[1]); // remaining length
            Assert.Equal <byte>(expected[2], actual[2]); // connect ack - compression? always empty
            Assert.Equal <byte>(expected[3], actual[3]); // return code.
        }
Example #4
0
 internal void SendMessage(MqttConnectAckMessage ack)
 {
     throw new NotImplementedException();
 }