From 88262a484c9d3ec87022d25fce5366586367aae6 Mon Sep 17 00:00:00 2001 From: shanukun Date: Thu, 1 Apr 2021 20:26:37 +0530 Subject: [PATCH] support: Fix arguments of timesince for expires_in. `expires_in` (remaining time before the invite expires) should be calculated from the time at present, not from the time when confirmation link was sent. --- analytics/tests/test_views.py | 76 +++++++++++++++++++---------------- analytics/views.py | 5 ++- 2 files changed, 44 insertions(+), 37 deletions(-) diff --git a/analytics/tests/test_views.py b/analytics/tests/test_views.py index 30f0f75755..4cd614c078 100644 --- a/analytics/tests/test_views.py +++ b/analytics/tests/test_views.py @@ -670,7 +670,7 @@ class TestSupportEndpoint(ZulipTestCase): self.assert_in_success_response(['invite'], result) self.assert_in_success_response( [ - "Expires in: 1\xa0week, 3", + "Expires in: 1\xa0week, 3\xa0days", "Status: Link has never been clicked", ], result, @@ -679,7 +679,10 @@ class TestSupportEndpoint(ZulipTestCase): else: self.assert_not_in_success_response(['invite'], result) self.assert_in_success_response( - ["Expires in: 1\xa0day", "Status: Link has never been clicked"], + [ + "Expires in: 1\xa0day", + "Status: Link has never been clicked", + ], result, ) @@ -689,7 +692,7 @@ class TestSupportEndpoint(ZulipTestCase): 'preregistration user\n', 'realm creation\n', "Link: http://testserver/accounts/do_confirm/", - "Expires in: 1\xa0day
\n", + "Expires in: 1\xa0day", ], result, ) @@ -699,7 +702,7 @@ class TestSupportEndpoint(ZulipTestCase): [ 'multiuse invite\n', "Link: http://zulip.testserver/join/", - "Expires in: 1\xa0week, 3", + "Expires in: 1\xa0week, 3\xa0days", ], result, ) @@ -789,41 +792,44 @@ class TestSupportEndpoint(ZulipTestCase): check_zulip_realm_query_result(result) check_lear_realm_query_result(result) - self.client_post("/accounts/home/", {"email": self.nonreg_email("test")}) - self.login("iago") - result = self.client_get("/activity/support", {"q": self.nonreg_email("test")}) - check_preregistration_user_query_result(result, self.nonreg_email("test")) - check_zulip_realm_query_result(result) + with mock.patch( + "analytics.views.timezone_now", return_value=timezone_now() - timedelta(minutes=50) + ): + self.client_post("/accounts/home/", {"email": self.nonreg_email("test")}) + self.login("iago") + result = self.client_get("/activity/support", {"q": self.nonreg_email("test")}) + check_preregistration_user_query_result(result, self.nonreg_email("test")) + check_zulip_realm_query_result(result) - stream_ids = [self.get_stream_id("Denmark")] - invitee_emails = [self.nonreg_email("test1")] - self.client_post( - "/json/invites", - { - "invitee_emails": invitee_emails, - "stream_ids": orjson.dumps(stream_ids).decode(), - "invite_as": PreregistrationUser.INVITE_AS["MEMBER"], - }, - ) - result = self.client_get("/activity/support", {"q": self.nonreg_email("test1")}) - check_preregistration_user_query_result(result, self.nonreg_email("test1"), invite=True) - check_zulip_realm_query_result(result) + stream_ids = [self.get_stream_id("Denmark")] + invitee_emails = [self.nonreg_email("test1")] + self.client_post( + "/json/invites", + { + "invitee_emails": invitee_emails, + "stream_ids": orjson.dumps(stream_ids).decode(), + "invite_as": PreregistrationUser.INVITE_AS["MEMBER"], + }, + ) + result = self.client_get("/activity/support", {"q": self.nonreg_email("test1")}) + check_preregistration_user_query_result(result, self.nonreg_email("test1"), invite=True) + check_zulip_realm_query_result(result) - email = self.nonreg_email("alice") - self.client_post("/new/", {"email": email}) - result = self.client_get("/activity/support", {"q": email}) - check_realm_creation_query_result(result, email) + email = self.nonreg_email("alice") + self.client_post("/new/", {"email": email}) + result = self.client_get("/activity/support", {"q": email}) + check_realm_creation_query_result(result, email) - do_create_multiuse_invite_link(self.example_user("hamlet"), invited_as=1) - result = self.client_get("/activity/support", {"q": "zulip"}) - check_multiuse_invite_link_query_result(result) - check_zulip_realm_query_result(result) - MultiuseInvite.objects.all().delete() + do_create_multiuse_invite_link(self.example_user("hamlet"), invited_as=1) + result = self.client_get("/activity/support", {"q": "zulip"}) + check_multiuse_invite_link_query_result(result) + check_zulip_realm_query_result(result) + MultiuseInvite.objects.all().delete() - do_send_realm_reactivation_email(get_realm("zulip")) - result = self.client_get("/activity/support", {"q": "zulip"}) - check_realm_reactivation_link_query_result(result) - check_zulip_realm_query_result(result) + do_send_realm_reactivation_email(get_realm("zulip")) + result = self.client_get("/activity/support", {"q": "zulip"}) + check_realm_reactivation_link_query_result(result) + check_zulip_realm_query_result(result) @mock.patch("analytics.views.update_billing_method_of_current_plan") def test_change_billing_method(self, m: mock.Mock) -> None: diff --git a/analytics/views.py b/analytics/views.py index 41759e4e87..53d311770b 100644 --- a/analytics/views.py +++ b/analytics/views.py @@ -1238,8 +1238,9 @@ def get_confirmations( else: link_status = "" - if timezone_now() < expiry_date: - expires_in = timesince(confirmation.date_sent, expiry_date) + now = timezone_now() + if now < expiry_date: + expires_in = timesince(now, expiry_date) else: expires_in = "Expired"