@@ -427,6 +427,59 @@ def on_connect(mqttc, obj, flags, rc):
427427 packet_in = fake_broker .receive_packet (1 )
428428 assert not packet_in # Check connection is closed
429429
430+ @pytest .mark .parametrize ("user_payload,sent_payload" , [
431+ ("string" , b"string" ),
432+ (b"byte" , b"byte" ),
433+ (bytearray (b"bytearray" ), b"bytearray" ),
434+ (42 , b"42" ),
435+ (4.2 , b"4.2" ),
436+ (None , b"" ),
437+ ])
438+ def test_publish_various_payload (self , user_payload : client .PayloadType , sent_payload : bytes , fake_broker : FakeBroker ) -> None :
439+ mqttc = client .Client (
440+ CallbackAPIVersion .VERSION2 ,
441+ "test_publish_various_payload" ,
442+ transport = fake_broker .transport ,
443+ )
444+
445+ mqttc .connect ("localhost" , fake_broker .port )
446+ mqttc .loop_start ()
447+ mqttc .enable_logger ()
448+
449+ try :
450+ fake_broker .start ()
451+
452+ connect_packet = paho_test .gen_connect (
453+ "test_publish_various_payload" , keepalive = 60 ,
454+ proto_ver = client .MQTTv311 )
455+ fake_broker .expect_packet ("connect" , connect_packet )
456+
457+ connack_packet = paho_test .gen_connack (rc = 0 )
458+ count = fake_broker .send_packet (connack_packet )
459+ assert count # Check connection was not closed
460+ assert count == len (connack_packet )
461+
462+ mqttc .publish ("test" , user_payload )
463+
464+ publish_packet = paho_test .gen_publish (
465+ b"test" , payload = sent_payload , qos = 0
466+ )
467+ fake_broker .expect_packet ("publish" , publish_packet )
468+
469+ mqttc .disconnect ()
470+
471+ disconnect_packet = paho_test .gen_disconnect ()
472+ packet_in = fake_broker .receive_packet (1000 )
473+ assert packet_in # Check connection was not closed
474+ assert packet_in == disconnect_packet
475+
476+ finally :
477+ mqttc .loop_stop ()
478+
479+ packet_in = fake_broker .receive_packet (1 )
480+ assert not packet_in # Check connection is closed
481+
482+
430483@pytest .mark .parametrize ("callback_version" , [
431484 (CallbackAPIVersion .VERSION1 ),
432485 (CallbackAPIVersion .VERSION2 ),
0 commit comments