diff --git a/moto/organizations/exceptions.py b/moto/organizations/exceptions.py index e3a21761d6e9..4a08438f93eb 100644 --- a/moto/organizations/exceptions.py +++ b/moto/organizations/exceptions.py @@ -109,3 +109,10 @@ def __init__(self) -> None: super().__init__( "TargetNotFoundException", "You specified a target that doesn't exist." ) + + +class PolicyNotFoundException(JsonRESTError): + code = 400 + + def __init__(self, message: str) -> None: + super().__init__("PolicyNotFoundException", message) diff --git a/moto/organizations/models.py b/moto/organizations/models.py index 21c09f5aeb32..92bfd290e283 100644 --- a/moto/organizations/models.py +++ b/moto/organizations/models.py @@ -16,6 +16,7 @@ AWSOrganizationsNotInUseException, AccountNotRegisteredException, RootNotFoundException, + PolicyNotFoundException, PolicyTypeAlreadyEnabledException, PolicyTypeNotEnabledException, TargetNotFoundException, @@ -599,8 +600,7 @@ def describe_policy(self, **kwargs: Any) -> Dict[str, Any]: (p for p in self.policies if p.id == kwargs["PolicyId"]), None ) if policy is None: - raise RESTError( - "PolicyNotFoundException", + raise PolicyNotFoundException( "You specified a policy that doesn't exist.", ) else: @@ -612,8 +612,7 @@ def get_policy_by_id(self, policy_id: str) -> FakePolicy: (policy for policy in self.policies if policy.id == policy_id), None ) if policy is None: - raise RESTError( - "PolicyNotFoundException", + raise PolicyNotFoundException( "We can't find a policy with the PolicyId that you specified.", ) return policy @@ -668,8 +667,7 @@ def delete_policy(self, **kwargs: Any) -> None: ) del self.policies[idx] return - raise RESTError( - "PolicyNotFoundException", + raise PolicyNotFoundException( "We can't find a policy with the PolicyId that you specified.", ) @@ -735,8 +733,7 @@ def list_targets_for_policy(self, **kwargs: Any) -> Dict[str, Any]: (p for p in self.policies if p.id == kwargs["PolicyId"]), None ) if policy is None: - raise RESTError( - "PolicyNotFoundException", + raise PolicyNotFoundException( "You specified a policy that doesn't exist.", ) else: diff --git a/tests/test_organizations/test_organizations_boto3.py b/tests/test_organizations/test_organizations_boto3.py index c10dafc39261..78bfa05ac4a9 100644 --- a/tests/test_organizations/test_organizations_boto3.py +++ b/tests/test_organizations/test_organizations_boto3.py @@ -683,8 +683,10 @@ def test_describe_policy_exception(): client.describe_policy(PolicyId=policy_id) ex = e.value assert ex.operation_name == "DescribePolicy" - assert ex.response["Error"]["Code"] == "400" - assert "PolicyNotFoundException" in ex.response["Error"]["Message"] + assert ex.response["Error"]["Code"] == "PolicyNotFoundException" + assert ( + ex.response["Error"]["Message"] == "You specified a policy that doesn't exist." + ) with pytest.raises(ClientError) as e: client.describe_policy(PolicyId="meaninglessstring") ex = e.value @@ -896,8 +898,11 @@ def test_delete_policy_exception(): client.delete_policy(PolicyId=non_existent_policy_id) ex = e.value assert ex.operation_name == "DeletePolicy" - assert ex.response["Error"]["Code"] == "400" - assert "PolicyNotFoundException" in ex.response["Error"]["Message"] + assert ex.response["Error"]["Code"] == "PolicyNotFoundException" + assert ( + ex.response["Error"]["Message"] + == "We can't find a policy with the PolicyId that you specified." + ) # Attempt to delete an attached policy policy_id = client.create_policy( @@ -993,8 +998,11 @@ def test_update_policy_exception(): client.update_policy(PolicyId=non_existent_policy_id) ex = e.value assert ex.operation_name == "UpdatePolicy" - assert ex.response["Error"]["Code"] == "400" - assert "PolicyNotFoundException" in ex.response["Error"]["Message"] + assert ex.response["Error"]["Code"] == "PolicyNotFoundException" + assert ( + ex.response["Error"]["Message"] + == "We can't find a policy with the PolicyId that you specified." + ) @mock_organizations @@ -1145,8 +1153,10 @@ def test_list_targets_for_policy_exception(): client.list_targets_for_policy(PolicyId=policy_id) ex = e.value assert ex.operation_name == "ListTargetsForPolicy" - assert ex.response["Error"]["Code"] == "400" - assert "PolicyNotFoundException" in ex.response["Error"]["Message"] + assert ex.response["Error"]["Code"] == "PolicyNotFoundException" + assert ( + ex.response["Error"]["Message"] == "You specified a policy that doesn't exist." + ) with pytest.raises(ClientError) as e: client.list_targets_for_policy(PolicyId="meaninglessstring") ex = e.value