|
7 | 7 | import logging |
8 | 8 | from unittest import mock |
9 | 9 |
|
| 10 | +from awesomeversion.exceptions import AwesomeVersionCompareException |
| 11 | + |
10 | 12 | import pytest |
11 | 13 | from aiohttp.client_exceptions import ContentTypeError, ServerTimeoutError |
12 | 14 |
|
@@ -230,6 +232,7 @@ async def test_get_service_level(fixture, expected, request): |
230 | 232 | ("test_charger", "4.1.2"), |
231 | 233 | ("test_charger_v2", "2.9.1"), |
232 | 234 | ("test_charger_dev", "4.1.5"), |
| 235 | + ("test_charger_broken_semver", "master_abcd123"), |
233 | 236 | ], |
234 | 237 | ) |
235 | 238 | async def test_get_wifi_firmware(fixture, expected, request): |
@@ -641,7 +644,12 @@ async def test_get_manual_override(fixture, expected, request): |
641 | 644 |
|
642 | 645 |
|
643 | 646 | async def test_toggle_override( |
644 | | - test_charger, test_charger_dev, test_charger_new, mock_aioclient, caplog |
| 647 | + test_charger, |
| 648 | + test_charger_dev, |
| 649 | + test_charger_new, |
| 650 | + test_charger_unknown_semver, |
| 651 | + mock_aioclient, |
| 652 | + caplog, |
645 | 653 | ): |
646 | 654 | """Test v4 Status reply.""" |
647 | 655 | await test_charger.update() |
@@ -848,7 +856,12 @@ async def test_get_charging_power(fixture, expected, request): |
848 | 856 |
|
849 | 857 |
|
850 | 858 | async def test_set_divertmode( |
851 | | - test_charger_new, test_charger_v2, test_charger_broken, mock_aioclient, caplog |
| 859 | + test_charger_new, |
| 860 | + test_charger_v2, |
| 861 | + test_charger_broken, |
| 862 | + test_charger_unknown_semver, |
| 863 | + mock_aioclient, |
| 864 | + caplog, |
852 | 865 | ): |
853 | 866 | """Test v4 set divert mode.""" |
854 | 867 | await test_charger_new.update() |
@@ -896,6 +909,17 @@ async def test_set_divertmode( |
896 | 909 | with pytest.raises(UnsupportedFeature): |
897 | 910 | await test_charger_broken.divert_mode() |
898 | 911 |
|
| 912 | + mock_aioclient.post( |
| 913 | + TEST_URL_CONFIG, |
| 914 | + status=200, |
| 915 | + body=value, |
| 916 | + ) |
| 917 | + await test_charger_unknown_semver.update() |
| 918 | + with pytest.raises(UnsupportedFeature): |
| 919 | + with caplog.at_level(logging.DEBUG): |
| 920 | + await test_charger_unknown_semver.divert_mode() |
| 921 | + assert "Non-semver firmware version detected." in caplog.text |
| 922 | + |
899 | 923 |
|
900 | 924 | async def test_test_and_get(test_charger, test_charger_v2, mock_aioclient, caplog): |
901 | 925 | """Test v4 Status reply""" |
@@ -931,6 +955,8 @@ async def test_firmware_check( |
931 | 955 | test_charger_dev, |
932 | 956 | test_charger_v2, |
933 | 957 | test_charger_broken, |
| 958 | + test_charger_broken_semver, |
| 959 | + test_charger_unknown_semver, |
934 | 960 | mock_aioclient, |
935 | 961 | caplog, |
936 | 962 | ): |
@@ -998,6 +1024,28 @@ async def test_firmware_check( |
998 | 1024 | assert "Unable to find firmware version." in caplog.text |
999 | 1025 | assert firmware is None |
1000 | 1026 |
|
| 1027 | + await test_charger_broken_semver.update() |
| 1028 | + mock_aioclient.get( |
| 1029 | + TEST_URL_GITHUB_v4, |
| 1030 | + status=200, |
| 1031 | + body=load_fixture("github_v4.json"), |
| 1032 | + ) |
| 1033 | + firmware = await test_charger_broken_semver.firmware_check() |
| 1034 | + assert firmware["latest_version"] == "4.1.4" |
| 1035 | + |
| 1036 | + await test_charger_unknown_semver.update() |
| 1037 | + assert test_charger_unknown_semver.wifi_firmware == "random_a4f11e" |
| 1038 | + mock_aioclient.get( |
| 1039 | + TEST_URL_GITHUB_v4, |
| 1040 | + status=200, |
| 1041 | + body=load_fixture("github_v4.json"), |
| 1042 | + ) |
| 1043 | + with caplog.at_level(logging.DEBUG): |
| 1044 | + firmware = await test_charger_unknown_semver.firmware_check() |
| 1045 | + assert "Using version: random_a4f11e" in caplog.text |
| 1046 | + assert "Non-semver firmware version detected." in caplog.text |
| 1047 | + assert firmware is None |
| 1048 | + |
1001 | 1049 |
|
1002 | 1050 | async def test_evse_restart(test_charger_v2, mock_aioclient, caplog): |
1003 | 1051 | """Test EVSE module restart.""" |
@@ -1102,7 +1150,9 @@ async def test_max_current_soft(fixture, expected, request): |
1102 | 1150 | assert status == expected |
1103 | 1151 |
|
1104 | 1152 |
|
1105 | | -async def test_set_override(test_charger, test_charger_v2, mock_aioclient, caplog): |
| 1153 | +async def test_set_override( |
| 1154 | + test_charger, test_charger_v2, test_charger_unknown_semver, mock_aioclient, caplog |
| 1155 | +): |
1106 | 1156 | """Test set override function.""" |
1107 | 1157 | await test_charger.update() |
1108 | 1158 | mock_aioclient.post( |
@@ -1176,6 +1226,10 @@ async def test_set_override(test_charger, test_charger_v2, mock_aioclient, caplo |
1176 | 1226 | status = await test_charger_v2.set_override("active") |
1177 | 1227 | assert "Feature not supported for older firmware." in caplog.text |
1178 | 1228 |
|
| 1229 | + await test_charger_unknown_semver.update() |
| 1230 | + status = await test_charger_unknown_semver.set_override("active") |
| 1231 | + assert "Feature not supported for older firmware." in caplog.text |
| 1232 | + |
1179 | 1233 |
|
1180 | 1234 | async def test_clear_override(test_charger, test_charger_v2, mock_aioclient, caplog): |
1181 | 1235 | """Test clear override function.""" |
|
0 commit comments