| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import pytest
- import auth_utils
- def test_submit_review_unauthorized(client):
- response = client.post("/orders/123/review", json={"rating": 5, "review_text": "Great!"})
- assert response.status_code == 401
- assert response.json()["detail"] == "Not authenticated"
- def test_submit_review_success(client, db_mock, mocker):
- # Mock order ownership check
- db_mock.execute_query.return_value = [{"id": 123, "status": "shipped"}]
- db_mock.execute_commit.return_value = None
-
- # Mock audit log
- mocker.patch("routers.orders.audit_service.log", new_callable=mocker.AsyncMock)
-
- token = auth_utils.create_access_token({"id": 1, "role": "user", "email": "user@example.com"})
-
- response = client.post(
- "/orders/123/review",
- headers={"Authorization": f"Bearer {token}"},
- json={"rating": 5, "review_text": "Excellent service!"}
- )
-
- assert response.status_code == 200
- assert "Review submitted successfully" in response.json()["message"]
- # Verify DB update
- assert db_mock.execute_commit.called
- def test_admin_get_reviews_unauthorized(client):
- response = client.get("/admin/reviews")
- assert response.status_code == 401
- def test_admin_get_reviews_as_user(client):
- token = auth_utils.create_access_token({"id": 1, "role": "user", "email": "user@example.com"})
- response = client.get("/admin/reviews", headers={"Authorization": f"Bearer {token}"})
- assert response.status_code == 403 # Admin role required
- def test_admin_toggle_review_approval(client, db_mock):
- # Mock admin user
- token = auth_utils.create_access_token({"id": 99, "role": "admin", "email": "admin@radionica3d.me"})
-
- # Mock existing order info for the PATCH update
- db_mock.execute_query.return_value = [{"id": 123, "user_id": 1, "status": "completed"}]
-
- response = client.patch(
- "/orders/123",
- headers={"Authorization": f"Bearer {token}"},
- json={"review_approved": True}
- )
-
- assert response.status_code == 200
- assert response.json()["status"] == "updated"
- # Verify that review_approved was in the update query
- found_approved = False
- for call in db_mock.execute_commit.call_args_list:
- if "review_approved" in call[0][0]:
- found_approved = True
- break
- assert found_approved
|