Files
hassio-addons-avm/hassio-google-drive-backup/tests/test_exceptions.py

50 lines
1.6 KiB
Python

from bs4 import BeautifulSoup
import backup.exceptions
import inspect
import pytest
from backup.exceptions import GoogleCredGenerateError, KnownError, KnownTransient, SimulatedError, GoogleDrivePermissionDenied, InvalidConfigurationValue, LogicError, ProtocolError, NoBackup, NotUploadable, PleaseWait, UploadFailed
from .conftest import ReaderHelper
@pytest.mark.asyncio
async def test_verify_coverage(ui_server, reader: ReaderHelper):
# Get the list of exception codes
ignore = [
KnownError,
KnownTransient,
SimulatedError,
GoogleDrivePermissionDenied,
InvalidConfigurationValue,
LogicError,
NoBackup,
NotUploadable,
PleaseWait,
ProtocolError,
UploadFailed,
GoogleCredGenerateError,
]
codes = {}
for name, obj in inspect.getmembers(backup.exceptions):
if inspect.isclass(obj) and (KnownError in obj.__bases__) and obj not in ignore:
codes[obj().code()] = obj
# Get the list of ui dialogs
document = await reader.get("", json=False)
page = BeautifulSoup(document, 'html.parser')
dialogs = {}
for div in page.find_all("div"):
cls = div.get("class")
if cls is None:
continue
if "error_card" in cls:
for specific_class in cls:
if specific_class in dialogs:
dialogs[specific_class] = dialogs[specific_class] + 1
else:
dialogs[specific_class] = 1
# Make sure exactly one dialog has the class
for code in codes.keys():
assert dialogs[code] == 1