From b434934b38ad7fd07621431db28f481a2a668725 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Sun, 6 Nov 2022 13:04:52 -0400 Subject: [PATCH 1/6] test: compare UTC dates in test_search_mail_archive() --- ietf/doc/tests_review.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ietf/doc/tests_review.py b/ietf/doc/tests_review.py index a504d8b58d1..bffd1fd270a 100644 --- a/ietf/doc/tests_review.py +++ b/ietf/doc/tests_review.py @@ -526,7 +526,7 @@ def test_search_mail_archive(self): messages = r.json()["messages"] self.assertEqual(len(messages), 2) - today = date_today() + today = date_today(datetime.timezone.utc) self.assertEqual(messages[0]["url"], "https://www.example.com/testmessage") self.assertTrue("John Doe" in messages[0]["content"]) From 63a53d581783f07ae349eb80f4b65b0ccb717732 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Sun, 6 Nov 2022 13:09:10 -0400 Subject: [PATCH 2/6] test: compare datetimes, not dates, in action holders test --- ietf/doc/tests_utils.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ietf/doc/tests_utils.py b/ietf/doc/tests_utils.py index f5f2fdd6bac..6bea96492b3 100644 --- a/ietf/doc/tests_utils.py +++ b/ietf/doc/tests_utils.py @@ -5,6 +5,7 @@ from unittest.mock import patch from django.db import IntegrityError +from django.utils import timezone from ietf.group.factories import GroupFactory, RoleFactory from ietf.name.models import DocTagName @@ -16,7 +17,6 @@ from ietf.doc.utils import (update_action_holders, add_state_change_event, update_documentauthors, fuzzy_find_documents, rebuild_reference_relations) from ietf.utils.draft import Draft, PlaintextDraft -from ietf.utils.timezone import date_today from ietf.utils.xmldraft import XMLDraft @@ -147,10 +147,10 @@ def test_update_action_holders_resets_age(self): dah.time_added = datetime.datetime(2020, 1, 1, tzinfo=datetime.timezone.utc) # arbitrary date in the past dah.save() - today = date_today() - self.assertNotEqual(doc.documentactionholder_set.get(person=self.ad).time_added.date(), today) + right_now = timezone.now() + self.assertLess(doc.documentactionholder_set.get(person=self.ad).time_added, right_now) self.update_doc_state(doc, State.objects.get(slug='ad-eval')) - self.assertEqual(doc.documentactionholder_set.get(person=self.ad).time_added.date(), today) + self.assertGreaterEqual(doc.documentactionholder_set.get(person=self.ad).time_added, right_now) def test_update_action_holders_add_tag_need_rev(self): """Adding need-rev tag adds authors as action holders""" From ab90a155a102fac2f4b7fcd89f90e138c8828c72 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Sun, 6 Nov 2022 13:25:32 -0400 Subject: [PATCH 3/6] test: adjust test to match TZ used for IPR notification message --- ietf/ipr/tests.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ietf/ipr/tests.py b/ietf/ipr/tests.py index ab6b01a5bbd..54ca13c0b64 100644 --- a/ietf/ipr/tests.py +++ b/ietf/ipr/tests.py @@ -595,7 +595,10 @@ def test_notify_generic(self): r = self.client.post(url, data ) self.assertEqual(r.status_code,302) self.assertEqual(len(outbox),2) - self.assertIn('Secretariat on '+ipr.get_latest_event_submitted().time.strftime("%Y-%m-%d"), get_payload_text(outbox[1]).replace('\n',' ')) + self.assertIn( + 'Secretariat on ' + ipr.get_latest_event_submitted().time.astimezone().strftime("%Y-%m-%d"), + get_payload_text(outbox[1]).replace('\n',' '), + ) self.assertIn(f'{settings.IDTRACKER_BASE_URL}{urlreverse("ietf.ipr.views.showlist")}', get_payload_text(outbox[1]).replace('\n',' ')) def send_ipr_email_helper(self): From ef3f222b45d7ba2869e47af95563d32a569e43f6 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Sun, 6 Nov 2022 13:32:39 -0400 Subject: [PATCH 4/6] test: fix timezone in date_today() calls for liaisons tests --- ietf/liaisons/tests.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ietf/liaisons/tests.py b/ietf/liaisons/tests.py index 845271db735..f2fd5c45291 100644 --- a/ietf/liaisons/tests.py +++ b/ietf/liaisons/tests.py @@ -700,7 +700,7 @@ def test_add_incoming_liaison(self): from_groups = [ str(g.pk) for g in Group.objects.filter(type="sdo") ] to_group = Group.objects.get(acronym="mars") submitter = Person.objects.get(user__username="marschairman") - today = date_today() + today = date_today(datetime.timezone.utc) related_liaison = liaison r = self.client.post(url, dict(from_groups=from_groups, @@ -779,7 +779,7 @@ def test_add_outgoing_liaison(self): from_group = Group.objects.get(acronym="mars") to_group = Group.objects.filter(type="sdo")[0] submitter = Person.objects.get(user__username="marschairman") - today = date_today() + today = date_today(datetime.timezone.utc) related_liaison = liaison r = self.client.post(url, dict(from_groups=str(from_group.pk), @@ -847,7 +847,7 @@ def test_add_outgoing_liaison_unapproved_post_only(self): from_group = Group.objects.get(acronym="mars") to_group = Group.objects.filter(type="sdo")[0] submitter = Person.objects.get(user__username="marschairman") - today = date_today() + today = date_today(datetime.timezone.utc) r = self.client.post(url, dict(from_groups=str(from_group.pk), from_contact=submitter.email_address(), @@ -866,7 +866,7 @@ def test_add_outgoing_liaison_unapproved_post_only(self): self.assertEqual(len(outbox), mailbox_before + 1) def test_liaison_add_attachment(self): - liaison = LiaisonStatementFactory(deadline=date_today()+datetime.timedelta(days=1)) + liaison = LiaisonStatementFactory(deadline=date_today(DEADLINE_TZINFO)+datetime.timedelta(days=1)) LiaisonStatementEventFactory(statement=liaison,type_id='submitted') self.assertEqual(liaison.attachments.count(),0) From 848fe7e892f6aac07c8b23d230ffd6d24b46c7a1 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Sun, 6 Nov 2022 14:20:33 -0400 Subject: [PATCH 5/6] test: use settings.TIME_ZONE for date in nomination tests --- ietf/nomcom/tests.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/ietf/nomcom/tests.py b/ietf/nomcom/tests.py index 0577ca558a8..a98f089e010 100644 --- a/ietf/nomcom/tests.py +++ b/ietf/nomcom/tests.py @@ -1506,11 +1506,12 @@ def test_help(self): def test_accept_reject_nomination_edges(self): self.client.logout() np = self.nc.nominee_set.order_by('pk').first().nomineeposition_set.order_by('pk').first() + date_str = np.time.astimezone().strftime("%Y%m%d") # in settings.TIME_ZONE kwargs={'year':self.nc.year(), 'nominee_position_id':np.id, 'state':'accepted', - 'date':np.time.strftime("%Y%m%d"), - 'hash':get_hash_nominee_position(np.time.strftime("%Y%m%d"),np.id), + 'date':date_str, + 'hash':get_hash_nominee_position(date_str, np.id), } url = reverse('ietf.nomcom.views.process_nomination_status', kwargs=kwargs) response = self.client.get(url) @@ -1520,8 +1521,9 @@ def test_accept_reject_nomination_edges(self): settings.DAYS_TO_EXPIRE_NOMINATION_LINK = 2 np.time = np.time - datetime.timedelta(days=3) np.save() - kwargs['date'] = np.time.strftime("%Y%m%d") - kwargs['hash'] = get_hash_nominee_position(np.time.strftime("%Y%m%d"),np.id) + date_str = np.time.astimezone().strftime("%Y%m%d") # in settings.TIME_ZONE + kwargs['date'] = date_str + kwargs['hash'] = get_hash_nominee_position(date_str, np.id) url = reverse('ietf.nomcom.views.process_nomination_status', kwargs=kwargs) response = self.client.get(url) self.assertEqual(response.status_code,403) @@ -1535,12 +1537,13 @@ def test_accept_reject_nomination_edges(self): def test_accept_reject_nomination_comment(self): np = self.nc.nominee_set.order_by('pk').first().nomineeposition_set.order_by('pk').first() - hash = get_hash_nominee_position(np.time.strftime("%Y%m%d"),np.id) + date_str = np.time.astimezone().strftime("%Y%m%d") # in settings.TIME_ZONE + hash = get_hash_nominee_position(date_str, np.id) url = reverse('ietf.nomcom.views.process_nomination_status', kwargs={'year':self.nc.year(), 'nominee_position_id':np.id, 'state':'accepted', - 'date':np.time.strftime("%Y%m%d"), + 'date':date_str, 'hash':hash, } ) From c5b4c131d4d4720073a76255532d894ad93a9941 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Sun, 6 Nov 2022 14:32:26 -0400 Subject: [PATCH 6/6] test: correctly use settings.TIME_ZONE instead of system time zone --- ietf/ipr/tests.py | 3 ++- ietf/nomcom/tests.py | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/ietf/ipr/tests.py b/ietf/ipr/tests.py index 54ca13c0b64..8554f74a7c0 100644 --- a/ietf/ipr/tests.py +++ b/ietf/ipr/tests.py @@ -7,6 +7,7 @@ from pyquery import PyQuery from urllib.parse import quote, urlparse +from zoneinfo import ZoneInfo from django.conf import settings from django.urls import reverse as urlreverse @@ -596,7 +597,7 @@ def test_notify_generic(self): self.assertEqual(r.status_code,302) self.assertEqual(len(outbox),2) self.assertIn( - 'Secretariat on ' + ipr.get_latest_event_submitted().time.astimezone().strftime("%Y-%m-%d"), + 'Secretariat on ' + ipr.get_latest_event_submitted().time.astimezone(ZoneInfo(settings.TIME_ZONE)).strftime("%Y-%m-%d"), get_payload_text(outbox[1]).replace('\n',' '), ) self.assertIn(f'{settings.IDTRACKER_BASE_URL}{urlreverse("ietf.ipr.views.showlist")}', get_payload_text(outbox[1]).replace('\n',' ')) diff --git a/ietf/nomcom/tests.py b/ietf/nomcom/tests.py index a98f089e010..f3f11d2681a 100644 --- a/ietf/nomcom/tests.py +++ b/ietf/nomcom/tests.py @@ -10,6 +10,7 @@ from pyquery import PyQuery from urllib.parse import urlparse from itertools import combinations +from zoneinfo import ZoneInfo from django.db import IntegrityError from django.db.models import Max @@ -1506,7 +1507,7 @@ def test_help(self): def test_accept_reject_nomination_edges(self): self.client.logout() np = self.nc.nominee_set.order_by('pk').first().nomineeposition_set.order_by('pk').first() - date_str = np.time.astimezone().strftime("%Y%m%d") # in settings.TIME_ZONE + date_str = np.time.astimezone(ZoneInfo(settings.TIME_ZONE)).strftime("%Y%m%d") kwargs={'year':self.nc.year(), 'nominee_position_id':np.id, 'state':'accepted', @@ -1521,7 +1522,7 @@ def test_accept_reject_nomination_edges(self): settings.DAYS_TO_EXPIRE_NOMINATION_LINK = 2 np.time = np.time - datetime.timedelta(days=3) np.save() - date_str = np.time.astimezone().strftime("%Y%m%d") # in settings.TIME_ZONE + date_str = np.time.astimezone(ZoneInfo(settings.TIME_ZONE)).strftime("%Y%m%d") kwargs['date'] = date_str kwargs['hash'] = get_hash_nominee_position(date_str, np.id) url = reverse('ietf.nomcom.views.process_nomination_status', kwargs=kwargs) @@ -1537,7 +1538,7 @@ def test_accept_reject_nomination_edges(self): def test_accept_reject_nomination_comment(self): np = self.nc.nominee_set.order_by('pk').first().nomineeposition_set.order_by('pk').first() - date_str = np.time.astimezone().strftime("%Y%m%d") # in settings.TIME_ZONE + date_str = np.time.astimezone(ZoneInfo(settings.TIME_ZONE)).strftime("%Y%m%d") hash = get_hash_nominee_position(date_str, np.id) url = reverse('ietf.nomcom.views.process_nomination_status', kwargs={'year':self.nc.year(),