@@ -379,6 +379,58 @@ def fs.handle_connect(packet)
379379 assert_equal false , @packet . clean_session
380380 end
381381
382+ def test_register_invalid_topic_id
383+ @fs = fake_server do |fs |
384+ def fs . handle_connect ( packet )
385+ [
386+ MQTT ::SN ::Packet ::Connack . new ( :return_code => 0x00 ) ,
387+ MQTT ::SN ::Packet ::Register . new ( :topic_id => 0 , :topic_name => 'old_topic' )
388+ ]
389+ end
390+
391+ @cmd_result = run_cmd (
392+ 'mqtt-sn-sub' ,
393+ [ '-c' , '-v' ,
394+ '-t' , 'test' ,
395+ '-p' , fs . port ,
396+ '-h' , fs . address ]
397+ ) do |cmd |
398+ @packet = fs . wait_for_packet ( MQTT ::SN ::Packet ::Connect )
399+ wait_for_output_then_kill ( cmd )
400+ end
401+ end
402+
403+ assert_match /ERROR Attempted to register invalid topic id: 0x0000/ , @cmd_result [ 0 ]
404+ assert_match /test: Hello World/ , @cmd_result [ 1 ]
405+ end
406+
407+ def test_register_invalid_topic_name
408+ @fs = fake_server do |fs |
409+ def fs . handle_connect ( packet )
410+ [
411+ MQTT ::SN ::Packet ::Connack . new ( :return_code => 0x00 ) ,
412+ MQTT ::SN ::Packet ::Register . new ( :topic_id => 5 , :topic_name => '' ) ,
413+ MQTT ::SN ::Packet ::Publish . new ( :topic_id => 5 , :data => 'old_msg' )
414+ ]
415+ end
416+
417+ @cmd_result = run_cmd (
418+ 'mqtt-sn-sub' ,
419+ [ '-c' , '-v' ,
420+ '-t' , 'test' ,
421+ '-p' , fs . port ,
422+ '-h' , fs . address ]
423+ ) do |cmd |
424+ @packet = fs . wait_for_packet ( MQTT ::SN ::Packet ::Connect )
425+ wait_for_output_then_kill ( cmd )
426+ end
427+ end
428+
429+ assert_match /ERROR Attempted to register invalid topic name/ , @cmd_result [ 0 ]
430+ assert_match /WARN Failed to lookup topic id: 0x0005/ , @cmd_result [ 1 ]
431+ assert_match /test: Hello World/ , @cmd_result [ 2 ]
432+ end
433+
382434 def test_recieve_non_registered_topic_id
383435 @fs = fake_server do |fs |
384436 def fs . handle_connect ( packet )
0 commit comments