| from unittest.mock import MagicMock |
|
|
| import pytest |
|
|
| from server.services.propose_change_service import ProposeChangeService |
|
|
|
|
| @pytest.mark.asyncio |
| async def test_department_isolation_physical_logic(): |
| """ |
| Physically verifies that a Manager can only see proposals |
| belonging to their own department via the JSONB filter. |
| """ |
| |
| mock_db = MagicMock() |
|
|
| |
| |
| all_proposals = [ |
| {"id": "p1", "request_payload": {"created_by_dept": "Marketing"}, "change_summary": "Marketing Blog"}, |
| {"id": "p2", "request_payload": {"created_by_dept": "Sales"}, "change_summary": "Sales Pitch"}, |
| {"id": "p3", "request_payload": {"created_by_dept": "Marketing"}, "change_summary": "Another Ad"}, |
| ] |
|
|
| |
| manager_marketing = {"id": "m1", "department": "Marketing", "role": "manager"} |
| manager_sales = {"id": "m2", "department": "Sales", "role": "manager"} |
|
|
| service = ProposeChangeService(db_client=mock_db) |
|
|
| |
| |
| mock_db.table.return_value.select.return_value.eq.return_value.execute.return_value.data = [ |
| manager_marketing |
| ] |
|
|
| |
| |
| mock_query = mock_db.table.return_value.select.return_value.eq.return_value.filter.return_value.order.return_value |
| mock_query.execute.return_value.data = [ |
| p for p in all_proposals if p["request_payload"]["created_by_dept"] == "Marketing" |
| ] |
|
|
| res_marketing = await service.list_proposals(user_id="m1") |
|
|
| |
| assert len(res_marketing) == 2 |
| assert all(p["request_payload"]["created_by_dept"] == "Marketing" for p in res_marketing) |
| print("\n✅ Assertion Passed: Marketing Manager only sees Marketing proposals.") |
|
|
| |
| mock_db.table.return_value.select.return_value.eq.return_value.execute.return_value.data = [ |
| manager_sales |
| ] |
| mock_query.execute.return_value.data = [ |
| p for p in all_proposals if p["request_payload"]["created_by_dept"] == "Sales" |
| ] |
|
|
| res_sales = await service.list_proposals(user_id="m2") |
|
|
| |
| assert len(res_sales) == 1 |
| assert res_sales[0]["request_payload"]["created_by_dept"] == "Sales" |
| print("✅ Assertion Passed: Sales Manager only sees Sales proposals.") |
|
|
|
|
| if __name__ == "__main__": |
| pytest.main([__file__]) |
|
|