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

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 

7 

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) 

20 

21 

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 == {} 

31 

32 

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 

54 

55 

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 

63 

64 

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 ) 

72 

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 ] 

78 

79 query_bson = assigned_subsidiary_or_logistician_for_order_query( 

80 organization_with_logistician[0] 

81 ) 

82 

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 ]