Skip to content

Commit 0a96e47

Browse files
style: pre-commit auto-fix
1 parent e6333bd commit 0a96e47

1 file changed

Lines changed: 22 additions & 58 deletions

File tree

tests/test_protocol_mihome.py

Lines changed: 22 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,7 @@ def device_proto() -> DreameVacuumDeviceProtocol:
4848
# ---------------------------------------------------------------------------
4949

5050

51-
def _mock_response(
52-
status_code: int, text: str, headers: dict | None = None
53-
) -> MagicMock:
51+
def _mock_response(status_code: int, text: str, headers: dict | None = None) -> MagicMock:
5452
resp = MagicMock()
5553
resp.status_code = status_code
5654
resp.text = text
@@ -62,9 +60,7 @@ def _make_encrypted_response(ssecurity: str, nonce: str, payload: dict) -> str:
6260
"""Return a base64 string that decrypt_rc4(signed_nonce(nonce), text) yields payload JSON."""
6361
import hashlib
6462

65-
hash_object = hashlib.sha256(
66-
base64.b64decode(ssecurity) + base64.b64decode(nonce)
67-
)
63+
hash_object = hashlib.sha256(base64.b64decode(ssecurity) + base64.b64decode(nonce))
6864
signed_nonce = base64.b64encode(hash_object.digest()).decode("utf-8")
6965
r = ARC4.new(base64.b64decode(signed_nonce))
7066
r.encrypt(bytes(1024))
@@ -225,9 +221,7 @@ def test_mihome_generate_signature_deterministic() -> None:
225221
signed_nonce = "tNfoaeifqEL840oNVDy1wWxcSezI23TbtXCTt8FH1Rs="
226222
nonce = "bm9uY2U=" # base64('nonce')
227223
params = {"data": "testdata"}
228-
result = DreameVacuumMiHomeCloudProtocol.generate_signature(
229-
url, signed_nonce, nonce, params
230-
)
224+
result = DreameVacuumMiHomeCloudProtocol.generate_signature(url, signed_nonce, nonce, params)
231225
assert result == "rUvM5mf+PJ3s7wCocHeSFtCkDB6CjjcoPjDxrOmW350="
232226

233227

