From 9df845cc1bcc4ca82f8b9c0c8382f5242d1e18ed Mon Sep 17 00:00:00 2001 From: Luke Simons <66132484+siluk-aws@users.noreply.github.com> Date: Fri, 27 Oct 2023 13:59:26 +0100 Subject: [PATCH] Align organizations PolicyNotFoundException with boto3 response (#6955) --- moto/organizations/exceptions.py | 7 +++++ moto/organizations/models.py | 13 ++++------ .../test_organizations_boto3.py | 26 +++++++++++++------ 3 files changed, 30 insertions(+), 16 deletions(-) diff --git a/moto/organizations/exceptions.py b/moto/organizations/exceptions.py index e3a21761d..4a08438f9 100644 --- a/moto/organizations/exceptions.py +++ b/moto/organizations/exceptions.py @@ -109,3 +109,10 @@ class TargetNotFoundException(JsonRESTError): 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 21c09f5ae..92bfd290e 100644 --- a/moto/organizations/models.py +++ b/moto/organizations/models.py @@ -16,6 +16,7 @@ from moto.organizations.exceptions import ( AWSOrganizationsNotInUseException, AccountNotRegisteredException, RootNotFoundException, + PolicyNotFoundException, PolicyTypeAlreadyEnabledException, PolicyTypeNotEnabledException, TargetNotFoundException, @@ -599,8 +600,7 @@ class OrganizationsBackend(BaseBackend): (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 @@ class OrganizationsBackend(BaseBackend): (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 @@ class OrganizationsBackend(BaseBackend): ) 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 @@ class OrganizationsBackend(BaseBackend): (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 c10dafc39..78bfa05ac 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