55from typing import Any
66from unittest .mock import AsyncMock , patch
77
8+ from aiohasupervisor import SupervisorError
89from aiohasupervisor .models import AddonsStats
910import pytest
1011from voluptuous import Invalid
@@ -282,9 +283,9 @@ async def test_setup_api_push_api_data(
282283
283284 assert result
284285 assert aioclient_mock .call_count + len (supervisor_client .mock_calls ) == 20
285- assert not aioclient_mock .mock_calls [1 ][2 ]["ssl" ]
286- assert aioclient_mock .mock_calls [1 ][2 ]["port" ] == 9999
287- assert "watchdog" not in aioclient_mock .mock_calls [1 ][2 ]
286+ assert not aioclient_mock .mock_calls [0 ][2 ]["ssl" ]
287+ assert aioclient_mock .mock_calls [0 ][2 ]["port" ] == 9999
288+ assert "watchdog" not in aioclient_mock .mock_calls [0 ][2 ]
288289
289290
290291async def test_setup_api_push_api_data_server_host (
@@ -303,9 +304,9 @@ async def test_setup_api_push_api_data_server_host(
303304
304305 assert result
305306 assert aioclient_mock .call_count + len (supervisor_client .mock_calls ) == 20
306- assert not aioclient_mock .mock_calls [1 ][2 ]["ssl" ]
307- assert aioclient_mock .mock_calls [1 ][2 ]["port" ] == 9999
308- assert not aioclient_mock .mock_calls [1 ][2 ]["watchdog" ]
307+ assert not aioclient_mock .mock_calls [0 ][2 ]["ssl" ]
308+ assert aioclient_mock .mock_calls [0 ][2 ]["port" ] == 9999
309+ assert not aioclient_mock .mock_calls [0 ][2 ]["watchdog" ]
309310
310311
311312async def test_setup_api_push_api_data_default (
@@ -321,9 +322,9 @@ async def test_setup_api_push_api_data_default(
321322
322323 assert result
323324 assert aioclient_mock .call_count + len (supervisor_client .mock_calls ) == 20
324- assert not aioclient_mock .mock_calls [1 ][2 ]["ssl" ]
325- assert aioclient_mock .mock_calls [1 ][2 ]["port" ] == 8123
326- refresh_token = aioclient_mock .mock_calls [1 ][2 ]["refresh_token" ]
325+ assert not aioclient_mock .mock_calls [0 ][2 ]["ssl" ]
326+ assert aioclient_mock .mock_calls [0 ][2 ]["port" ] == 8123
327+ refresh_token = aioclient_mock .mock_calls [0 ][2 ]["refresh_token" ]
327328 hassio_user = await hass .auth .async_get_user (
328329 hass_storage [STORAGE_KEY ]["data" ]["hassio_user" ]
329330 )
@@ -402,9 +403,9 @@ async def test_setup_api_existing_hassio_user(
402403
403404 assert result
404405 assert aioclient_mock .call_count + len (supervisor_client .mock_calls ) == 20
405- assert not aioclient_mock .mock_calls [1 ][2 ]["ssl" ]
406- assert aioclient_mock .mock_calls [1 ][2 ]["port" ] == 8123
407- assert aioclient_mock .mock_calls [1 ][2 ]["refresh_token" ] == token .token
406+ assert not aioclient_mock .mock_calls [0 ][2 ]["ssl" ]
407+ assert aioclient_mock .mock_calls [0 ][2 ]["port" ] == 8123
408+ assert aioclient_mock .mock_calls [0 ][2 ]["refresh_token" ] == token .token
408409
409410
410411async def test_setup_core_push_timezone (
@@ -421,7 +422,7 @@ async def test_setup_core_push_timezone(
421422
422423 assert result
423424 assert aioclient_mock .call_count + len (supervisor_client .mock_calls ) == 20
424- assert aioclient_mock .mock_calls [2 ][2 ]["timezone" ] == "testzone"
425+ assert aioclient_mock .mock_calls [1 ][2 ]["timezone" ] == "testzone"
425426
426427 with patch ("homeassistant.util.dt.set_default_time_zone" ):
427428 await hass .config .async_update (time_zone = "America/New_York" )
@@ -455,16 +456,13 @@ async def test_fail_setup_without_environ_var(hass: HomeAssistant) -> None:
455456
456457
457458async def test_warn_when_cannot_connect (
458- hass : HomeAssistant , caplog : pytest .LogCaptureFixture
459+ hass : HomeAssistant ,
460+ caplog : pytest .LogCaptureFixture ,
461+ supervisor_is_connected : AsyncMock ,
459462) -> None :
460463 """Fail warn when we cannot connect."""
461- with (
462- patch .dict (os .environ , MOCK_ENVIRON ),
463- patch (
464- "homeassistant.components.hassio.HassIO.is_connected" ,
465- return_value = None ,
466- ),
467- ):
464+ supervisor_is_connected .side_effect = SupervisorError
465+ with patch .dict (os .environ , MOCK_ENVIRON ):
468466 result = await async_setup_component (hass , "hassio" , {})
469467 assert result
470468
@@ -496,17 +494,13 @@ async def test_service_calls(
496494 aioclient_mock : AiohttpClientMocker ,
497495 caplog : pytest .LogCaptureFixture ,
498496 supervisor_client : AsyncMock ,
499- addon_installed ,
497+ addon_installed : AsyncMock ,
498+ supervisor_is_connected : AsyncMock ,
500499 issue_registry : ir .IssueRegistry ,
501500) -> None :
502501 """Call service and check the API calls behind that."""
503- with (
504- patch .dict (os .environ , MOCK_ENVIRON ),
505- patch (
506- "homeassistant.components.hassio.HassIO.is_connected" ,
507- return_value = None ,
508- ),
509- ):
502+ supervisor_is_connected .side_effect = SupervisorError
503+ with patch .dict (os .environ , MOCK_ENVIRON ):
510504 assert await async_setup_component (hass , "hassio" , {})
511505 await hass .async_block_till_done ()
512506
@@ -536,14 +530,14 @@ async def test_service_calls(
536530 )
537531 await hass .async_block_till_done ()
538532
539- assert aioclient_mock .call_count + len (supervisor_client .mock_calls ) == 24
533+ assert aioclient_mock .call_count + len (supervisor_client .mock_calls ) == 25
540534 assert aioclient_mock .mock_calls [- 1 ][2 ] == "test"
541535
542536 await hass .services .async_call ("hassio" , "host_shutdown" , {})
543537 await hass .services .async_call ("hassio" , "host_reboot" , {})
544538 await hass .async_block_till_done ()
545539
546- assert aioclient_mock .call_count + len (supervisor_client .mock_calls ) == 26
540+ assert aioclient_mock .call_count + len (supervisor_client .mock_calls ) == 27
547541
548542 await hass .services .async_call ("hassio" , "backup_full" , {})
549543 await hass .services .async_call (
@@ -558,7 +552,7 @@ async def test_service_calls(
558552 )
559553 await hass .async_block_till_done ()
560554
561- assert aioclient_mock .call_count + len (supervisor_client .mock_calls ) == 28
555+ assert aioclient_mock .call_count + len (supervisor_client .mock_calls ) == 29
562556 assert aioclient_mock .mock_calls [- 1 ][2 ] == {
563557 "name" : "2021-11-13 03:48:00" ,
564558 "homeassistant" : True ,
@@ -583,7 +577,7 @@ async def test_service_calls(
583577 )
584578 await hass .async_block_till_done ()
585579
586- assert aioclient_mock .call_count + len (supervisor_client .mock_calls ) == 30
580+ assert aioclient_mock .call_count + len (supervisor_client .mock_calls ) == 31
587581 assert aioclient_mock .mock_calls [- 1 ][2 ] == {
588582 "addons" : ["test" ],
589583 "folders" : ["ssl" ],
@@ -602,7 +596,7 @@ async def test_service_calls(
602596 )
603597 await hass .async_block_till_done ()
604598
605- assert aioclient_mock .call_count + len (supervisor_client .mock_calls ) == 31
599+ assert aioclient_mock .call_count + len (supervisor_client .mock_calls ) == 32
606600 assert aioclient_mock .mock_calls [- 1 ][2 ] == {
607601 "name" : "backup_name" ,
608602 "location" : "backup_share" ,
@@ -618,7 +612,7 @@ async def test_service_calls(
618612 )
619613 await hass .async_block_till_done ()
620614
621- assert aioclient_mock .call_count + len (supervisor_client .mock_calls ) == 32
615+ assert aioclient_mock .call_count + len (supervisor_client .mock_calls ) == 33
622616 assert aioclient_mock .mock_calls [- 1 ][2 ] == {
623617 "name" : "2021-11-13 03:48:00" ,
624618 "location" : None ,
@@ -637,7 +631,7 @@ async def test_service_calls(
637631 )
638632 await hass .async_block_till_done ()
639633
640- assert aioclient_mock .call_count + len (supervisor_client .mock_calls ) == 34
634+ assert aioclient_mock .call_count + len (supervisor_client .mock_calls ) == 35
641635 assert aioclient_mock .mock_calls [- 1 ][2 ] == {
642636 "name" : "2021-11-13 11:48:00" ,
643637 "location" : None ,
@@ -647,15 +641,11 @@ async def test_service_calls(
647641async def test_invalid_service_calls (
648642 hass : HomeAssistant ,
649643 aioclient_mock : AiohttpClientMocker ,
644+ supervisor_is_connected : AsyncMock ,
650645) -> None :
651646 """Call service with invalid input and check that it raises."""
652- with (
653- patch .dict (os .environ , MOCK_ENVIRON ),
654- patch (
655- "homeassistant.components.hassio.HassIO.is_connected" ,
656- return_value = None ,
657- ),
658- ):
647+ supervisor_is_connected .side_effect = SupervisorError
648+ with patch .dict (os .environ , MOCK_ENVIRON ):
659649 assert await async_setup_component (hass , "hassio" , {})
660650 await hass .async_block_till_done ()
661651
@@ -672,6 +662,7 @@ async def test_invalid_service_calls(
672662async def test_addon_service_call_with_complex_slug (
673663 hass : HomeAssistant ,
674664 aioclient_mock : AiohttpClientMocker ,
665+ supervisor_is_connected : AsyncMock ,
675666) -> None :
676667 """Addon slugs can have ., - and _, confirm that passes validation."""
677668 supervisor_mock_data = {
@@ -691,12 +682,9 @@ async def test_addon_service_call_with_complex_slug(
691682 },
692683 ],
693684 }
685+ supervisor_is_connected .side_effect = SupervisorError
694686 with (
695687 patch .dict (os .environ , MOCK_ENVIRON ),
696- patch (
697- "homeassistant.components.hassio.HassIO.is_connected" ,
698- return_value = None ,
699- ),
700688 patch (
701689 "homeassistant.components.hassio.HassIO.get_supervisor_info" ,
702690 return_value = supervisor_mock_data ,
@@ -724,12 +712,12 @@ async def test_service_calls_core(
724712 await hass .services .async_call ("homeassistant" , "stop" )
725713 await hass .async_block_till_done ()
726714
727- assert aioclient_mock .call_count + len (supervisor_client .mock_calls ) == 5
715+ assert aioclient_mock .call_count + len (supervisor_client .mock_calls ) == 6
728716
729717 await hass .services .async_call ("homeassistant" , "check_config" )
730718 await hass .async_block_till_done ()
731719
732- assert aioclient_mock .call_count + len (supervisor_client .mock_calls ) == 5
720+ assert aioclient_mock .call_count + len (supervisor_client .mock_calls ) == 6
733721
734722 with patch (
735723 "homeassistant.config.async_check_ha_config_file" , return_value = None
@@ -738,7 +726,7 @@ async def test_service_calls_core(
738726 await hass .async_block_till_done ()
739727 assert mock_check_config .called
740728
741- assert aioclient_mock .call_count + len (supervisor_client .mock_calls ) == 6
729+ assert aioclient_mock .call_count + len (supervisor_client .mock_calls ) == 7
742730
743731
744732@pytest .mark .usefixtures ("addon_installed" )
0 commit comments