@@ -293,17 +287,13 @@ def test_mihome_check_login_auth_err_false(
293287
def test_mihome_check_login_invalid_signature_false(
294288
mihome: DreameVacuumMiHomeCloudProtocol,
295289
) -> None:
296-
assert (
297-
mihome.check_login({"code": 0, "message": "invalid signature"}) is False
298-
)
290+
assert mihome.check_login({"code": 0, "message": "invalid signature"}) is False
299291

300292

301293
def test_mihome_check_login_servicetoken_expired_false(
302294
mihome: DreameVacuumMiHomeCloudProtocol,
303295
) -> None:
304-
assert (
305-
mihome.check_login({"code": 0, "message": "SERVICETOKEN_EXPIRED"}) is False
306-
)
296+
assert mihome.check_login({"code": 0, "message": "SERVICETOKEN_EXPIRED"}) is False
307297

308298

309299
def test_mihome_check_login_ok_true(
@@ -342,15 +332,11 @@ def test_mihome_request_200_valid_json(
342332
) -> None:
343333
"""HTTP 200 with properly encrypted response returns parsed dict and _connected=True."""
344334
fixed_nonce = "dGVzdA==" # base64('test')
345-
encrypted_text = _make_encrypted_response(
346-
mihome._ssecurity, fixed_nonce, {"result": 42}
347-
)
335+
encrypted_text = _make_encrypted_response(mihome._ssecurity, fixed_nonce, {"result": 42})
348336
mihome._session = MagicMock()
349337
mihome._session.post.return_value = _mock_response(200, encrypted_text)
350338

351-
with patch.object(
352-
DreameVacuumMiHomeCloudProtocol, "generate_nonce", return_value=fixed_nonce
353-
):
339+
with patch.object(DreameVacuumMiHomeCloudProtocol, "generate_nonce", return_value=fixed_nonce):
354340
result = mihome.request("https://de.api.io.mi.com/app/v2/test", {"data": "x"})
355341

356342
assert result == {"result": 42}
@@ -397,12 +383,8 @@ def test_mihome_request_timeout_retries(
397383
mihome._session = MagicMock()
398384
mihome._session.post.side_effect = requests.exceptions.Timeout
399385

400-
with patch(
401-
"custom_components.dreame_vacuum.dreame.protocol.sleep"
402-
) as mock_sleep:
403-
result = mihome.request(
404-
"https://de.api.io.mi.com/app/v2/test", {"data": "x"}, retry_count=2
405-
)
386+
with patch("custom_components.dreame_vacuum.dreame.protocol.sleep") as mock_sleep:
387+
result = mihome.request("https://de.api.io.mi.com/app/v2/test", {"data": "x"}, retry_count=2)
406388

407389
assert result is None
408390
assert mihome._session.post.call_count == 3
@@ -414,9 +396,7 @@ def test_mihome_request_429_raises_rate_limit_error(
414396
) -> None:
415397
"""HTTP 429 raises RateLimitError with retry_after from header."""
416398
mihome._session = MagicMock()
417-
mihome._session.post.return_value = _mock_response(
418-
429, "", headers={"Retry-After": "45"}
419-
)
399+
mihome._session.post.return_value = _mock_response(429, "", headers={"Retry-After": "45"})
420400

421401
with pytest.raises(RateLimitError) as exc_info:
422402
mihome.request("https://de.api.io.mi.com/app/v2/test", {"data": "x"})
@@ -460,12 +440,8 @@ def test_mihome_request_connection_error_retries(
460440
mihome._session = MagicMock()
461441
mihome._session.post.side_effect = requests.exceptions.ConnectionError("refused")
462442

463-
with patch(
464-
"custom_components.dreame_vacuum.dreame.protocol.sleep"
465-
) as mock_sleep:
466-
result = mihome.request(
467-
"https://de.api.io.mi.com/app/v2/test", {"data": "x"}, retry_count=2
468-
)
443+
with patch("custom_components.dreame_vacuum.dreame.protocol.sleep") as mock_sleep:
444+
result = mihome.request("https://de.api.io.mi.com/app/v2/test", {"data": "x"}, retry_count=2)
469445

470446
assert result is None
471447
assert mihome._session.post.call_count == 3
@@ -477,15 +453,11 @@ def test_mihome_request_cookies_include_service_token(
477453
) -> None:
478454
"""request() sends serviceToken and yetAnotherServiceToken cookies."""
479455
fixed_nonce = "dGVzdA=="
480-
encrypted_text = _make_encrypted_response(
481-
mihome._ssecurity, fixed_nonce, {"ok": 1}
482-
)
456+
encrypted_text = _make_encrypted_response(mihome._ssecurity, fixed_nonce, {"ok": 1})
483457
mihome._session = MagicMock()
484458
mihome._session.post.return_value = _mock_response(200, encrypted_text)
485459

486-
with patch.object(
487-
DreameVacuumMiHomeCloudProtocol, "generate_nonce", return_value=fixed_nonce
488-
):
460+
with patch.object(DreameVacuumMiHomeCloudProtocol, "generate_nonce", return_value=fixed_nonce):
489461
mihome.request("https://de.api.io.mi.com/app/v2/test", {"data": "x"})
490462

491463
call_kwargs = mihome._session.post.call_args
@@ -647,11 +619,11 @@ def test_mihome_request_retry_count_none_normalized(
647619
encrypted_text = _make_encrypted_response(mihome._ssecurity, fixed_nonce, {"ok": 1})
648620
mihome._session.post.return_value = _mock_response(200, encrypted_text)
649621

650-
with patch.object(
651-
DreameVacuumMiHomeCloudProtocol, "generate_nonce", return_value=fixed_nonce
652-
):
622+
with patch.object(DreameVacuumMiHomeCloudProtocol, "generate_nonce", return_value=fixed_nonce):
653623
result = mihome.request(
654-
"https://de.api.io.mi.com/app/v2/test", {"data": "x"}, retry_count=None # type: ignore[arg-type]
624+
"https://de.api.io.mi.com/app/v2/test",
625+
{"data": "x"},
626+
retry_count=None, # type: ignore[arg-type]
655627
)
656628

657629
assert result == {"ok": 1}
@@ -667,9 +639,7 @@ def test_mihome_request_timeout_with_connected_logs_warning(
667639
mihome._connected = True
668640

669641
with patch("custom_components.dreame_vacuum.dreame.protocol.sleep"):
670-
result = mihome.request(
671-
"https://de.api.io.mi.com/app/v2/test", {"data": "x"}, retry_count=1
672-
)
642+
result = mihome.request("https://de.api.io.mi.com/app/v2/test", {"data": "x"}, retry_count=1)
673643

674644
assert result is None
675645
assert mihome._session.post.call_count == 2
@@ -684,9 +654,7 @@ def test_mihome_request_connection_error_with_connected_logs_warning(
684654
mihome._connected = True
685655

686656
with patch("custom_components.dreame_vacuum.dreame.protocol.sleep"):
687-
result = mihome.request(
688-
"https://de.api.io.mi.com/app/v2/test", {"data": "x"}, retry_count=1
689-
)
657+
result = mihome.request("https://de.api.io.mi.com/app/v2/test", {"data": "x"}, retry_count=1)
690658

691659
assert result is None
692660

@@ -699,9 +667,7 @@ def test_mihome_request_generic_exception_with_connected(
699667
mihome._session.post.side_effect = RuntimeError("boom")
700668
mihome._connected = True
701669

702-
result = mihome.request(
703-
"https://de.api.io.mi.com/app/v2/test", {"data": "x"}, retry_count=1
704-
)
670+
result = mihome.request("https://de.api.io.mi.com/app/v2/test", {"data": "x"}, retry_count=1)
705671

706672
assert result is None
707673

@@ -713,9 +679,7 @@ def test_mihome_request_200_decrypt_returns_empty_bytes(
713679
mihome._session = MagicMock()
714680
mihome._session.post.return_value = _mock_response(200, "anythingbase64")
715681

716-
with patch.object(
717-
DreameVacuumMiHomeCloudProtocol, "decrypt_rc4", return_value=b""
718-
):
682+
with patch.object(DreameVacuumMiHomeCloudProtocol, "decrypt_rc4", return_value=b""):
719683
result = mihome.request("https://de.api.io.mi.com/app/v2/test", {"data": "x"})
720684

721685
assert result is None

0 commit comments

Comments
 (0)