private void testMessageWithOnlyFixedHeaderAndMessageIdVariableHeader(MqttMessageType messageType)
      throws Exception {
    MqttMessage message = createMessageWithFixedHeaderAndMessageIdVariableHeader(messageType);

    ByteBuf byteBuf = MqttEncoder.doEncode(ALLOCATOR, message);

    final List<Object> out = new LinkedList<>();
    mqttDecoder.decode(ctx, byteBuf, out);

    assertEquals("Expected one object bout got " + out.size(), 1, out.size());

    final MqttMessage decodedMessage = (MqttMessage) out.get(0);
    validateFixedHeaders(message.fixedHeader(), decodedMessage.fixedHeader());
    validateMessageIdVariableHeader(
        (MqttPacketIdVariableHeader) message.variableHeader(),
        (MqttPacketIdVariableHeader) decodedMessage.variableHeader());
  }