Changeset View
Changeset View
Standalone View
Standalone View
swh/web/tests/misc/test_origin_save.py
Show All 15 Lines | |||||
from swh.web.settings.tests import save_origin_rate_post | from swh.web.settings.tests import save_origin_rate_post | ||||
from swh.web.tests.testcase import WebTestCase | from swh.web.tests.testcase import WebTestCase | ||||
class SwhOriginSaveTest(WebTestCase, APITestCase): | class SwhOriginSaveTest(WebTestCase, APITestCase): | ||||
def setUp(self): | def setUp(self): | ||||
self.client = APIClient(enforce_csrf_checks=True) | self.client = APIClient(enforce_csrf_checks=True) | ||||
self.visit_type = 'git' | |||||
self.origin = { | self.origin = { | ||||
'type': 'git', | |||||
'url': 'https://github.com/python/cpython' | 'url': 'https://github.com/python/cpython' | ||||
} | } | ||||
@patch('swh.web.misc.origin_save.create_save_origin_request') | @patch('swh.web.misc.origin_save.create_save_origin_request') | ||||
def test_save_request_form_csrf_token( | def test_save_request_form_csrf_token( | ||||
self, mock_create_save_origin_request): | self, mock_create_save_origin_request): | ||||
self._mock_create_save_origin_request(mock_create_save_origin_request) | self._mock_create_save_origin_request(mock_create_save_origin_request) | ||||
url = reverse('origin-save-request', | url = reverse('origin-save-request', | ||||
url_args={'origin_type': self.origin['type'], | url_args={'visit_type': self.visit_type, | ||||
'origin_url': self.origin['url']}) | 'origin_url': self.origin['url']}) | ||||
resp = self.client.post(url) | resp = self.client.post(url) | ||||
self.assertEqual(resp.status_code, 403) | self.assertEqual(resp.status_code, 403) | ||||
data = self._get_csrf_token(reverse('origin-save')) | data = self._get_csrf_token(reverse('origin-save')) | ||||
resp = self.client.post(url, data=data) | resp = self.client.post(url, data=data) | ||||
self.assertEqual(resp.status_code, 200) | self.assertEqual(resp.status_code, 200) | ||||
@patch('swh.web.misc.origin_save.create_save_origin_request') | @patch('swh.web.misc.origin_save.create_save_origin_request') | ||||
def test_save_request_form_rate_limit( | def test_save_request_form_rate_limit( | ||||
self, mock_create_save_origin_request): | self, mock_create_save_origin_request): | ||||
self._mock_create_save_origin_request(mock_create_save_origin_request) | self._mock_create_save_origin_request(mock_create_save_origin_request) | ||||
url = reverse('origin-save-request', | url = reverse('origin-save-request', | ||||
url_args={'origin_type': self.origin['type'], | url_args={'visit_type': self.visit_type, | ||||
'origin_url': self.origin['url']}) | 'origin_url': self.origin['url']}) | ||||
data = self._get_csrf_token(reverse('origin-save')) | data = self._get_csrf_token(reverse('origin-save')) | ||||
for _ in range(save_origin_rate_post): | for _ in range(save_origin_rate_post): | ||||
resp = self.client.post(url, data=data) | resp = self.client.post(url, data=data) | ||||
self.assertEqual(resp.status_code, 200) | self.assertEqual(resp.status_code, 200) | ||||
resp = self.client.post(url, data=data) | resp = self.client.post(url, data=data) | ||||
Show All 9 Lines | class SwhOriginSaveTest(WebTestCase, APITestCase): | ||||
def _get_csrf_token(self, url): | def _get_csrf_token(self, url): | ||||
resp = self.client.get(url) | resp = self.client.get(url) | ||||
return { | return { | ||||
'csrfmiddlewaretoken': resp.cookies['csrftoken'].value | 'csrfmiddlewaretoken': resp.cookies['csrftoken'].value | ||||
} | } | ||||
def _mock_create_save_origin_request(self, mock): | def _mock_create_save_origin_request(self, mock): | ||||
expected_data = { | expected_data = { | ||||
'origin_type': self.origin['type'], | 'visit_type': self.visit_type, | ||||
'origin_url': self.origin['url'], | 'origin_url': self.origin['url'], | ||||
'save_request_date': datetime.now().isoformat(), | 'save_request_date': datetime.now().isoformat(), | ||||
'save_request_status': SAVE_REQUEST_ACCEPTED, | 'save_request_status': SAVE_REQUEST_ACCEPTED, | ||||
'save_task_status': SAVE_TASK_NOT_YET_SCHEDULED, | 'save_task_status': SAVE_TASK_NOT_YET_SCHEDULED, | ||||
'visit_date': None | 'visit_date': None | ||||
} | } | ||||
mock.return_value = expected_data | mock.return_value = expected_data |