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))); }
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. }
internal void SendMessage(MqttConnectAckMessage ack) { throw new NotImplementedException(); }