"""Tests for web/exceptions.py coverage.""" from local_deep_research.web.exceptions import ( AuthenticationRequiredError, WebAPIException, ) class TestWebAPIException: def test_default_fields(self): exc = WebAPIException("something broke") assert exc.message == "something broke" assert exc.status_code == 500 assert exc.error_code == "WebAPIException" assert exc.details == {} def test_custom_fields(self): exc = WebAPIException( "bad request", status_code=400, error_code="BAD_REQUEST", details={"field": "name"}, ) assert exc.status_code == 400 assert exc.error_code == "BAD_REQUEST" assert exc.details == {"field": "name"} def test_to_dict_basic(self): exc = WebAPIException("error") d = exc.to_dict() assert d["status"] == "error" assert d["message"] == "error" assert d["error_code"] == "WebAPIException" assert "details" not in d # empty details not included def test_to_dict_with_details(self): exc = WebAPIException("error", details={"key": "val"}) d = exc.to_dict() assert d["details"] == {"key": "val"} def test_is_exception(self): exc = WebAPIException("test") assert isinstance(exc, Exception) assert str(exc) == "test" class TestAuthenticationRequiredError: def test_default_message(self): exc = AuthenticationRequiredError() assert "Authentication required" in exc.message assert exc.status_code == 401 assert exc.error_code == "AUTHENTICATION_REQUIRED" assert exc.details == {} def test_custom_message(self): exc = AuthenticationRequiredError(message="Please log in") assert exc.message == "Please log in" def test_with_username(self): exc = AuthenticationRequiredError(username="alice") assert exc.details == {"username": "alice"} assert exc.status_code == 401 def test_to_dict(self): exc = AuthenticationRequiredError(username="bob") d = exc.to_dict() assert d["status"] == "error" assert d["error_code"] == "AUTHENTICATION_REQUIRED" assert d["details"]["username"] == "bob" def test_inherits_from_web_api_exception(self): exc = AuthenticationRequiredError() assert isinstance(exc, WebAPIException)