Compare commits
2 Commits
74cdc196c6
...
666f661992
| Author | SHA1 | Date |
|---|---|---|
|
|
666f661992 | |
|
|
49796a3b41 |
|
|
@ -14,7 +14,7 @@ from app.services.rag_service import RagService
|
|||
from app.dependencies import get_db_client, get_current_user
|
||||
import httpx
|
||||
import logging
|
||||
from datetime import datetime
|
||||
from datetime import datetime, UTC
|
||||
import uuid
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
|
@ -90,10 +90,10 @@ async def bench_query(
|
|||
request_id=request_id
|
||||
)
|
||||
|
||||
|
||||
|
||||
return QueryResponse(
|
||||
request_id=request_id,
|
||||
timestamp=datetime.utcnow().isoformat() + "Z",
|
||||
timestamp=datetime.now(UTC).isoformat().replace('+00:00', 'Z'),
|
||||
environment=environment,
|
||||
response=response_data
|
||||
)
|
||||
|
|
@ -178,12 +178,12 @@ async def backend_query(
|
|||
reset_session=request.reset_session
|
||||
)
|
||||
|
||||
|
||||
|
||||
return QueryResponse(
|
||||
request_id=request_id,
|
||||
timestamp=datetime.utcnow().isoformat() + "Z",
|
||||
timestamp=datetime.now(UTC).isoformat().replace('+00:00', 'Z'),
|
||||
environment=environment,
|
||||
response={"answers": response_data}
|
||||
response={"answers": response_data}
|
||||
)
|
||||
|
||||
except httpx.HTTPStatusError as e:
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import logging
|
|||
import httpx
|
||||
import uuid
|
||||
from typing import List, Dict, Optional, Any
|
||||
from datetime import datetime
|
||||
from datetime import datetime, UTC
|
||||
from app.config import settings
|
||||
from app.models.query import QuestionRequest, RagResponseBenchList
|
||||
|
||||
|
|
@ -276,8 +276,8 @@ class RagService:
|
|||
responses = []
|
||||
|
||||
for idx, question in enumerate(questions, start=1):
|
||||
|
||||
now = datetime.utcnow().isoformat() + "Z"
|
||||
|
||||
now = datetime.now(UTC).isoformat().replace('+00:00', 'Z')
|
||||
body = {
|
||||
"question": question.body,
|
||||
"user_message_id": idx,
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
"""JWT token encoding/decoding utilities."""
|
||||
|
||||
from datetime import datetime, timedelta
|
||||
from datetime import datetime, timedelta, UTC
|
||||
from typing import Optional
|
||||
|
||||
from jose import JWTError, jwt
|
||||
|
|
@ -22,9 +22,9 @@ def create_access_token(data: dict, expires_delta: Optional[timedelta] = None) -
|
|||
to_encode = data.copy()
|
||||
|
||||
if expires_delta:
|
||||
expire = datetime.utcnow() + expires_delta
|
||||
expire = datetime.now(UTC) + expires_delta
|
||||
else:
|
||||
expire = datetime.utcnow() + timedelta(minutes=settings.JWT_EXPIRE_MINUTES)
|
||||
expire = datetime.now(UTC) + timedelta(minutes=settings.JWT_EXPIRE_MINUTES)
|
||||
|
||||
to_encode.update({"exp": int(expire.timestamp())})
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" ?>
|
||||
<coverage version="7.13.0" timestamp="1766645017585" lines-valid="617" lines-covered="594" line-rate="0.9627" branches-covered="0" branches-valid="0" branch-rate="0" complexity="0">
|
||||
<coverage version="7.13.0" timestamp="1766645611374" lines-valid="617" lines-covered="594" line-rate="0.9627" branches-covered="0" branches-valid="0" branch-rate="0" complexity="0">
|
||||
<!-- Generated by coverage.py: https://coverage.readthedocs.io/en/7.13.0 -->
|
||||
<!-- Based on https://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtd -->
|
||||
<sources>
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ if test_env_path.exists():
|
|||
import pytest
|
||||
from unittest.mock import AsyncMock, MagicMock
|
||||
from fastapi.testclient import TestClient
|
||||
from datetime import datetime, timedelta
|
||||
from datetime import datetime, timedelta, UTC
|
||||
|
||||
from app.main import app
|
||||
from app.dependencies import get_db_client, get_current_user
|
||||
|
|
@ -52,8 +52,8 @@ def test_user_response(test_user):
|
|||
return UserResponse(
|
||||
user_id=test_user["user_id"],
|
||||
login=test_user["login"],
|
||||
last_login_at=datetime.utcnow().isoformat() + "Z",
|
||||
created_at=datetime.utcnow().isoformat() + "Z"
|
||||
last_login_at=datetime.now(UTC).isoformat().replace('+00:00', 'Z'),
|
||||
created_at=datetime.now(UTC).isoformat().replace('+00:00', 'Z')
|
||||
)
|
||||
|
||||
|
||||
|
|
@ -101,7 +101,7 @@ def test_settings():
|
|||
"psi": env_settings.model_copy(),
|
||||
"prod": env_settings.model_copy()
|
||||
},
|
||||
updated_at=datetime.utcnow().isoformat() + "Z"
|
||||
updated_at=datetime.now(UTC).isoformat().replace('+00:00', 'Z')
|
||||
)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ from pydantic import BaseModel, ValidationError
|
|||
from app.interfaces.base import TgBackendInterface
|
||||
|
||||
|
||||
class TestModel(BaseModel):
|
||||
"""Test Pydantic model for testing."""
|
||||
class SampleModel(BaseModel):
|
||||
"""Sample Pydantic model for testing serialization/deserialization."""
|
||||
name: str
|
||||
value: int
|
||||
|
||||
|
|
@ -92,7 +92,7 @@ class TestTgBackendInterface:
|
|||
"""Test serializing Pydantic model to dict."""
|
||||
with patch('app.interfaces.base.httpx.AsyncClient'):
|
||||
interface = TgBackendInterface(api_prefix="http://api.example.com")
|
||||
model = TestModel(name="test", value=42)
|
||||
model = SampleModel(name="test", value=42)
|
||||
|
||||
result = interface._serialize_body(model)
|
||||
|
||||
|
|
@ -113,9 +113,9 @@ class TestTgBackendInterface:
|
|||
interface = TgBackendInterface(api_prefix="http://api.example.com")
|
||||
data = {"name": "test", "value": 42}
|
||||
|
||||
result = interface._deserialize_response(data, TestModel)
|
||||
result = interface._deserialize_response(data, SampleModel)
|
||||
|
||||
assert isinstance(result, TestModel)
|
||||
assert isinstance(result, SampleModel)
|
||||
assert result.name == "test"
|
||||
assert result.value == 42
|
||||
|
||||
|
|
@ -137,7 +137,7 @@ class TestTgBackendInterface:
|
|||
data = {"name": "test"}
|
||||
|
||||
with pytest.raises(ValidationError):
|
||||
interface._deserialize_response(data, TestModel)
|
||||
interface._deserialize_response(data, SampleModel)
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_handle_response_success(self):
|
||||
|
|
@ -151,9 +151,9 @@ class TestTgBackendInterface:
|
|||
mock_response.json.return_value = {"name": "test", "value": 42}
|
||||
mock_response.raise_for_status = MagicMock()
|
||||
|
||||
result = await interface._handle_response(mock_response, TestModel)
|
||||
result = await interface._handle_response(mock_response, SampleModel)
|
||||
|
||||
assert isinstance(result, TestModel)
|
||||
assert isinstance(result, SampleModel)
|
||||
assert result.name == "test"
|
||||
mock_response.raise_for_status.assert_called_once()
|
||||
|
||||
|
|
@ -237,9 +237,9 @@ class TestTgBackendInterface:
|
|||
with patch('app.interfaces.base.httpx.AsyncClient', return_value=mock_client):
|
||||
interface = TgBackendInterface(api_prefix="http://api.example.com")
|
||||
|
||||
result = await interface.get("/users", params={"id": 123}, response_model=TestModel)
|
||||
result = await interface.get("/users", params={"id": 123}, response_model=SampleModel)
|
||||
|
||||
assert isinstance(result, TestModel)
|
||||
assert isinstance(result, SampleModel)
|
||||
assert result.name == "test"
|
||||
mock_client.get.assert_called_once()
|
||||
call_args = mock_client.get.call_args
|
||||
|
|
@ -259,11 +259,11 @@ class TestTgBackendInterface:
|
|||
|
||||
with patch('app.interfaces.base.httpx.AsyncClient', return_value=mock_client):
|
||||
interface = TgBackendInterface(api_prefix="http://api.example.com")
|
||||
body = TestModel(name="new", value=50)
|
||||
body = SampleModel(name="new", value=50)
|
||||
|
||||
result = await interface.post("/users", body=body, response_model=TestModel)
|
||||
result = await interface.post("/users", body=body, response_model=SampleModel)
|
||||
|
||||
assert isinstance(result, TestModel)
|
||||
assert isinstance(result, SampleModel)
|
||||
assert result.name == "created"
|
||||
mock_client.post.assert_called_once()
|
||||
call_args = mock_client.post.call_args
|
||||
|
|
@ -303,11 +303,11 @@ class TestTgBackendInterface:
|
|||
|
||||
with patch('app.interfaces.base.httpx.AsyncClient', return_value=mock_client):
|
||||
interface = TgBackendInterface(api_prefix="http://api.example.com")
|
||||
body = TestModel(name="updated", value=75)
|
||||
body = SampleModel(name="updated", value=75)
|
||||
|
||||
result = await interface.put("/users/1", body=body, response_model=TestModel)
|
||||
result = await interface.put("/users/1", body=body, response_model=SampleModel)
|
||||
|
||||
assert isinstance(result, TestModel)
|
||||
assert isinstance(result, SampleModel)
|
||||
assert result.name == "updated"
|
||||
mock_client.put.assert_called_once()
|
||||
call_args = mock_client.put.call_args
|
||||
|
|
@ -373,7 +373,7 @@ class TestTgBackendInterface:
|
|||
|
||||
with patch('app.interfaces.base.httpx.AsyncClient', return_value=mock_client):
|
||||
interface = TgBackendInterface(api_prefix="http://api.example.com")
|
||||
body = TestModel(name="test", value=1)
|
||||
body = SampleModel(name="test", value=1)
|
||||
|
||||
with pytest.raises(httpx.HTTPStatusError):
|
||||
await interface.post("/users", body=body)
|
||||
|
|
|
|||
Loading…
Reference in New Issue