Skip to content

Commit 8e9b214

Browse files
committed
Added tests for server registering invalid topic id and names
1 parent 2efafc1 commit 8e9b214

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

test/mqtt-sn-sub-test.rb

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)