Coverage for api/services/minio_policy_setter.py: 67%
9 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
1from exceptions import UnexpectedUserRoleError
2from sotrans_models.models.roles import SotransRole
3from sotrans_models.models.users import (
4 SotransKeycloakUserCreateModel,
5 SotransKeycloakUserCreateModelWithMinioPolicy,
6)
9class MinioPolicySetter:
10 """Service for setting minio policy attribute for sotrans users respectively to their roles"""
12 def set_policy_according_to_roles(self, initial_roles: list[str]) -> str:
13 """Parse list of roles and set policy accordingly"""
15 # match initial_roles:
16 # case [SotransRole.company_logistician.value] | [
17 # SotransRole.carrier_logistician.value
18 # ]:
19 # policy = "readonly"
20 # case _:
21 # raise UnexpectedUserRoleError
22 # return policy
23 return "readonly"
25 def create_new_model_with_minio_policy_attr(
26 self,
27 base_user: SotransKeycloakUserCreateModel,
28 initial_roles: list[str],
29 ) -> SotransKeycloakUserCreateModelWithMinioPolicy:
30 """Get suitable policy from initial roles list and return new updated model"""
32 policy = self.set_policy_according_to_roles(initial_roles)
33 return SotransKeycloakUserCreateModelWithMinioPolicy(
34 **base_user.model_dump(exclude_unset=True), policy=policy
35 )