From 62c3769108cc19580792c15afd10e769bfa68954 Mon Sep 17 00:00:00 2001 From: Peter Eckel Date: Tue, 17 Oct 2023 20:31:28 +0200 Subject: [PATCH] Check the type of a record when testing for uniqueness --- netbox_dns/models.py | 3 ++- netbox_dns/tests/record/test_uniqueness.py | 23 ++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/netbox_dns/models.py b/netbox_dns/models.py index 9d0e731d..ccb05f59 100644 --- a/netbox_dns/models.py +++ b/netbox_dns/models.py @@ -969,13 +969,14 @@ def check_unique(self): records = Record.objects.filter( zone=self.zone, name=self.name, + type=self.type, value=self.value, status__in=Record.ACTIVE_STATUS_LIST, ) if len(records): raise ValidationError( { - "value": f"There is already an active record for name {self.name} in zone {self.zone} with value {self.value}." + "value": f"There is already an active {self.type} record for name {self.name} in zone {self.zone} with value {self.value}." } ) from None diff --git a/netbox_dns/tests/record/test_uniqueness.py b/netbox_dns/tests/record/test_uniqueness.py index 3e90551a..d7eee038 100644 --- a/netbox_dns/tests/record/test_uniqueness.py +++ b/netbox_dns/tests/record/test_uniqueness.py @@ -67,6 +67,29 @@ def test_create_duplicate_records_ok(self): ) f_record.save() + @override_settings( + PLUGINS_CONFIG={ + "netbox_dns": { + "enforce_unique_records": True, + } + } + ) + def test_create_different_type_records_ok(self): + f_zone = self.zones[0] + + records = [ + {"name": "test1", "type": RecordTypeChoices.A, "value": "10.0.1.42"}, + {"name": "test1", "type": RecordTypeChoices.TXT, "value": "10.0.1.42"}, + ] + + for record in records: + f_record = Record( + zone=f_zone, + **record, + **self.record_data, + ) + f_record.save() + @override_settings( PLUGINS_CONFIG={ "netbox_dns": {