Changeset View
Changeset View
Standalone View
Standalone View
swh/web/tests/api/views/test_origin_save.py
# Copyright (C) 2018-2019 The Software Heritage developers | # Copyright (C) 2018-2019 The Software Heritage developers | ||||
# See the AUTHORS file at the top-level directory of this distribution | # See the AUTHORS file at the top-level directory of this distribution | ||||
# License: GNU Affero General Public License version 3, or any later version | # License: GNU Affero General Public License version 3, or any later version | ||||
# See top-level LICENSE file for more information | # See top-level LICENSE file for more information | ||||
import pytest | import pytest | ||||
from datetime import datetime, timedelta | from datetime import datetime, timedelta | ||||
from django.utils import timezone | from django.utils import timezone | ||||
from swh.web.common.origin_save import ( | |||||
SAVE_REQUESTS_COUNT_METRIC, PENDING_SAVE_REQUESTS_COUNT_METRIC | |||||
) | |||||
from swh.web.common.utils import reverse | from swh.web.common.utils import reverse | ||||
from swh.web.common.models import ( | from swh.web.common.models import ( | ||||
SaveUnauthorizedOrigin, SaveOriginRequest, | SaveUnauthorizedOrigin, SaveOriginRequest, | ||||
SAVE_REQUEST_ACCEPTED, SAVE_REQUEST_REJECTED, | SAVE_REQUEST_ACCEPTED, SAVE_REQUEST_REJECTED, | ||||
SAVE_REQUEST_PENDING | SAVE_REQUEST_PENDING | ||||
) | ) | ||||
from swh.web.common.models import ( | from swh.web.common.models import ( | ||||
SAVE_TASK_NOT_CREATED, SAVE_TASK_NOT_YET_SCHEDULED, | SAVE_TASK_NOT_CREATED, SAVE_TASK_NOT_YET_SCHEDULED, | ||||
▲ Show 20 Lines • Show All 62 Lines • ▼ Show 20 Lines | mock_scheduler.create_tasks.return_value = [{ | ||||
'repo_url': origin_url | 'repo_url': origin_url | ||||
}, | }, | ||||
'args': [] | 'args': [] | ||||
}, | }, | ||||
'status': 'next_run_not_scheduled', | 'status': 'next_run_not_scheduled', | ||||
'id': 1, | 'id': 1, | ||||
}] | }] | ||||
mock_statsd = mocker.patch('swh.web.common.origin_save.statsd') | |||||
url = reverse('api-1-save-origin', | url = reverse('api-1-save-origin', | ||||
url_args={'visit_type': 'git', | url_args={'visit_type': 'git', | ||||
'origin_url': origin_url}) | 'origin_url': origin_url}) | ||||
mock_visit_date = mocker.patch(('swh.web.common.origin_save.' | mock_visit_date = mocker.patch(('swh.web.common.origin_save.' | ||||
'_get_visit_info_for_save_request')) | '_get_visit_info_for_save_request')) | ||||
mock_visit_date.return_value = (visit_date, None) | mock_visit_date.return_value = (visit_date, None) | ||||
response = api_client.post(url) | response = api_client.post(url) | ||||
if expected_request_status != SAVE_REQUEST_REJECTED: | if expected_request_status != SAVE_REQUEST_REJECTED: | ||||
assert response.status_code == 200, response.data | assert response.status_code == 200, response.data | ||||
assert (response.data['save_request_status'] == | assert (response.data['save_request_status'] == | ||||
expected_request_status) | expected_request_status) | ||||
assert response.data['save_task_status'] == expected_task_status | assert response.data['save_task_status'] == expected_task_status | ||||
else: | else: | ||||
assert response.status_code == 403, response.data | assert response.status_code == 403, response.data | ||||
mock_statsd.increment.assert_called_once_with( | |||||
SAVE_REQUESTS_COUNT_METRIC, | |||||
tags={'visit_type': 'git', | |||||
'status': expected_request_status}) | |||||
if expected_request_status == SAVE_REQUEST_PENDING: | |||||
pending_save_requests = SaveOriginRequest.objects.filter( | |||||
status=SAVE_REQUEST_PENDING) | |||||
mock_statsd.gauge.assert_called_once_with( | |||||
PENDING_SAVE_REQUESTS_COUNT_METRIC, | |||||
pending_save_requests.count()) | |||||
def check_save_request_status(api_client, mocker, origin_url, | def check_save_request_status(api_client, mocker, origin_url, | ||||
expected_request_status, | expected_request_status, | ||||
expected_task_status, | expected_task_status, | ||||
scheduler_task_status='next_run_not_scheduled', | scheduler_task_status='next_run_not_scheduled', | ||||
visit_date=None): | visit_date=None): | ||||
mock_scheduler = mocker.patch('swh.web.common.origin_save.scheduler') | mock_scheduler = mocker.patch('swh.web.common.origin_save.scheduler') | ||||
mock_scheduler.get_tasks.return_value = [{ | mock_scheduler.get_tasks.return_value = [{ | ||||
▲ Show 20 Lines • Show All 138 Lines • Show Last 20 Lines |