add endpoint to get redmine issue subject (#78792)
gitea/gitea-redmine/pipeline/head This commit looks good Details

This commit is contained in:
Frédéric Péters 2023-06-20 19:46:26 +02:00
parent 2c54d760d1
commit aabcb6cba6
2 changed files with 31 additions and 0 deletions

View File

@ -366,3 +366,16 @@ handle_pull_request_closed = make_handler(
),
save(),
)
@app.route('/redmine-issue/<issue_id>/', methods=['GET'])
def redmine_issue(issue_id):
try:
issue = get_redmine_issue(issue_id)
except redminelib.exceptions.ResourceNotFoundError:
logging.warning('Unknown redmine issue %s', issue_id)
return {'status': 'error', 'detail': 'Not found'}, 404
if issue.is_private:
logging.warning('Private redmine issue %s', issue_id)
return {'status': 'error', 'detail': 'Private issue'}, 403
return {'status': 'success', 'subject': issue.subject}

View File

@ -1,4 +1,5 @@
import pytest
import redminelib
import gitea_redmine
@ -609,3 +610,20 @@ def test_handle_pull_request_closed(mocker):
'Test User (testuser) a fermé une pull request sur Gitea concernant cette demande.'
)
issue.save.assert_called_once()
def test_issue_endpoint(client, mocker):
issue = mocker.Mock(subject='subject 1', is_private=False)
private_issue = mocker.Mock(subject='subject 2', is_private=True)
mocker.patch.object(
gitea_redmine,
'get_redmine_issue',
side_effect=[issue, private_issue, redminelib.exceptions.ResourceNotFoundError],
)
response = client.get('/redmine-issue/123/')
assert response.json == {'status': 'success', 'subject': 'subject 1'}
response = client.get('/redmine-issue/234/')
assert response.json == {'status': 'error', 'detail': 'Private issue'}
response = client.get('/redmine-issue/345/')
assert response.json == {'status': 'error', 'detail': 'Not found'}