diff --git a/src/registrar/management/commands/extend_expiration_dates.py b/src/registrar/management/commands/extend_expiration_dates.py index 7372e2412..4f9462a49 100644 --- a/src/registrar/management/commands/extend_expiration_dates.py +++ b/src/registrar/management/commands/extend_expiration_dates.py @@ -9,9 +9,9 @@ from django.core.management import BaseCommand from epplibwrapper.errors import RegistryError from registrar.models import Domain from registrar.management.commands.utility.terminal_helper import TerminalColors, TerminalHelper -from datetime import datetime from registrar.models.transition_domain import TransitionDomain + try: from epplib.exceptions import TransportError except ImportError: @@ -94,7 +94,9 @@ class Command(BaseCommand): domain.renew_domain(extension_amount) self.update_success.append(domain.name) logger.info( - f"{TerminalColors.OKCYAN}" f"Successfully updated expiration date for {domain}" f"{TerminalColors.ENDC}" + f"{TerminalColors.OKCYAN}" + f"Successfully updated expiration date for {domain}" + f"{TerminalColors.ENDC}" ) # Catches registry errors. Failures indicate bad data, or a faulty connection. except (RegistryError, KeyError, TransportError) as err: @@ -117,8 +119,7 @@ class Command(BaseCommand): # CAVEAT: This is a workaround. A more robust solution would be a db flag current_expiration_date = domain.registry_expiration_date transition_domains = TransitionDomain.objects.filter( - domain_name=domain.name, - epp_expiration_date=current_expiration_date + domain_name=domain.name, epp_expiration_date=current_expiration_date ) proposed_date = self.add_years(current_expiration_date, extension_amount) minimum_extension_date = self.add_years(self.expiration_cutoff, extension_amount) diff --git a/src/registrar/tests/common.py b/src/registrar/tests/common.py index 5e1f324a7..337b6f31e 100644 --- a/src/registrar/tests/common.py +++ b/src/registrar/tests/common.py @@ -619,6 +619,17 @@ class MockEppLib(TestCase): ], ex_date=datetime.date(2023, 5, 25), ) + mockDataExtensionDomain = fakedEppObject( + "fakePw", + cr_date=datetime.datetime(2023, 5, 25, 19, 45, 35), + contacts=[common.DomainContact(contact="123", type=PublicContact.ContactTypeChoices.SECURITY)], + hosts=["fake.host.com"], + statuses=[ + common.Status(state="serverTransferProhibited", description="", lang="en"), + common.Status(state="inactive", description="", lang="en"), + ], + ex_date=datetime.date(2023, 11, 15), + ) mockDataInfoContact = mockDataInfoDomain.dummyInfoContactResultData( "123", "123@mail.gov", datetime.datetime(2023, 5, 25, 19, 45, 35), "lastPw" ) @@ -826,7 +837,7 @@ class MockEppLib(TestCase): mockRecentRenewedDomainExpDate = fakedEppObject( "waterbutpurple.gov", - ex_date=datetime.date(2025, 1, 10), + ex_date=datetime.date(2024, 11, 15), ) def _mockDomainName(self, _name, _avail=False): @@ -962,6 +973,7 @@ class MockEppLib(TestCase): self.infoDomainTwoHosts if self.mockedSendFunction.call_count == 5 else self.infoDomainNoHost, None, ), + "waterbutpurple.gov": (self.mockDataExtensionDomain, None), "nameserverwithip.gov": (self.infoDomainHasIP, None), "namerserversubdomain.gov": (self.infoDomainCheckHostIPCombo, None), "freeman.gov": (self.InfoDomainWithContacts, None), diff --git a/src/registrar/tests/test_transition_domain_migrations.py b/src/registrar/tests/test_transition_domain_migrations.py index d6b0eda0f..d3b81c42b 100644 --- a/src/registrar/tests/test_transition_domain_migrations.py +++ b/src/registrar/tests/test_transition_domain_migrations.py @@ -32,7 +32,7 @@ class TestExtendExpirationDates(MockEppLib): TransitionDomain.objects.get_or_create( username="testytester@mail.com", domain_name="waterbutpurple.gov", - epp_expiration_date=datetime.date(2023, 11, 15) + epp_expiration_date=datetime.date(2023, 11, 15), ) # Create a domain with an invalid expiration date Domain.objects.get_or_create( @@ -41,7 +41,7 @@ class TestExtendExpirationDates(MockEppLib): TransitionDomain.objects.get_or_create( username="themoonisactuallycheese@mail.com", domain_name="fake.gov", - epp_expiration_date=datetime.date(2022, 5, 25) + epp_expiration_date=datetime.date(2022, 5, 25), ) # Create a domain with an invalid state Domain.objects.get_or_create( @@ -50,7 +50,7 @@ class TestExtendExpirationDates(MockEppLib): TransitionDomain.objects.get_or_create( username="fakeneeded@mail.com", domain_name="fakeneeded.gov", - epp_expiration_date=datetime.date(2023, 11, 15) + epp_expiration_date=datetime.date(2023, 11, 15), ) def tearDown(self): @@ -84,16 +84,18 @@ class TestExtendExpirationDates(MockEppLib): Tests that the extend_expiration_dates method extends dates as expected """ desired_domain = Domain.objects.filter(name="waterbutpurple.gov").get() - desired_domain.expiration_date = datetime.date(2025, 1, 10) + desired_domain.expiration_date = datetime.date(2024, 11, 15) # Run the expiration date script self.run_extend_expiration_dates() current_domain = Domain.objects.filter(name="waterbutpurple.gov").get() + x = TransitionDomain.objects.filter(domain_name=current_domain.name).get() self.assertEqual(desired_domain, current_domain) - + print(f"wtf is going on {current_domain.__dict__}") + print(f"wtf is going on2 {x.__dict__}") # Explicitly test the expiration date - self.assertEqual(current_domain.expiration_date, datetime.date(2025, 1, 10)) + self.assertEqual(current_domain.expiration_date, datetime.date(2024, 11, 15)) def test_extends_expiration_date_skips_non_current(self): """