Changeset View
Changeset View
Standalone View
Standalone View
swh/web/ui/tests/views/test_api.py
Show All 12 Lines | |||||
from swh.web.ui.tests import test_app | from swh.web.ui.tests import test_app | ||||
from swh.web.ui import exc | from swh.web.ui import exc | ||||
from swh.web.ui.views import api | from swh.web.ui.views import api | ||||
from swh.web.ui.exc import NotFoundExc, BadInputExc | from swh.web.ui.exc import NotFoundExc, BadInputExc | ||||
from swh.storage.exc import StorageDBError, StorageAPIError | from swh.storage.exc import StorageDBError, StorageAPIError | ||||
class ApiTestCase(test_app.SWHApiTestCase): | class ApiTestCase(test_app.SWHApiTestCase): | ||||
@istest | @istest | ||||
def generic_api_lookup_nothing_is_found(self): | def generic_api_lookup_nothing_is_found(self): | ||||
# given | # given | ||||
def test_generic_lookup_fn(sha1, another_unused_arg): | def test_generic_lookup_fn(sha1, another_unused_arg): | ||||
assert another_unused_arg == 'unused arg' | assert another_unused_arg == 'unused arg' | ||||
assert sha1 == 'sha1' | assert sha1 == 'sha1' | ||||
return None | return None | ||||
▲ Show 20 Lines • Show All 253 Lines • ▼ Show 20 Lines | def api_content_raw(self, mock_service): | ||||
mock_service.lookup_content_raw.assert_called_once_with( | mock_service.lookup_content_raw.assert_called_once_with( | ||||
'sha1:40e71b8614fcd89ccd17ca2b1d9e66c5b00a6d03') | 'sha1:40e71b8614fcd89ccd17ca2b1d9e66c5b00a6d03') | ||||
@patch('swh.web.ui.views.api.service') | @patch('swh.web.ui.views.api.service') | ||||
@istest | @istest | ||||
def api_search(self, mock_service): | def api_search(self, mock_service): | ||||
# given | # given | ||||
mock_service.lookup_hash.return_value = { | mock_service.search_hash.return_value = {'found': True} | ||||
'found': { | |||||
'sha1': 'or something' | expected_result = { | ||||
} | 'search_stats': {'nbfiles': 1, 'pct': 100}, | ||||
'search_res': [{'filename': None, | |||||
'sha1': 'sha1:blah', | |||||
'found': True}] | |||||
} | } | ||||
# when | # when | ||||
rv = self.app.get('/api/1/search/sha1:blah/') | rv = self.app.get('/api/1/search/sha1:blah/') | ||||
self.assertEquals(rv.status_code, 200) | self.assertEquals(rv.status_code, 200) | ||||
self.assertEquals(rv.mimetype, 'application/json') | self.assertEquals(rv.mimetype, 'application/json') | ||||
response_data = json.loads(rv.data.decode('utf-8')) | |||||
self.assertEquals(response_data, {'found': True}) | |||||
mock_service.lookup_hash.assert_called_once_with('sha1:blah') | response_data = json.loads(rv.data.decode('utf-8')) | ||||
self.assertEquals(response_data, expected_result) | |||||
mock_service.search_hash.assert_called_once_with('sha1:blah') | |||||
@patch('swh.web.ui.views.api.service') | @patch('swh.web.ui.views.api.service') | ||||
@istest | @istest | ||||
def api_search_as_yaml(self, mock_service): | def api_search_as_yaml(self, mock_service): | ||||
# given | # given | ||||
mock_service.lookup_hash.return_value = { | mock_service.search_hash.return_value = {'found': True} | ||||
'found': { | expected_result = { | ||||
'sha1': 'sha1 hash' | 'search_stats': {'nbfiles': 1, 'pct': 100}, | ||||
} | 'search_res': [{'filename': None, | ||||
'sha1': 'sha1:halb', | |||||
'found': True}] | |||||
} | } | ||||
# when | # when | ||||
rv = self.app.get('/api/1/search/sha1:halb/', | rv = self.app.get('/api/1/search/sha1:halb/', | ||||
headers={'Accept': 'application/yaml'}) | headers={'Accept': 'application/yaml'}) | ||||
self.assertEquals(rv.status_code, 200) | self.assertEquals(rv.status_code, 200) | ||||
self.assertEquals(rv.mimetype, 'application/yaml') | self.assertEquals(rv.mimetype, 'application/yaml') | ||||
response_data = yaml.load(rv.data.decode('utf-8')) | response_data = yaml.load(rv.data.decode('utf-8')) | ||||
self.assertEquals(response_data, {'found': True}) | self.assertEquals(response_data, expected_result) | ||||
mock_service.lookup_hash.assert_called_once_with('sha1:halb') | mock_service.search_hash.assert_called_once_with('sha1:halb') | ||||
@patch('swh.web.ui.views.api.service') | @patch('swh.web.ui.views.api.service') | ||||
@istest | @istest | ||||
def api_search_not_found(self, mock_service): | def api_search_not_found(self, mock_service): | ||||
# given | # given | ||||
mock_service.lookup_hash.return_value = {} | mock_service.search_hash.return_value = {'found': False} | ||||
ardumont: you do not return the 'algo' in the search_hash ^^ | |||||
expected_result = { | |||||
'search_stats': {'nbfiles': 1, 'pct': 0}, | |||||
'search_res': [{'filename': None, | |||||
'sha1': 'sha1:halb', | |||||
'found': False}] | |||||
} | |||||
# when | # when | ||||
rv = self.app.get('/api/1/search/sha1:halb/') | rv = self.app.get('/api/1/search/sha1:halb/') | ||||
self.assertEquals(rv.status_code, 200) | self.assertEquals(rv.status_code, 200) | ||||
self.assertEquals(rv.mimetype, 'application/json') | self.assertEquals(rv.mimetype, 'application/json') | ||||
response_data = json.loads(rv.data.decode('utf-8')) | response_data = json.loads(rv.data.decode('utf-8')) | ||||
self.assertEquals(response_data, {'found': False}) | self.assertEquals(response_data, expected_result) | ||||
mock_service.lookup_hash.assert_called_once_with('sha1:halb') | mock_service.search_hash.assert_called_once_with('sha1:halb') | ||||
@patch('swh.web.ui.views.api.service') | @patch('swh.web.ui.views.api.service') | ||||
@istest | @istest | ||||
def api_1_stat_counters_raise_error(self, mock_service): | def api_1_stat_counters_raise_error(self, mock_service): | ||||
# given | # given | ||||
mock_service.stat_counters.side_effect = ValueError( | mock_service.stat_counters.side_effect = ValueError( | ||||
'voluntary error to check the bad request middleware.') | 'voluntary error to check the bad request middleware.') | ||||
# when | # when | ||||
▲ Show 20 Lines • Show All 1,700 Lines • Show Last 20 Lines |
you do not return the 'algo' in the search_hash ^^