From e3b390087a9e18736f9466855b2abfa6bc03dd6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Espino?= Date: Tue, 21 Mar 2017 12:10:11 +0100 Subject: [PATCH] Capture invalid response from the jira server --- taiga/importers/exceptions.py | 3 +++ taiga/importers/jira/api.py | 16 ++++++++++------ taiga/importers/jira/common.py | 3 +++ 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/taiga/importers/exceptions.py b/taiga/importers/exceptions.py index 0646095d..df78efd1 100644 --- a/taiga/importers/exceptions.py +++ b/taiga/importers/exceptions.py @@ -22,5 +22,8 @@ class InvalidRequest(Exception): class InvalidAuthResult(Exception): pass +class InvalidServiceConfiguration(Exception): + pass + class FailedRequest(Exception): pass diff --git a/taiga/importers/jira/api.py b/taiga/importers/jira/api.py index 9c5d0b4d..75c6e2c5 100644 --- a/taiga/importers/jira/api.py +++ b/taiga/importers/jira/api.py @@ -25,6 +25,7 @@ from taiga.users.services import get_user_photo_url from taiga.users.gravatar import get_user_gravatar_id from taiga.importers import permissions +from taiga.importers import exceptions from taiga.importers.services import resolve_users_bindings from .normal import JiraNormalImporter from .agile import JiraAgileImporter @@ -178,12 +179,15 @@ class JiraImporterViewSet(viewsets.ViewSet): if not jira_url: raise exc.WrongArguments(_("The url param is needed")) - (oauth_token, oauth_secret, url) = JiraNormalImporter.get_auth_url( - jira_url, - settings.IMPORTERS.get('jira', {}).get('consumer_key', None), - settings.IMPORTERS.get('jira', {}).get('cert', None), - True - ) + try: + (oauth_token, oauth_secret, url) = JiraNormalImporter.get_auth_url( + jira_url, + settings.IMPORTERS.get('jira', {}).get('consumer_key', None), + settings.IMPORTERS.get('jira', {}).get('cert', None), + True + ) + except exceptions.InvalidServiceConfiguration: + raise exc.BadRequest(_("Invalid Jira server configuration.")) (auth_data, created) = AuthData.objects.get_or_create( user=request.user, diff --git a/taiga/importers/jira/common.py b/taiga/importers/jira/common.py index f1ffa691..3eaa6ee6 100644 --- a/taiga/importers/jira/common.py +++ b/taiga/importers/jira/common.py @@ -45,6 +45,7 @@ from taiga.projects.custom_attributes.models import (UserStoryCustomAttribute, from taiga.projects.history.models import HistoryEntry from taiga.projects.history.choices import HistoryType from taiga.mdrender.service import render as mdrender +from taiga.importers import exceptions EPIC_COLORS = { "ghx-label-0": "#ffffff", @@ -737,6 +738,8 @@ class JiraImporterCommon: oauth = OAuth1(consumer_key, signature_method=SIGNATURE_RSA, rsa_key=key_cert_data) r = requests.post( server + '/plugins/servlet/oauth/request-token', verify=verify, auth=oauth) + if r.status_code != 200: + raise exceptions.InvalidServiceConfiguration() request = dict(parse_qsl(r.text)) request_token = request['oauth_token'] request_token_secret = request['oauth_token_secret']