diff --git a/craftgate/adapter/fraud_adapter.py b/craftgate/adapter/fraud_adapter.py index 5bb6699..2afb2d2 100644 --- a/craftgate/adapter/fraud_adapter.py +++ b/craftgate/adapter/fraud_adapter.py @@ -41,7 +41,7 @@ def search_fraud_rules(self, request: SearchFraudRuleRequest) -> FraudRuleRespon url=self.request_options.base_url + path, headers=headers, body=None, - response_type=FraudCheckListResponse + response_type=FraudRuleResponse ) def update_fraud_check_status(self, request: UpdateFraudCheckStatusRequest) -> None: diff --git a/craftgate/model/__init__.py b/craftgate/model/__init__.py index 6bbff6f..52e57a2 100644 --- a/craftgate/model/__init__.py +++ b/craftgate/model/__init__.py @@ -20,6 +20,7 @@ from .fraud_check_status import FraudCheckStatus from .fraud_operation import FraudOperation from .fraud_result import FraudResult +from .fraud_rule_scope import FraudRuleScope from .fraud_value import FraudValue from .fraud_value_type import FraudValueType from .loyalty import Loyalty diff --git a/craftgate/model/fraud_rule_scope.py b/craftgate/model/fraud_rule_scope.py new file mode 100644 index 0000000..a97905d --- /dev/null +++ b/craftgate/model/fraud_rule_scope.py @@ -0,0 +1,6 @@ +from enum import Enum + + +class FraudRuleScope(str, Enum): + MERCHANT = "MERCHANT" + GLOBAL = "GLOBAL" diff --git a/craftgate/request/search_fraud_rule_request.py b/craftgate/request/search_fraud_rule_request.py index 2e6a1c3..bcf439c 100644 --- a/craftgate/request/search_fraud_rule_request.py +++ b/craftgate/request/search_fraud_rule_request.py @@ -3,6 +3,7 @@ from craftgate.model.fraud_action import FraudAction from craftgate.model.fraud_operation import FraudOperation +from craftgate.model.fraud_rule_scope import FraudRuleScope from craftgate.request.common.base_request import BaseRequest class SearchFraudRuleRequest(BaseRequest): @@ -13,6 +14,7 @@ def __init__( max_created_date: Optional[datetime] = None, action: Optional[FraudAction] = None, operation: Optional[FraudOperation] = None, + scope: Optional[FraudRuleScope] = None, page: Optional[int] = None, size: Optional[int] = None, ) -> None: @@ -20,6 +22,7 @@ def __init__( self.size = size self.action = action self.operation = operation + self.scope = scope self.name = name self.min_created_date = min_created_date self.max_created_date = max_created_date diff --git a/craftgate/response/dto/fraud_check.py b/craftgate/response/dto/fraud_check.py index f73bd07..03f9400 100644 --- a/craftgate/response/dto/fraud_check.py +++ b/craftgate/response/dto/fraud_check.py @@ -18,6 +18,7 @@ def __init__( rule_id: Optional[int] = None, rule_name: Optional[str] = None, rule_conditions: Optional[str] = None, + is_global_rule: Optional[bool] = None, payment_id: Optional[int] = None, payment_status: Optional[PaymentStatus] = None ) -> None: @@ -29,5 +30,6 @@ def __init__( self.rule_id = rule_id self.rule_name = rule_name self.rule_conditions = rule_conditions + self.is_global_rule = is_global_rule self.payment_id = payment_id self.payment_status = payment_status diff --git a/craftgate/response/dto/fraud_rule.py b/craftgate/response/dto/fraud_rule.py index 5059b18..7f938e3 100644 --- a/craftgate/response/dto/fraud_rule.py +++ b/craftgate/response/dto/fraud_rule.py @@ -12,7 +12,8 @@ def __init__( name: Optional[str] = None, action: Optional[FraudAction] = None, conditions: Optional[str] = None, - operations: Optional[List[FraudOperation]] = None + operations: Optional[List[FraudOperation]] = None, + is_global: Optional[bool] = None ) -> None: self.id = id self.status = status @@ -20,3 +21,4 @@ def __init__( self.name = name self.conditions = conditions self.operations = operations + self.is_global = is_global diff --git a/tests/test_fraud_adapter.py b/tests/test_fraud_adapter.py index 1518cc4..a9989e0 100644 --- a/tests/test_fraud_adapter.py +++ b/tests/test_fraud_adapter.py @@ -4,7 +4,7 @@ from datetime import datetime, timedelta from craftgate import Craftgate, RequestOptions -from craftgate.model import FraudAction, FraudValueType, FraudCheckStatus +from craftgate.model import FraudAction, FraudValueType, FraudCheckStatus, FraudRuleScope from craftgate.model.fraud_operation import FraudOperation from craftgate.request import DeleteValueListRequest, FraudValueListRequest, RemoveValueFromValueListRequest, \ SearchFraudChecksRequest, UpdateFraudCheckStatusRequest @@ -95,6 +95,15 @@ def test_search_fraud_rules(self): self.assertIsNotNone(resp) self.assertTrue(resp.items) + def test_search_global_fraud_rules(self): + req = SearchFraudRuleRequest(scope=FraudRuleScope.GLOBAL) + resp = self.fraud.search_fraud_rules(req) + print(resp) + + self.assertIsNotNone(resp) + self.assertTrue(resp.items) + self.assertTrue(all(item.is_global for item in resp.items)) + def test_update_fraud_check_status(self): self.fraud.update_fraud_check_status(UpdateFraudCheckStatusRequest( id=int(2613), check_status=FraudCheckStatus.FRAUD))