Skip to content

Commit

Permalink
Using Timer in other tests
Browse files Browse the repository at this point in the history
  • Loading branch information
apragacz committed May 16, 2019
1 parent 7fe235f commit f3ace15
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 32 deletions.
39 changes: 15 additions & 24 deletions tests/api/test_register.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import math
import time
from unittest import mock
from unittest.mock import patch
Expand Down Expand Up @@ -116,11 +115,9 @@ class RegisterViewTestCase(APIViewTestCase):
def test_register_ok(self):
data = self._get_register_user_data(password='testpassword')
request = self.create_post_request(data)
time_before = math.floor(time.time())
with self.assert_one_mail_sent() as sent_emails:
with self.assert_one_mail_sent() as sent_emails, self.timer() as timer:
response = self.view_func(request)
time_after = math.ceil(time.time())
self.assert_valid_response(response, status.HTTP_201_CREATED)
self.assert_valid_response(response, status.HTTP_201_CREATED)
user_id = response.data['id']
# Check database state.
user = self.user_class.objects.get(id=user_id)
Expand All @@ -141,8 +138,8 @@ def test_register_ok(self):
url_user_id = int(verification_data['user_id'])
self.assertEqual(url_user_id, user_id)
url_sig_timestamp = int(verification_data['timestamp'])
self.assertGreaterEqual(url_sig_timestamp, time_before)
self.assertLessEqual(url_sig_timestamp, time_after)
self.assertGreaterEqual(url_sig_timestamp, timer.start_time)
self.assertLessEqual(url_sig_timestamp, timer.end_time)
signer = RegisterSigner(verification_data)
signer.verify()

Expand All @@ -156,11 +153,9 @@ def test_register_ok(self):
def test_register_with_custom_verification_url_ok(self):
data = self._get_register_user_data(password='testpassword')
request = self.create_post_request(data)
time_before = math.floor(time.time())
with self.assert_one_mail_sent() as sent_emails:
with self.assert_one_mail_sent() as sent_emails, self.timer() as timer:
response = self.view_func(request)
time_after = math.ceil(time.time())
self.assert_valid_response(response, status.HTTP_201_CREATED)
self.assert_valid_response(response, status.HTTP_201_CREATED)
user_id = response.data['id']
# Check database state.
user = self.user_class.objects.get(id=user_id)
Expand All @@ -182,8 +177,8 @@ def test_register_with_custom_verification_url_ok(self):
url_user_id = int(verification_data['user_id'])
self.assertEqual(url_user_id, user_id)
url_sig_timestamp = int(verification_data['timestamp'])
self.assertGreaterEqual(url_sig_timestamp, time_before)
self.assertLessEqual(url_sig_timestamp, time_after)
self.assertGreaterEqual(url_sig_timestamp, timer.start_time)
self.assertLessEqual(url_sig_timestamp, timer.end_time)
signer = RegisterSigner(verification_data)
signer.verify()

Expand All @@ -193,11 +188,9 @@ def test_register_with_custom_verification_url_ok(self):
def test_register_with_html_email_ok(self):
data = self._get_register_user_data(password='testpassword')
request = self.create_post_request(data)
time_before = math.floor(time.time())
with self.assert_one_mail_sent() as sent_emails:
with self.assert_one_mail_sent() as sent_emails, self.timer() as timer:
response = self.view_func(request)
time_after = math.ceil(time.time())
self.assert_valid_response(response, status.HTTP_201_CREATED)
self.assert_valid_response(response, status.HTTP_201_CREATED)
user_id = response.data['id']
# Check database state.
user = self.user_class.objects.get(id=user_id)
Expand All @@ -218,8 +211,8 @@ def test_register_with_html_email_ok(self):
url_user_id = int(verification_data['user_id'])
self.assertEqual(url_user_id, user_id)
url_sig_timestamp = int(verification_data['timestamp'])
self.assertGreaterEqual(url_sig_timestamp, time_before)
self.assertLessEqual(url_sig_timestamp, time_after)
self.assertGreaterEqual(url_sig_timestamp, timer.start_time)
self.assertLessEqual(url_sig_timestamp, timer.end_time)
signer = RegisterSigner(verification_data)
signer.verify()

Expand All @@ -234,11 +227,9 @@ def test_register_no_password_confirm_ok(self):
data = self._get_register_user_data(password='testpassword')
data.pop('password_confirm')
request = self.create_post_request(data)
time_before = math.floor(time.time())
with self.assert_one_mail_sent() as sent_emails:
with self.assert_one_mail_sent() as sent_emails, self.timer() as timer:
response = self.view_func(request)
self.assert_valid_response(response, status.HTTP_201_CREATED)
time_after = math.ceil(time.time())
user_id = response.data['id']
# Check database state.
user = self.user_class.objects.get(id=user_id)
Expand All @@ -259,8 +250,8 @@ def test_register_no_password_confirm_ok(self):
url_user_id = int(verification_data['user_id'])
self.assertEqual(url_user_id, user_id)
url_sig_timestamp = int(verification_data['timestamp'])
self.assertGreaterEqual(url_sig_timestamp, time_before)
self.assertLessEqual(url_sig_timestamp, time_after)
self.assertGreaterEqual(url_sig_timestamp, timer.start_time)
self.assertLessEqual(url_sig_timestamp, timer.end_time)
signer = RegisterSigner(verification_data)
signer.verify()

Expand Down
9 changes: 3 additions & 6 deletions tests/api/test_register_email.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import math
import time
from unittest.mock import patch

Expand Down Expand Up @@ -43,11 +42,9 @@ def test_ok(self):
data = {
'email': self.new_email,
}
time_before = math.floor(time.time())
with self.assert_one_mail_sent() as sent_emails:
with self.assert_one_mail_sent() as sent_emails, self.timer() as timer:
response = self._test_authenticated(data)
self.assert_valid_response(response, status.HTTP_200_OK)
time_after = math.ceil(time.time())
# Check database state.
self.user.refresh_from_db()
self.assertEqual(self.user.email, self.email)
Expand All @@ -67,8 +64,8 @@ def test_ok(self):
self.assertEqual(verification_data['email'], self.new_email)
self.assertEqual(int(verification_data['user_id']), self.user.id)
url_sig_timestamp = int(verification_data['timestamp'])
self.assertGreaterEqual(url_sig_timestamp, time_before)
self.assertLessEqual(url_sig_timestamp, time_after)
self.assertGreaterEqual(url_sig_timestamp, timer.start_time)
self.assertLessEqual(url_sig_timestamp, timer.end_time)
signer = RegisterEmailSigner(verification_data)
signer.verify()

Expand Down
6 changes: 4 additions & 2 deletions tests/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,10 @@ def assert_no_mail_sent(self):
def timer(self, get_current_timestamp=get_current_timestamp):
timer = Timer(get_current_timestamp=get_current_timestamp)
timer.set_start_time()
yield timer
timer.set_end_time()
try:
yield timer
finally:
timer.set_end_time()

def _assert_urls_in_text(self, text, expected_num, line_url_pattern):
lines = [line.rstrip() for line in text.split('\n')]
Expand Down

0 comments on commit f3ace15

Please sign in to comment.