|
@@ -16,6 +16,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
+import json
|
|
|
import unittest.mock
|
|
|
|
|
|
import pytest
|
|
@@ -98,11 +99,12 @@ def test__main(
|
|
|
mqtt_username=expected_username,
|
|
|
mqtt_password=expected_password,
|
|
|
retry_count=expected_retry_count,
|
|
|
+ device_passwords={},
|
|
|
)
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
|
- ("password_file_content", "expected_password"),
|
|
|
+ ("mqtt_password_file_content", "expected_password"),
|
|
|
[
|
|
|
("secret", "secret"),
|
|
|
("secret space", "secret space"),
|
|
@@ -115,10 +117,12 @@ def test__main(
|
|
|
("你好\n", "你好"),
|
|
|
],
|
|
|
)
|
|
|
-def test__main_password_file(tmpdir, password_file_content, expected_password):
|
|
|
+def test__main_mqtt_password_file(
|
|
|
+ tmpdir, mqtt_password_file_content, expected_password
|
|
|
+):
|
|
|
mqtt_password_path = tmpdir.join("mqtt-password")
|
|
|
with mqtt_password_path.open("w") as mqtt_password_file:
|
|
|
- mqtt_password_file.write(password_file_content)
|
|
|
+ mqtt_password_file.write(mqtt_password_file_content)
|
|
|
with unittest.mock.patch("switchbot_mqtt._run") as run_mock, unittest.mock.patch(
|
|
|
"sys.argv",
|
|
|
[
|
|
@@ -139,10 +143,11 @@ def test__main_password_file(tmpdir, password_file_content, expected_password):
|
|
|
mqtt_username="me",
|
|
|
mqtt_password=expected_password,
|
|
|
retry_count=3,
|
|
|
+ device_passwords={},
|
|
|
)
|
|
|
|
|
|
|
|
|
-def test__main_password_file_collision(capsys):
|
|
|
+def test__main_mqtt_password_file_collision(capsys):
|
|
|
with unittest.mock.patch(
|
|
|
"sys.argv",
|
|
|
[
|
|
@@ -166,3 +171,35 @@ def test__main_password_file_collision(capsys):
|
|
|
"argument --mqtt-password-file: not allowed with argument --mqtt-password\n"
|
|
|
in err
|
|
|
)
|
|
|
+
|
|
|
+
|
|
|
+@pytest.mark.parametrize(
|
|
|
+ "device_passwords",
|
|
|
+ [
|
|
|
+ {},
|
|
|
+ {"11:22:33:44:55:66": "password", "aa:bb:cc:dd:ee:ff": "secret"},
|
|
|
+ ],
|
|
|
+)
|
|
|
+def test__main_device_password_file(tmpdir, device_passwords):
|
|
|
+ device_passwords_path = tmpdir.join("passwords.json")
|
|
|
+ device_passwords_path.write_text(json.dumps(device_passwords), encoding="utf8")
|
|
|
+ with unittest.mock.patch("switchbot_mqtt._run") as run_mock, unittest.mock.patch(
|
|
|
+ "sys.argv",
|
|
|
+ [
|
|
|
+ "",
|
|
|
+ "--mqtt-host",
|
|
|
+ "localhost",
|
|
|
+ "--device-password-file",
|
|
|
+ str(device_passwords_path),
|
|
|
+ ],
|
|
|
+ ):
|
|
|
+
|
|
|
+ switchbot_mqtt._main()
|
|
|
+ run_mock.assert_called_once_with(
|
|
|
+ mqtt_host="localhost",
|
|
|
+ mqtt_port=1883,
|
|
|
+ mqtt_username=None,
|
|
|
+ mqtt_password=None,
|
|
|
+ retry_count=3,
|
|
|
+ device_passwords=device_passwords,
|
|
|
+ )
|