@@ -1161,6 +1161,35 @@ void test_MQTTV5_DeserializeConnackOnlyUserProperty( void )
11611161 TEST_ASSERT_EQUAL_INT ( MQTTBadResponse , status );
11621162}
11631163
1164+ void test_MQTTV5_DeserializeConnack_ReasonCodes ( void )
1165+ {
1166+ uint8_t buffer [ 50 ];
1167+ bool sessionPresent = false;
1168+ MQTTPropBuilder_t propBuffer = { 0 };
1169+
1170+ memset ( & properties , 0x00 , sizeof ( properties ) );
1171+ properties .maxPacketSize = 100 ;
1172+
1173+ packetInfo .pRemainingData = buffer ;
1174+ packetInfo .type = MQTT_PACKET_TYPE_CONNACK ;
1175+ packetInfo .remainingLength = 3 ;
1176+
1177+ buffer [ 0 ] = 0x00 ;
1178+ buffer [ 2 ] = 0x00 ;
1179+
1180+ buffer [ 1 ] = MQTT_REASON_CONNACK_USE_ANOTHER_SERVER ;
1181+ status = MQTT_DeserializeConnAck ( & packetInfo , & sessionPresent , & propBuffer , & properties );
1182+ TEST_ASSERT_EQUAL_INT ( MQTTServerRefused , status );
1183+
1184+ buffer [ 1 ] = MQTT_REASON_CONNACK_SERVER_MOVED ;
1185+ status = MQTT_DeserializeConnAck ( & packetInfo , & sessionPresent , & propBuffer , & properties );
1186+ TEST_ASSERT_EQUAL_INT ( MQTTServerRefused , status );
1187+
1188+ buffer [ 1 ] = MQTT_REASON_CONNACK_CONNECTION_RATE_EXCEEDED ;
1189+ status = MQTT_DeserializeConnAck ( & packetInfo , & sessionPresent , & propBuffer , & properties );
1190+ TEST_ASSERT_EQUAL_INT ( MQTTServerRefused , status );
1191+ }
1192+
11641193void test_MQTTV5_GetConnectPacketSize ( void )
11651194{
11661195 uint32_t remainingLength = 0 ;
@@ -2458,6 +2487,14 @@ void test_MQTTV5_GetSubscribePacketSize( void )
24582487 subscribeInfo .topicFilterLength = 65536 ;
24592488 status = MQTT_GetSubscribePacketSize ( & subscribeInfo , 1 , NULL , & remainingLength , & packetSize , 100 );
24602489 TEST_ASSERT_EQUAL_INT ( MQTTBadParameter , status );
2490+
2491+ subscribeInfo .topicFilterLength = MQTT_MAX_REMAINING_LENGTH ;
2492+ status = MQTT_GetSubscribePacketSize ( & subscribeInfo , 1 , NULL , & remainingLength , & packetSize , MQTT_MAX_PACKET_SIZE );
2493+ TEST_ASSERT_EQUAL_INT ( MQTTBadParameter , status );
2494+
2495+ subscribeInfo .topicFilterLength = TEST_TOPIC_NAME_LENGTH ;
2496+ status = MQTT_GetSubscribePacketSize ( & subscribeInfo , 1 , NULL , & remainingLength , & packetSize , 10 );
2497+ TEST_ASSERT_EQUAL_INT ( MQTTBadParameter , status );
24612498}
24622499
24632500void test_MQTTV5_GetSubscribePacketSize_HappyPath ( void )
@@ -2761,6 +2798,44 @@ void test_MQTT_SerializeSubscribe( void )
27612798 TEST_ASSERT_EQUAL_INT ( MQTTSuccess , status );
27622799}
27632800
2801+ void test_MQTT_SerializeSubscribe_NullTopicFilter ( void )
2802+ {
2803+ MQTTSubscribeInfo_t subscriptionList ;
2804+ uint32_t remainingLength = 20 ;
2805+ uint8_t buffer [ 100 ];
2806+ MQTTFixedBuffer_t fixedBuffer = { .pBuffer = buffer , .size = sizeof ( buffer ) };
2807+ MQTTStatus_t status ;
2808+
2809+ subscriptionList .pTopicFilter = NULL ;
2810+ subscriptionList .topicFilterLength = 10 ;
2811+ status = MQTT_SerializeSubscribe ( & subscriptionList , 1 , NULL , 1 , remainingLength , & fixedBuffer );
2812+ TEST_ASSERT_EQUAL_INT ( MQTTBadParameter , status );
2813+
2814+ subscriptionList .pTopicFilter = "test" ;
2815+ subscriptionList .topicFilterLength = 0 ;
2816+ status = MQTT_SerializeSubscribe ( & subscriptionList , 1 , NULL , 1 , remainingLength , & fixedBuffer );
2817+ TEST_ASSERT_EQUAL_INT ( MQTTBadParameter , status );
2818+ }
2819+
2820+ void test_MQTT_SerializeUnsubscribe_NullTopicFilter ( void )
2821+ {
2822+ MQTTSubscribeInfo_t subscriptionList ;
2823+ uint32_t remainingLength = 20 ;
2824+ uint8_t buffer [ 100 ];
2825+ MQTTFixedBuffer_t fixedBuffer = { .pBuffer = buffer , .size = sizeof ( buffer ) };
2826+ MQTTStatus_t status ;
2827+
2828+ subscriptionList .pTopicFilter = NULL ;
2829+ subscriptionList .topicFilterLength = 10 ;
2830+ status = MQTT_SerializeUnsubscribe ( & subscriptionList , 1 , NULL , 1 , remainingLength , & fixedBuffer );
2831+ TEST_ASSERT_EQUAL_INT ( MQTTBadParameter , status );
2832+
2833+ subscriptionList .pTopicFilter = "test" ;
2834+ subscriptionList .topicFilterLength = 0 ;
2835+ status = MQTT_SerializeUnsubscribe ( & subscriptionList , 1 , NULL , 1 , remainingLength , & fixedBuffer );
2836+ TEST_ASSERT_EQUAL_INT ( MQTTBadParameter , status );
2837+ }
2838+
27642839/**
27652840 * @brief Tests that MQTT_SerializeUnsubscribe works as intended.
27662841 */
@@ -3031,6 +3106,20 @@ void test_MQTTV5_GetUnsubscribePacketSize( void )
30313106 status = MQTT_GetUnsubscribePacketSize ( & subscribeInfo , 0 , NULL , & remainingLength , & packetSize , MQTT_MAX_PACKET_SIZE );
30323107 TEST_ASSERT_EQUAL_INT ( MQTTBadParameter , status );
30333108
3109+ subscribeInfo .topicFilterLength = 65536 ;
3110+ status = MQTT_GetUnsubscribePacketSize ( & subscribeInfo , 1 , NULL , & remainingLength , & packetSize , MQTT_MAX_PACKET_SIZE );
3111+ TEST_ASSERT_EQUAL_INT ( MQTTBadParameter , status );
3112+ subscribeInfo .topicFilterLength = TEST_TOPIC_NAME_LENGTH ;
3113+
3114+ subscribeInfo .topicFilterLength = MQTT_MAX_REMAINING_LENGTH ;
3115+ status = MQTT_GetUnsubscribePacketSize ( & subscribeInfo , 1 , NULL , & remainingLength , & packetSize , MQTT_MAX_PACKET_SIZE );
3116+ TEST_ASSERT_EQUAL_INT ( MQTTBadParameter , status );
3117+ subscribeInfo .topicFilterLength = TEST_TOPIC_NAME_LENGTH ;
3118+
3119+ subscribeInfo .topicFilterLength = TEST_TOPIC_NAME_LENGTH ;
3120+ status = MQTT_GetUnsubscribePacketSize ( & subscribeInfo , 1 , NULL , & remainingLength , & packetSize , 10 );
3121+ TEST_ASSERT_EQUAL_INT ( MQTTBadParameter , status );
3122+
30343123 MQTTPropBuilder_t propBuffer ;
30353124 propBuffer .pBuffer = NULL ;
30363125 status = MQTT_GetUnsubscribePacketSize ( & subscribeInfo , 1 , & propBuffer , & remainingLength , & packetSize , MQTT_MAX_PACKET_SIZE );
@@ -3321,29 +3410,30 @@ void test_MQTT_SerializeDisconnect( void )
33213410 MQTTStatus_t status = MQTTSuccess ;
33223411 uint32_t remainingLength = 0 ;
33233412 MQTTPropBuilder_t propBuffer = { 0 };
3413+ MQTTSuccessFailReasonCode_t reasonCode = MQTT_REASON_DISCONNECT_NORMAL_DISCONNECTION ;
33243414
33253415 /* Buffer size less than disconnect request fails. */
33263416 fixedBuffer .size = 1 ;
3327- status = MQTT_SerializeDisconnect ( NULL , MQTT_REASON_DISCONNECT_NORMAL_DISCONNECTION , remainingLength , & fixedBuffer );
3417+ status = MQTT_SerializeDisconnect ( NULL , & reasonCode , remainingLength , & fixedBuffer );
33283418 TEST_ASSERT_EQUAL_INT ( MQTTNoMemory , status );
33293419
33303420 status = MQTT_SerializeDisconnect ( & propBuffer , NULL , remainingLength , & fixedBuffer );
33313421 TEST_ASSERT_EQUAL_INT ( MQTTBadParameter , status );
33323422
33333423 /* NULL buffer fails. */
3334- status = MQTT_SerializeDisconnect ( NULL , MQTT_REASON_DISCONNECT_NORMAL_DISCONNECTION , remainingLength , NULL );
3424+ status = MQTT_SerializeDisconnect ( NULL , & reasonCode , remainingLength , NULL );
33353425 TEST_ASSERT_EQUAL_INT ( MQTTBadParameter , status );
33363426
33373427 /* Restore the fixed buffer. */
33383428 padAndResetBuffer ( buffer , sizeof ( buffer ) );
33393429 fixedBuffer .pBuffer = & buffer [ BUFFER_PADDING_LENGTH ];
33403430 fixedBuffer .size = bufferSize ;
3341- status = MQTT_GetDisconnectPacketSize ( NULL , & remainingLength , & packetSize , MQTT_MAX_PACKET_SIZE , MQTT_REASON_DISCONNECT_NORMAL_DISCONNECTION );
3431+ status = MQTT_GetDisconnectPacketSize ( NULL , & remainingLength , & packetSize , MQTT_MAX_PACKET_SIZE , & reasonCode );
33423432 TEST_ASSERT_EQUAL_INT ( MQTTSuccess , status );
33433433 /* Make sure buffer has enough space */
33443434 TEST_ASSERT_GREATER_OR_EQUAL ( packetSize , bufferSize );
33453435 /* Good case succeeds. */
3346- status = MQTT_SerializeDisconnect ( NULL , MQTT_REASON_DISCONNECT_NORMAL_DISCONNECTION , remainingLength , & fixedBuffer );
3436+ status = MQTT_SerializeDisconnect ( NULL , & reasonCode , remainingLength , & fixedBuffer );
33473437 TEST_ASSERT_EQUAL_INT ( MQTTSuccess , status );
33483438 checkBufferOverflow ( buffer , sizeof ( buffer ) );
33493439 * pIterator ++ = MQTT_PACKET_TYPE_DISCONNECT ;
@@ -3357,8 +3447,6 @@ void test_MQTT_SerializeDisconnect( void )
33573447 propBuffer .pBuffer = buf ;
33583448 propBuffer .bufferLength = sizeof ( buf );
33593449
3360- MQTTSuccessFailReasonCode_t reasonCode = MQTT_REASON_DISCONNECT_NORMAL_DISCONNECTION ;
3361-
33623450 MQTTPropAdd_SessionExpiry ( & propBuffer , 10 , NULL );
33633451 status = MQTT_GetDisconnectPacketSize ( & propBuffer ,
33643452 & remainingLength ,
@@ -3463,8 +3551,8 @@ void test_MQTT_DeserializeAck_pingresp( void )
34633551 ( void ) memset ( & mqttPacketInfo , 0x00 , sizeof ( mqttPacketInfo ) );
34643552 mqttPacketInfo .type = MQTT_PACKET_TYPE_PINGRESP ;
34653553 mqttPacketInfo .remainingLength = MQTT_PACKET_PINGRESP_REMAINING_LENGTH + 1 ;
3466- status = MQTT_DeserializeAck ( & mqttPacketInfo , NULL , NULL , NULL , & properties );
3467- TEST_ASSERT_EQUAL_INT ( MQTTBadParameter , status );
3554+ status = MQTT_DeserializeAck ( & mqttPacketInfo , NULL , & reasonCode , NULL , & properties );
3555+ TEST_ASSERT_EQUAL_INT ( MQTTBadResponse , status );
34683556
34693557 /* Process a valid PINGRESP. */
34703558 mqttPacketInfo .type = MQTT_PACKET_TYPE_PINGRESP ;
@@ -4966,8 +5054,9 @@ void test_getProps( void )
49665054 const char * pAuthData ;
49675055 size_t authDataLength ;
49685056 MQTTUserProperty_t userProp ;
4969-
49705057 size_t counter = 0U ;
5058+
5059+ ( void ) counter ;
49715060 status = MQTT_GetNextPropertyType ( NULL , & propCurrentIndex , & propertyId );
49725061 TEST_ASSERT_EQUAL_INT ( MQTTBadParameter , status );
49735062
0 commit comments