mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-04-22 06:17:23 +00:00
209 lines
13 KiB
Plaintext
209 lines
13 KiB
Plaintext
| *Settings* | *Value*
|
|
| Resource | keywords.robot
|
|
| Test Timeout | 30 seconds
|
|
|
|
| *Test Cases*
|
|
| Publish a non-empty message
|
|
| | ${time} | Get Time | epoch
|
|
| | ${message} | Catenate | test message | ${time}
|
|
| | Publish to MQTT Broker and Disconnect | message=${message}
|
|
|
|
| Publish an empty message
|
|
| | Publish to MQTT Broker and Disconnect
|
|
|
|
| Publish a message with QOS 1 and validate that the message is received
|
|
| | ${time} | Get Time | epoch
|
|
| | ${client} | Catenate | SEPARATOR=. | robot.mqtt | ${time}
|
|
| | ${topic} | Set Variable | test/mqtt_test_sub
|
|
| | ${message} | Set Variable | subscription test message
|
|
| | Run Keyword And Expect Error | The expected payload didn't arrive in the topic
|
|
| | ... | Subscribe to MQTT Broker and Validate | client.id=${client} | topic=${topic} | message=${message}
|
|
| | Publish to MQTT Broker and Disconnect | topic=${topic} | message=${message} | qos=1
|
|
| | Subscribe to MQTT Broker and Validate | client.id=${client} | topic=${topic} | message=${message}
|
|
|
|
| Publish multiple messages and confirm that validation succeeds only after correct message is published
|
|
| | ${time} | Get Time | epoch
|
|
| | ${client} | Catenate | SEPARATOR=. | robot.mqtt | ${time}
|
|
| | ${topic} | Set Variable | test/mqtt_test_sub
|
|
| | ${message} | Set Variable | subscription test message
|
|
| | Run Keyword And Expect Error | The expected payload didn't arrive in the topic
|
|
| | ... | Subscribe to MQTT Broker and Validate | client.id=${client} | topic=${topic} | message=${message}
|
|
| | Publish to MQTT Broker and Disconnect | topic=${topic} | message=message1 | qos=1
|
|
| | Publish to MQTT Broker and Disconnect | topic=${topic} | message=message2 | qos=1
|
|
| | Run Keyword And Expect Error | The expected payload didn't arrive in the topic
|
|
| | ... | Subscribe to MQTT Broker and Validate | client.id=${client} | topic=${topic} | message=${message}
|
|
| | Publish to MQTT Broker and Disconnect | topic=${topic} | message=${message} | qos=1
|
|
| | Publish to MQTT Broker and Disconnect | topic=${topic} | message=message3 | qos=1
|
|
| | Publish to MQTT Broker and Disconnect | topic=${topic} | message=message4 | qos=1
|
|
| | Subscribe to MQTT Broker and Validate | client.id=${client} | topic=${topic} | message=${message}
|
|
|
|
| Publish an empty message with QOS 1 and validate
|
|
| | ${time} | Get Time | epoch
|
|
| | ${client} | Catenate | SEPARATOR=. | robot.mqtt | ${time}
|
|
| | ${topic} | Set Variable | test/mqtt_test_sub
|
|
| | Run Keyword And Expect Error | The expected payload didn't arrive in the topic
|
|
| | ... | Subscribe to MQTT Broker and Validate | client.id=${client} | topic=${topic}
|
|
| | Publish to MQTT Broker and Disconnect | topic=${topic} | qos=1
|
|
| | Subscribe to MQTT Broker and Validate | client.id=${client} | topic=${topic}
|
|
|
|
| Publish and validate with regular expression
|
|
| | ${time} | Get Time | epoch
|
|
| | ${client} | Catenate | SEPARATOR=. | robot.mqtt | ${time}
|
|
| | ${topic} | Set Variable | test/mqtt_test_sub
|
|
| | ${message} | Set Variable | subscription test message
|
|
| | ${regex} | Set Variable | ^subscription [test]{4} message$
|
|
| | Run Keyword And Expect Error | The expected payload didn't arrive in the topic
|
|
| | ... | Subscribe to MQTT Broker and Validate | client.id=${client} | topic=${topic} | message=whatever
|
|
| | Publish to MQTT Broker and Disconnect | topic=${topic} | message=${message} | qos=1
|
|
| | Subscribe to MQTT Broker and Validate | client.id=${client} | topic=${topic} | message=${regex}
|
|
|
|
| Subscribe for the first time and validate that no messages are received
|
|
| | ${time} | Get Time | epoch
|
|
| | ${client} | Catenate | SEPARATOR=. | robot.mqtt | ${time}
|
|
| | ${topic} | Set Variable | test/mqtt_test_sub
|
|
| | @{messages} | Subscribe and Get Messages | client.id=${client} | topic=${topic} | timeout=5s
|
|
| | LOG | ${messages}
|
|
| | Length Should Be | ${messages} | 0
|
|
|
|
| Subscribe, publish 1 message and validate it is received
|
|
| | ${time} | Get Time | epoch
|
|
| | ${client} | Catenate | SEPARATOR=. | robot.mqtt | ${time}
|
|
| | ${topic} | Set Variable | test/mqtt_test_sub
|
|
| | Subscribe and Get Messages | client.id=${client} | topic=${topic}
|
|
| | Publish to MQTT Broker and Disconnect | topic=${topic} | message=test message | qos=1
|
|
| | @{messages} | Subscribe and Get Messages | client.id=${client} | topic=${topic}
|
|
| | LOG | ${messages}
|
|
| | Length Should Be | ${messages} | 1
|
|
| | Should Be Equal As Strings | ${messages}[0] | test message
|
|
|
|
| Subscribe with no limit, publish multiple messages and validate they are received
|
|
| | ${time} | Get Time | epoch
|
|
| | ${client} | Catenate | SEPARATOR=. | robot.mqtt | ${time}
|
|
| | ${topic} | Set Variable | test/mqtt_test_sub
|
|
| | Subscribe and Get Messages | client.id=${client} | topic=${topic}
|
|
| | Publish to MQTT Broker and Disconnect | topic=${topic} | message=test message1 | qos=1
|
|
| | Publish to MQTT Broker and Disconnect | topic=${topic} | message=test message2 | qos=1
|
|
| | Publish to MQTT Broker and Disconnect | topic=${topic} | message=test message3 | qos=1
|
|
| | @{messages} | Subscribe and Get Messages | client.id=${client} | topic=${topic} | limit=0
|
|
| | LOG | ${messages}
|
|
| | Length Should Be | ${messages} | 3
|
|
| | Should Be Equal As Strings | ${messages}[0] | test message1
|
|
| | Should Be Equal As Strings | ${messages}[1] | test message2
|
|
| | Should Be Equal As Strings | ${messages}[2] | test message3
|
|
|
|
| Subscribe with limit
|
|
| | ${time} | Get Time | epoch
|
|
| | ${client} | Catenate | SEPARATOR=. | robot.mqtt | ${time}
|
|
| | ${topic} | Set Variable | test/mqtt_test_sub
|
|
| | Subscribe and Get Messages | client.id=${client} | topic=${topic}
|
|
| | Publish to MQTT Broker and Disconnect | topic=${topic} | message=test message1 | qos=1
|
|
| | Publish to MQTT Broker and Disconnect | topic=${topic} | message=test message2 | qos=1
|
|
| | Publish to MQTT Broker and Disconnect | topic=${topic} | message=test message3 | qos=1
|
|
| | @{messages} | Subscribe and Get Messages | client.id=${client} | topic=${topic} | limit=1
|
|
| | LOG | ${messages}
|
|
| | Length Should Be | ${messages} | 1
|
|
| | Should Be Equal As Strings | ${messages}[0] | test message1
|
|
| | @{messages} | Subscribe and Get Messages | client.id=${client} | topic=${topic} | limit=2
|
|
| | LOG | ${messages}
|
|
| | Length Should Be | ${messages} | 2
|
|
| | Should Be Equal As Strings | ${messages}[0] | test message2
|
|
| | Should Be Equal As Strings | ${messages}[1] | test message3
|
|
|
|
| Unsubscribe and validate no messages are received
|
|
| | ${time} | Get Time | epoch
|
|
| | ${client} | Catenate | SEPARATOR=. | robot.mqtt | ${time}
|
|
| | ${topic} | Set Variable | test/mqtt_test_sub
|
|
| | Subscribe and Get Messages | client.id=${client} | topic=${topic}
|
|
| | Publish to MQTT Broker and Disconnect | topic=${topic} | message=test message1 | qos=1
|
|
| | @{messages} | Subscribe and Unsubscribe | client.id=${client} | topic=${topic}
|
|
| | Publish to MQTT Broker and Disconnect | topic=${topic} | message=test message2 | qos=1
|
|
| | @{messages} | Subscribe and Get Messages | client.id=${client} | topic=${topic}
|
|
| | LOG | ${messages}
|
|
| | Length Should Be | ${messages} | 0
|
|
|
|
| Publish and Subscribe to a broker that requires username, password authentication
|
|
| | [Tags] | auth
|
|
| | ${time} | Get Time | epoch
|
|
| | ${client} | Catenate | SEPARATOR=. | robot.mqtt | ${time}
|
|
| | ${topic} | Set Variable | test
|
|
| | ${message} | Set Variable | subscription test message
|
|
| | Set username and password | authuser1 | password1
|
|
| | Run Keyword And Expect Error | The expected payload didn't arrive in the topic
|
|
| | ... | Subscribe to MQTT Broker and Validate | broker.uri=127.0.0.1 | port=11883 | client.id=${client}
|
|
| | ... | topic=${topic} | message=${message}
|
|
| | Connect | 127.0.0.1 | 11883
|
|
| | Publish | ${topic} | test message with username and password | qos=1
|
|
| | Subscribe to MQTT Broker and Validate
|
|
| | ... | broker.uri=127.0.0.1 | port=11883 | client.id=${client} | topic=${topic} | message=test message with username and password
|
|
| | [Teardown] | Disconnect
|
|
|
|
| Publish to a broker that requires authentication with invalid password
|
|
| | [Tags] | auth
|
|
| | ${time} | Get Time | epoch
|
|
| | ${client} | Catenate | SEPARATOR=. | robot.mqtt | ${time}
|
|
| | ${topic} | Set Variable | test
|
|
| | Set username and password | authuser1 | invalidpwd
|
|
| | Run Keyword and expect error | The client disconnected unexpectedly
|
|
| | ... | Connect | 127.0.0.1 | 11883 | ${client}
|
|
| | [Teardown] | Disconnect
|
|
|
|
| Subscribe async, publish 1 message, listen for and validate it is received
|
|
| | ${time} | Get Time | epoch
|
|
| | ${client} | Catenate | SEPARATOR=. | robot.mqtt | ${time}
|
|
| | ${topic} | Set Variable | test/mqtt_test_sub
|
|
| | Subscribe Async | client.id=${client} | topic=${topic}
|
|
| | Publish to MQTT Broker | topic=${topic} | message=test message | qos=1
|
|
| | @{messages} | Listen and Get Messages | topic=${topic}
|
|
| | LOG | ${messages}
|
|
| | Length Should Be | ${messages} | 1
|
|
| | Should Be Equal As Strings | ${messages}[0] | test message
|
|
| | [Teardown] | Unsubscribe and Disconnect | ${topic}
|
|
|
|
| Subscribe async, publish several messages, listen for and validate they are received
|
|
| | ${time} | Get Time | epoch
|
|
| | ${client} | Catenate | SEPARATOR=. | robot.mqtt | ${time}
|
|
| | ${topic} | Set Variable | test/mqtt_test_sub
|
|
| | Subscribe Async | client.id=${client} | topic=${topic}
|
|
| | Publish to MQTT Broker | topic=${topic} | message=test message1 | qos=1
|
|
| | Publish to MQTT Broker | topic=${topic} | message=test message2 | qos=1
|
|
| | Publish to MQTT Broker | topic=${topic} | message=test message3 | qos=1
|
|
| | @{messages} | Listen and Get Messages | topic=${topic} | limit=0
|
|
| | LOG | ${messages}
|
|
| | Length Should Be | ${messages} | 3
|
|
| | Should Be Equal As Strings | ${messages}[0] | test message1
|
|
| | Should Be Equal As Strings | ${messages}[1] | test message2
|
|
| | Should Be Equal As Strings | ${messages}[2] | test message3
|
|
| | [Teardown] | Unsubscribe and Disconnect | ${topic}
|
|
|
|
| Subscribe async to multiple topics, publish several messages, listen for them and validate they are received
|
|
| | ${time} | Get Time | epoch
|
|
| | ${client1} | Catenate | SEPARATOR=. | robot.mqtt | ${time}
|
|
| | ${client2} | Catenate | SEPARATOR=. | robot.mqtt | ${time+1}
|
|
| | ${topic1} | Set Variable | test/mqtt_test_sub1
|
|
| | ${topic2} | Set Variable | test/mqtt_test_sub2
|
|
| | Subscribe Async | client.id=${client1} | topic=${topic1}
|
|
| | Subscribe Async | client.id=${client2} | topic=${topic2}
|
|
| | Publish to MQTT Broker | topic=${topic2} | message=test message1 | qos=1
|
|
| | Publish to MQTT Broker | topic=${topic1} | message=test message2 | qos=1
|
|
| | Publish to MQTT Broker | topic=${topic2} | message=test message3 | qos=1
|
|
| | @{messages1} | Listen and Get Messages | topic=${topic1} | limit=0
|
|
| | @{messages2} | Listen and Get Messages | topic=${topic2} | limit=0
|
|
| | LOG | ${messages1}
|
|
| | LOG | ${messages2}
|
|
| | Length Should Be | ${messages1} | 1
|
|
| | Should Be Equal As Strings | ${messages1}[0] | test message2
|
|
| | Length Should Be | ${messages2} | 2
|
|
| | Should Be Equal As Strings | ${messages2}[0] | test message1
|
|
| | Should Be Equal As Strings | ${messages2}[1] | test message3
|
|
| | [Teardown] | Unsubscribe Multiple and Disconnect | ${topic1} | ${topic2}
|
|
|
|
| Listen immediately after Subscribe and validate message is received
|
|
| | ${time} | Get Time | epoch
|
|
| | ${client} | Catenate | SEPARATOR=. | robot.mqtt | ${time}
|
|
| | ${topic} | Set Variable | test/mqtt_test_sub
|
|
| | Subscribe and Get Messages | client.id=${client} | topic=${topic}
|
|
| | Publish to MQTT Broker and Disconnect | topic=${topic} | message=test message | qos=1
|
|
| | Subscribe Async | client.id=${client} | topic=${topic}
|
|
| | @{messages}= | Listen | topic=${topic} | limit=10 | timeout=5
|
|
| | Should Be Equal As Strings | ${messages}[0] | test message
|
|
| | [Teardown] | Unsubscribe and Disconnect | ${topic} |