64 lines
2.2 KiB
Python
64 lines
2.2 KiB
Python
import sys
|
|
import types
|
|
|
|
from aare.gui.threads.daq_worker import DAQWorker
|
|
|
|
jfjoch_client_module = types.ModuleType("jfjoch_client")
|
|
jfjoch_client_module.ScanResult = object
|
|
jfjoch_client_module.ScanResultImagesInner = object
|
|
|
|
jfjoch_client_models_module = types.ModuleType("jfjoch_client.models")
|
|
jfjoch_client_scan_result_module = types.ModuleType("jfjoch_client.models.scan_result")
|
|
jfjoch_client_scan_result_module.ScanResult = object
|
|
|
|
sys.modules.setdefault("jfjoch_client", jfjoch_client_module)
|
|
sys.modules.setdefault("jfjoch_client.models", jfjoch_client_models_module)
|
|
sys.modules.setdefault("jfjoch_client.models.scan_result", jfjoch_client_scan_result_module)
|
|
|
|
|
|
def test_is_critical_uses_body_flag_when_present():
|
|
assert DAQWorker._is_critical({"critical": False}) is False
|
|
assert DAQWorker._is_critical({"critical": True}) is True
|
|
|
|
|
|
def test_is_critical_fails_safe_when_missing_or_unparseable():
|
|
assert DAQWorker._is_critical({}) is True
|
|
assert DAQWorker._is_critical(None) is True
|
|
|
|
|
|
def test_classify_reply_error_builds_structured_error_info():
|
|
info = DAQWorker._classify_reply_error(
|
|
status=422,
|
|
err_msg="mount failed",
|
|
body_json={
|
|
"critical": False,
|
|
"code": "MOUNTING_FAILED",
|
|
"exception_class": "MountingFailed",
|
|
"message": "mount failed",
|
|
"context": {"sample_id": 7},
|
|
},
|
|
)
|
|
|
|
assert info.critical is False
|
|
assert info.code == "MOUNTING_FAILED"
|
|
assert info.exception_class == "MountingFailed"
|
|
assert info.message == "mount failed"
|
|
assert info.context == {"sample_id": 7}
|
|
|
|
|
|
def test_classify_reply_error_fails_safe_defaults():
|
|
info = DAQWorker._classify_reply_error(status=500, err_msg="broken", body_json=None)
|
|
|
|
assert info.critical is True
|
|
assert info.code is None
|
|
assert info.exception_class is None
|
|
assert info.message == "broken"
|
|
assert info.context == {}
|
|
|
|
|
|
def test_is_auth_error_code_detects_auth_codes_only():
|
|
assert DAQWorker._is_auth_error_code("INVALID_TOKEN") is True
|
|
assert DAQWorker._is_auth_error_code("SESSION_ALREADY_ACTIVE") is True
|
|
assert DAQWorker._is_auth_error_code("MOUNTING_FAILED") is False
|
|
assert DAQWorker._is_auth_error_code(None) is False
|