From 9e19d35ce85d4809fd362af6bc4ac46e88086ffe Mon Sep 17 00:00:00 2001 From: Viren Nadkarni Date: Sat, 10 Dec 2022 05:22:05 +0530 Subject: [PATCH] Route53: Record overwrites: fix error msg (#5747) --- moto/route53/exceptions.py | 7 +++++-- moto/route53/models.py | 9 +++++++-- tests/terraformtests/terraform-tests.success.txt | 4 ++-- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/moto/route53/exceptions.py b/moto/route53/exceptions.py index d7ef8ff03..ec998bfc1 100644 --- a/moto/route53/exceptions.py +++ b/moto/route53/exceptions.py @@ -177,5 +177,8 @@ class DnsNameInvalidForZone(Route53ClientError): class ChangeSetAlreadyExists(Route53ClientError): code = 400 - def __init__(self): - super().__init__("InvalidChangeBatch", "Provided Change is a duplicate") + def __init__(self, action: str, name: str, _type: str): + super().__init__( + "InvalidChangeBatch", + f"Tried to {action.lower()} resource record set [name='{name}', type='{_type}'] but it already exists", + ) diff --git a/moto/route53/models.py b/moto/route53/models.py index 2b6f6a643..a1e0fb5a7 100644 --- a/moto/route53/models.py +++ b/moto/route53/models.py @@ -532,8 +532,13 @@ class Route53Backend(BaseBackend): def change_resource_record_sets(self, zoneid, change_list) -> None: the_zone = self.get_hosted_zone(zoneid) - if any([rr for rr in change_list if rr in the_zone.rr_changes]): - raise ChangeSetAlreadyExists + for rr in change_list: + if rr in the_zone.rr_changes: + name = rr["ResourceRecordSet"]["Name"] + "." + _type = rr["ResourceRecordSet"]["Type"] + raise ChangeSetAlreadyExists( + action=rr["Action"], name=name, _type=_type + ) for value in change_list: original_change = copy.deepcopy(value) diff --git a/tests/terraformtests/terraform-tests.success.txt b/tests/terraformtests/terraform-tests.success.txt index 811fa29e8..edba3828f 100644 --- a/tests/terraformtests/terraform-tests.success.txt +++ b/tests/terraformtests/terraform-tests.success.txt @@ -290,8 +290,8 @@ route53|1: - TestAccRoute53Record_setIdentifierChange - TestAccRoute53Record_empty - TestAccRoute53Record_longTXTrecord - - TestAccRoute53Record_doNotAllowOverwrite - - TestAccRoute53Record_allowOverwrite + - TestAccRoute53Record_Allow_doNotOverwrite + - TestAccRoute53Record_Allow_overwrite route53|2: - TestAccRoute53Zone_ - TestAccRoute53ZoneAssociation