From 7a3103ceb9894c4876ece383ae1d69272bfc1b68 Mon Sep 17 00:00:00 2001 From: apiyo Date: Mon, 17 Oct 2022 14:35:39 +0300 Subject: [PATCH] Add test case that check that invalid tokens are deleted --- .../libs/tests/utils/test_api_export_tools.py | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/onadata/libs/tests/utils/test_api_export_tools.py b/onadata/libs/tests/utils/test_api_export_tools.py index 53c162ea10..683adb7f50 100644 --- a/onadata/libs/tests/utils/test_api_export_tools.py +++ b/onadata/libs/tests/utils/test_api_export_tools.py @@ -5,6 +5,8 @@ from collections import OrderedDict, defaultdict import mock +import datetime +from google.oauth2.credentials import Credentials from celery.backends.rpc import BacklogLimitExceeded from django.http import Http404 from django.test.utils import override_settings @@ -13,12 +15,14 @@ from onadata.apps.logger.models import XForm from onadata.apps.main.tests.test_base import TestBase +from onadata.apps.main.models import TokenStorageModel from onadata.apps.viewer.models.export import Export, ExportConnectionError from onadata.libs.exceptions import ServiceUnavailable from onadata.libs.utils.api_export_tools import ( get_async_response, process_async_export, response_for_format, - get_metadata_format + get_metadata_format, + _get_google_credential ) from onadata.libs.utils.async_status import SUCCESSFUL, status_msg @@ -40,6 +44,35 @@ def _create_old_export(self, xform, export_type, options, filename=None): self.export = Export.objects.filter( xform=xform, export_type=export_type)[0] + def test_get_google_credentials(self): + """ + Test create_async_export deletes credential when invalid + """ + request = self.factory.get('/') + request.user = self.user + request.query_params = {} + request.data = {} + credential = { + "refresh_token": "refresh-token", + "token_uri": "https://oauth2.googleapis.com/token", + "client_id": "client-id", + "client_secret": "client-secret", + "scopes": ["https://www.googleapis.com/auth/drive.file"], + "expiry": datetime.datetime(2016, 8, 18, 12, 43, 30, 316792) + } + t = TokenStorageModel(id=self.user, + credential=Credentials(**credential, token=None)) + t.save() + response = _get_google_credential(request) + + self.assertEqual(response.status_code, 302) + self.assertEqual( + response.url[:71], + 'https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=' + ) + with self.assertRaises(TokenStorageModel.DoesNotExist): + TokenStorageModel.objects.get(id=self.user) + # pylint: disable=invalid-name def test_process_async_export_creates_new_export(self): """