registry
registry copied to clipboard
Fix: Align domain contact duplication logic and notifications
Close #2788
This commit refines the contact duplication checks and notification messages for domain creation and updates, ensuring consistency and addressing a bug in domain updates.
Key Changes:
-
Consistent Duplicate Contact Handling:
- The
check_for_cross_role_duplicates,remove_duplicate_contacts, andduplicate_contact?methods are now more closely aligned betweenDomainCreateandDomainUpdateinteractors. DomainUpdatenow correctly usesadmin_contact_ids=andtech_contact_ids=to assign filtered contacts. This resolves aPG::UniqueViolationerror that occurred when trying to re-associate existing contacts using_attributes=methods.- The
duplicate_contact?method inDomainCreatewas updated to matchDomainUpdate, primarily checking for semantic duplicates based on attributes (name, ident, email, phone) rather than also including acontact.codecheck, which is more suitable for cross-role duplication.
- The
-
Standardized Notification Messages:
- The
notify_about_removed_duplicatesmethod in both interactors now generates a more concise message: ". [Role] contact [CODE] was discarded as duplicate;" for each discarded contact. - This message is appended to
domain.skipped_domain_contacts_validation.
- The
-
EPP & REPP Response Updates:
- The
messagemethod inRepp::V1::DomainsControllernow correctly appendsdomain.skipped_domain_contacts_validationto the "Command completed successfully" message, ensuring it appears in REPP JSON responses for both create and update. - The EPP XML views (
app/views/epp/domains/create.xml.builderandapp/views/epp/domains/success.xml.builder) are updated to dynamically includedomain.skipped_domain_contacts_validationin the<msg>tag.
- The
-
Model Attribute:
- Added
skipped_domain_contacts_validationas a string attribute to theDomainmodel to store these notification messages.
- Added
-
Test Refinements (Implicit):
- The related test suite for domain updates (
test/integration/epp/domain/base_test.rb) was being updated to reflect these logic changes and assert the correct notification messages.
- The related test suite for domain updates (
These changes improve the robustness and consistency of contact management during domain operations, providing clearer feedback to users about discarded duplicate contacts.
It works fine on domain creation, but there are issue with domain update.
- adding duplicate contact object to admin or tech will result with the message about discarding the duplicate object, but in reality it is added. On next update the old ones are removed but if i try to add another the new ones are added again. So you end up with something like this:
and now records about any of this in the history:
- changing an existing contact to be identical with another object linked to the same domain will result with unsupported contect type error when trying to add another contact object to the same role. If adding contact to a different role then warning about duplicates is shown, but the duplicate contact is not removed