fix(events): keep registration status reads nonblocking
This commit is contained in:
35
config/tests/unit/test_api_errors.py
Normal file
35
config/tests/unit/test_api_errors.py
Normal file
@@ -0,0 +1,35 @@
|
||||
import json
|
||||
|
||||
import pytest
|
||||
from django.db import OperationalError
|
||||
|
||||
from config.api_errors import handle_database_operational_error
|
||||
|
||||
pytestmark = pytest.mark.unit
|
||||
|
||||
|
||||
class PostgresError(Exception):
|
||||
def __init__(self, sqlstate):
|
||||
super().__init__(sqlstate)
|
||||
self.sqlstate = sqlstate
|
||||
|
||||
|
||||
def test_database_lock_timeout_returns_retryable_service_unavailable():
|
||||
error = OperationalError("canceling statement due to lock timeout")
|
||||
error.__cause__ = PostgresError("55P03")
|
||||
|
||||
response = handle_database_operational_error(None, error)
|
||||
|
||||
assert response.status_code == 503
|
||||
assert response["Retry-After"] == "2"
|
||||
assert json.loads(response.content) == {
|
||||
"detail": "درخواست بهدلیل شلوغی موقت پایگاه داده انجام نشد؛ کمی بعد دوباره تلاش کنید."
|
||||
}
|
||||
|
||||
|
||||
def test_unrelated_database_operational_error_is_not_hidden():
|
||||
error = OperationalError("database unavailable")
|
||||
error.__cause__ = PostgresError("08006")
|
||||
|
||||
with pytest.raises(OperationalError, match="database unavailable"):
|
||||
handle_database_operational_error(None, error)
|
||||
Reference in New Issue
Block a user