diff --git a/swh/web/tests/api/views/test_vault.py b/swh/web/tests/api/views/test_vault.py index 3643220a9..a55095121 100644 --- a/swh/web/tests/api/views/test_vault.py +++ b/swh/web/tests/api/views/test_vault.py @@ -1,81 +1,86 @@ # Copyright (C) 2017 The Software Heritage developers # See the AUTHORS file at the top-level directory of this distribution # License: GNU Affero General Public License version 3, or any later version # See top-level LICENSE file for more information from nose.tools import istest from rest_framework.test import APITestCase from unittest.mock import patch from swh.model import hashutil from swh.web.tests.testbase import SWHWebTestBase TEST_OBJ_ID = 'd4905454cc154b492bd6afed48694ae3c579345e' +OBJECT_TYPES = {'directory': ('directory', None), + 'revision_gitfast': ('revision', 'gitfast')} + class VaultApiTestCase(SWHWebTestBase, APITestCase): @patch('swh.web.api.views.vault.service') @istest def api_vault_cook(self, mock_service): stub_cook = { 'fetch_url': ('http://127.0.0.1:5004/api/1/vault/directory/{}/raw/' .format(TEST_OBJ_ID)), 'obj_id': 'd4905454cc154b492bd6afed48694ae3c579345e', 'obj_type': 'test_type', 'progress_message': None, 'status': 'done', 'task_uuid': 'de75c902-5ee5-4739-996e-448376a93eff', } stub_fetch = b'content' mock_service.vault_cook.return_value = stub_cook mock_service.vault_fetch.return_value = stub_fetch - for obj_type in ('directory', 'revision_gitfast'): - rv = self.client.get(('/api/1/vault/{}/{}/?email=test@test.mail') - .format(obj_type, TEST_OBJ_ID)) + for obj_type, (obj_type_name, obj_type_format) in OBJECT_TYPES.items(): + url = '/api/1/vault/{}/{}/'.format(obj_type_name, TEST_OBJ_ID) + if obj_type_format: + url += '{}/'.format(obj_type_format) + rv = self.client.post(url, {'email': 'test@test.mail'}) self.assertEquals(rv.status_code, 200) self.assertEquals(rv['Content-Type'], 'application/json') self.assertEquals(rv.data, stub_cook) mock_service.vault_cook.assert_called_with( obj_type, hashutil.hash_to_bytes(TEST_OBJ_ID), 'test@test.mail') - rv = self.client.get(('/api/1/vault/{}/{}/raw/') - .format(obj_type, TEST_OBJ_ID)) + rv = self.client.get(url + 'raw/') self.assertEquals(rv.status_code, 200) self.assertEquals(rv['Content-Type'], 'application/gzip') self.assertEquals(rv.content, stub_fetch) mock_service.vault_fetch.assert_called_with( obj_type, hashutil.hash_to_bytes(TEST_OBJ_ID)) @patch('swh.web.api.views.vault.service') @istest def api_vault_cook_notfound(self, mock_service): mock_service.vault_cook.return_value = None mock_service.vault_fetch.return_value = None - for obj_type in ('directory', 'revision_gitfast'): - rv = self.client.get(('/api/1/vault/{}/{}/') - .format(obj_type, TEST_OBJ_ID)) + for obj_type, (obj_type_name, obj_type_format) in OBJECT_TYPES.items(): + url = '/api/1/vault/{}/{}/'.format(obj_type_name, TEST_OBJ_ID) + if obj_type_format: + url += '{}/'.format(obj_type_format) + rv = self.client.post(url) self.assertEquals(rv.status_code, 404) self.assertEquals(rv['Content-Type'], 'application/json') self.assertEquals(rv.data['exception'], 'NotFoundExc') mock_service.vault_cook.assert_called_with( obj_type, hashutil.hash_to_bytes(TEST_OBJ_ID), None) - rv = self.client.get(('/api/1/vault/{}/{}/raw/') - .format(obj_type, TEST_OBJ_ID)) + rv = self.client.get(url + 'raw/') self.assertEquals(rv.status_code, 404) self.assertEquals(rv['Content-Type'], 'application/json') self.assertEquals(rv.data['exception'], 'NotFoundExc') mock_service.vault_fetch.assert_called_with( obj_type, hashutil.hash_to_bytes(TEST_OBJ_ID))