Capture invalid response from the jira server

remotes/origin/live-notifications
Jesús Espino 2017-03-21 12:10:11 +01:00
parent 1c569edd96
commit e3b390087a
3 changed files with 16 additions and 6 deletions

View File

@ -22,5 +22,8 @@ class InvalidRequest(Exception):
class InvalidAuthResult(Exception): class InvalidAuthResult(Exception):
pass pass
class InvalidServiceConfiguration(Exception):
pass
class FailedRequest(Exception): class FailedRequest(Exception):
pass pass

View File

@ -25,6 +25,7 @@ from taiga.users.services import get_user_photo_url
from taiga.users.gravatar import get_user_gravatar_id from taiga.users.gravatar import get_user_gravatar_id
from taiga.importers import permissions from taiga.importers import permissions
from taiga.importers import exceptions
from taiga.importers.services import resolve_users_bindings from taiga.importers.services import resolve_users_bindings
from .normal import JiraNormalImporter from .normal import JiraNormalImporter
from .agile import JiraAgileImporter from .agile import JiraAgileImporter
@ -178,12 +179,15 @@ class JiraImporterViewSet(viewsets.ViewSet):
if not jira_url: if not jira_url:
raise exc.WrongArguments(_("The url param is needed")) raise exc.WrongArguments(_("The url param is needed"))
(oauth_token, oauth_secret, url) = JiraNormalImporter.get_auth_url( try:
jira_url, (oauth_token, oauth_secret, url) = JiraNormalImporter.get_auth_url(
settings.IMPORTERS.get('jira', {}).get('consumer_key', None), jira_url,
settings.IMPORTERS.get('jira', {}).get('cert', None), settings.IMPORTERS.get('jira', {}).get('consumer_key', None),
True 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( (auth_data, created) = AuthData.objects.get_or_create(
user=request.user, user=request.user,

View File

@ -45,6 +45,7 @@ from taiga.projects.custom_attributes.models import (UserStoryCustomAttribute,
from taiga.projects.history.models import HistoryEntry from taiga.projects.history.models import HistoryEntry
from taiga.projects.history.choices import HistoryType from taiga.projects.history.choices import HistoryType
from taiga.mdrender.service import render as mdrender from taiga.mdrender.service import render as mdrender
from taiga.importers import exceptions
EPIC_COLORS = { EPIC_COLORS = {
"ghx-label-0": "#ffffff", "ghx-label-0": "#ffffff",
@ -737,6 +738,8 @@ class JiraImporterCommon:
oauth = OAuth1(consumer_key, signature_method=SIGNATURE_RSA, rsa_key=key_cert_data) oauth = OAuth1(consumer_key, signature_method=SIGNATURE_RSA, rsa_key=key_cert_data)
r = requests.post( r = requests.post(
server + '/plugins/servlet/oauth/request-token', verify=verify, auth=oauth) 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 = dict(parse_qsl(r.text))
request_token = request['oauth_token'] request_token = request['oauth_token']
request_token_secret = request['oauth_token_secret'] request_token_secret = request['oauth_token_secret']