Coverage for tests/tests_unit/test_authorization.py: 35%
31 statements
« prev ^ index » next coverage.py v7.6.2, created at 2024-10-10 03:02 +0300
« prev ^ index » next coverage.py v7.6.2, created at 2024-10-10 03:02 +0300
1import pytest
2from handlers.authorization.company_employee_access import (
3 assert_is_assigned_to_client_query,
4 assigned_subsidiary_or_logistician_for_order_query,
5)
6from sotrans_models.models.orders.order import OrderDBModel
8from ..conftest import (
9 shared_oid,
10 shared_org_id,
11 shared_uuid,
12 sotrans_company_dir,
13 sotrans_company_logisitician,
14)
15from ..filter_fixtures import ( # these 2 are needed as transient dependencies
16 organization_with_logistician,
17 users_clients,
18 users_organization,
19)
22@pytest.mark.asyncio
23# @pytest.mark.skip("function was refactored with new name")
24async def test_assigned_subsidiary_or_logistician_for_cd(
25 users_organization, shared_uuid
26):
27 query = assigned_subsidiary_or_logistician_for_order_query(
28 users_organization[0]
29 )
30 assert query == {}
33@pytest.mark.asyncio
34# @pytest.mark.xfail # New subsidiary schema
35async def test_assigned_subsidiary_or_log_for_cl(
36 organization_with_logistician, shared_uuid, shared_org_id
37):
38 query = assigned_subsidiary_or_logistician_for_order_query(
39 organization_with_logistician[0], to_grabber=True
40 )
41 assert {
42 OrderDBModel.assigned.company.subsidiary.id: str(
43 shared_org_id
44 ) # str(organization_with_logistician[1].id)
45 } in query["$or"]
46 for subq in query["$or"]:
47 if OrderDBModel.assigned.company.employee.id in subq:
48 assert (
49 str(shared_uuid)
50 == subq[OrderDBModel.assigned.company.employee.id]
51 )
52 return
53 assert False
56@pytest.mark.asyncio
57async def test_assigned_clients_filter(users_clients, shared_oid):
58 restriction_q = await assert_is_assigned_to_client_query(users_clients)
59 if "$or" in restriction_q:
60 assert {"client.id": {"$in": [shared_oid]}} in restriction_q["$or"]
61 return
62 assert {"client.id": {"$in": [shared_oid]}} == restriction_q
65@pytest.mark.asyncio
66async def test_assigned_logisitician(
67 organization_with_logistician, shared_uuid, shared_org_id
68):
69 query = assigned_subsidiary_or_logistician_for_order_query(
70 organization_with_logistician[0], to_grabber=True
71 )
73 assert "$or" in query and query["$or"] == [
74 {OrderDBModel.client.subsidiary.id: str(shared_org_id)},
75 {OrderDBModel.assigned.company.subsidiary.id: str(shared_org_id)},
76 {OrderDBModel.assigned.company.employee.id: str(shared_uuid)},
77 ]
79 query_bson = assigned_subsidiary_or_logistician_for_order_query(
80 organization_with_logistician[0]
81 )
83 assert "$or" in query_bson and query_bson["$or"] == [
84 {OrderDBModel.client.subsidiary.id: shared_org_id},
85 {OrderDBModel.assigned.company.subsidiary.id: shared_org_id},
86 {OrderDBModel.assigned.company.employee.id: shared_uuid},
87 ]