diff --git a/tests/test_timestamp.py b/tests/test_timestamp.py index c432cfad69e..d566d4ae869 100644 --- a/tests/test_timestamp.py +++ b/tests/test_timestamp.py @@ -646,3 +646,18 @@ def test_ready_raise_attribute_error(self, mock_ready, mock_logger): nt.assert_true(task.ready()) mock_logger.error.assert_any_call('Failed to get task status! Exception message:') mock_logger.error.assert_any_call(msg) + + +class TestEnableTimestampGuard(OsfTestCase): + """When ENABLE_TIMESTAMP is False, add_token and check_file_timestamp must + return immediately, so that no request is sent to the timestamp authority. + """ + + @mock.patch('website.util.timestamp.settings.ENABLE_TIMESTAMP', False) + def test_add_token_disabled(self): + # Args are never touched when the guard is effective. + nt.assert_is_none(timestamp.add_token(None, None, None)) + + @mock.patch('website.util.timestamp.settings.ENABLE_TIMESTAMP', False) + def test_check_file_timestamp_disabled(self): + nt.assert_is_none(timestamp.check_file_timestamp(None, None, None)) diff --git a/website/util/timestamp.py b/website/util/timestamp.py index 9076ff8504c..111eb4c77dd 100644 --- a/website/util/timestamp.py +++ b/website/util/timestamp.py @@ -317,6 +317,8 @@ def get_full_list(uid, pid, node): return provider_list def check_file_timestamp(uid, node, data, verify_external_only=False): + if not settings.ENABLE_TIMESTAMP: + return None user = OSFUser.objects.get(id=uid) file_node = BaseFileNode.objects.get(_id=data['file_id']) if not userkey_generation_check(user._id): @@ -525,6 +527,8 @@ def cancel_celery_task(node): return result def add_token(uid, node, data): + if not settings.ENABLE_TIMESTAMP: + return None try: user = OSFUser.objects.get(id=uid) file_node = BaseFileNode.objects.get(_id=data['file_id'])