Changeset View
Changeset View
Standalone View
Standalone View
swh/web/tests/common/test_service.py
Show First 20 Lines • Show All 1,672 Lines • ▼ Show 20 Lines | def test_lookup_directory_empty(self, mock_storage): | ||||
# when | # when | ||||
actual_directory_ls = list(service.lookup_directory(empty_dir_sha1)) | actual_directory_ls = list(service.lookup_directory(empty_dir_sha1)) | ||||
# then | # then | ||||
self.assertEqual(actual_directory_ls, []) | self.assertEqual(actual_directory_ls, []) | ||||
self.assertFalse(mock_storage.directory_ls.called) | self.assertFalse(mock_storage.directory_ls.called) | ||||
@patch('swh.web.common.service.storage') | |||||
def test_lookup_revision_by_nothing_found(self, mock_storage): | |||||
# given | |||||
mock_storage.revision_get_by.return_value = None | |||||
# when | |||||
with self.assertRaises(NotFoundExc): | |||||
service.lookup_revision_by(1) | |||||
# then | |||||
mock_storage.revision_get_by.assert_called_with(1, 'refs/heads/master', # noqa | |||||
limit=1, | |||||
timestamp=None) | |||||
@patch('swh.web.common.service.storage') | |||||
def test_lookup_revision_by(self, mock_storage): | |||||
# given | |||||
stub_rev = self.SAMPLE_REVISION_RAW | |||||
expected_rev = self.SAMPLE_REVISION | |||||
mock_storage.revision_get_by.return_value = [stub_rev] | |||||
# when | |||||
actual_revision = service.lookup_revision_by(10, 'master2', 'some-ts') | |||||
# then | |||||
self.assertEqual(actual_revision, expected_rev) | |||||
mock_storage.revision_get_by.assert_called_with(10, 'master2', | |||||
limit=1, | |||||
timestamp='some-ts') | |||||
@patch('swh.web.common.service.storage') | |||||
def test_lookup_revision_by_nomerge(self, mock_storage): | |||||
# given | |||||
stub_rev = self.SAMPLE_REVISION_RAW | |||||
stub_rev['parents'] = [ | |||||
hash_to_bytes('adc83b19e793491b1c6ea0fd8b46cd9f32e592fc')] | |||||
expected_rev = self.SAMPLE_REVISION | |||||
expected_rev['parents'] = ['adc83b19e793491b1c6ea0fd8b46cd9f32e592fc'] | |||||
mock_storage.revision_get_by.return_value = [stub_rev] | |||||
# when | |||||
actual_revision = service.lookup_revision_by(10, 'master2', 'some-ts') | |||||
# then | |||||
self.assertEqual(actual_revision, expected_rev) | |||||
mock_storage.revision_get_by.assert_called_with(10, 'master2', | |||||
limit=1, | |||||
timestamp='some-ts') | |||||
@patch('swh.web.common.service.storage') | |||||
def test_lookup_revision_by_merge(self, mock_storage): | |||||
# given | |||||
stub_rev = self.SAMPLE_REVISION_RAW | |||||
stub_rev['parents'] = [ | |||||
hash_to_bytes('adc83b19e793491b1c6ea0fd8b46cd9f32e592fc'), | |||||
hash_to_bytes('ffff3b19e793491b1c6db0fd8b46cd9f32e592fc') | |||||
] | |||||
expected_rev = self.SAMPLE_REVISION | |||||
expected_rev['parents'] = [ | |||||
'adc83b19e793491b1c6ea0fd8b46cd9f32e592fc', | |||||
'ffff3b19e793491b1c6db0fd8b46cd9f32e592fc' | |||||
] | |||||
expected_rev['merge'] = True | |||||
mock_storage.revision_get_by.return_value = [stub_rev] | |||||
# when | |||||
actual_revision = service.lookup_revision_by(10, 'master2', 'some-ts') | |||||
# then | |||||
self.assertEqual(actual_revision, expected_rev) | |||||
mock_storage.revision_get_by.assert_called_with(10, 'master2', | |||||
limit=1, | |||||
timestamp='some-ts') | |||||
@patch('swh.web.common.service.storage') | |||||
def test_lookup_revision_with_context_by_ko(self, mock_storage): | |||||
# given | |||||
mock_storage.revision_get_by.return_value = None | |||||
# when | |||||
origin_id = 1 | |||||
branch_name = 'master3' | |||||
ts = None | |||||
with self.assertRaises(NotFoundExc) as cm: | |||||
service.lookup_revision_with_context_by(origin_id, branch_name, ts, | |||||
'sha1') | |||||
# then | |||||
self.assertIn( | |||||
'Revision with (origin_id: %s, branch_name: %s' | |||||
', ts: %s) not found.' % (origin_id, | |||||
branch_name, | |||||
ts), cm.exception.args[0]) | |||||
mock_storage.revision_get_by.assert_called_once_with( | |||||
origin_id, branch_name, limit=1, timestamp=ts) | |||||
@patch('swh.web.common.service.lookup_revision_with_context') | |||||
@patch('swh.web.common.service.storage') | |||||
def test_lookup_revision_with_context_by( | |||||
self, mock_storage, mock_lookup_revision_with_context, | |||||
): | |||||
# given | |||||
stub_root_rev = {'id': 'root-rev-id'} | |||||
mock_storage.revision_get_by.return_value = [{'id': 'root-rev-id'}] | |||||
stub_rev = {'id': 'rev-found'} | |||||
mock_lookup_revision_with_context.return_value = stub_rev | |||||
# when | |||||
origin_id = 1 | |||||
branch_name = 'master3' | |||||
ts = None | |||||
sha1_git = 'sha1' | |||||
actual_root_rev, actual_rev = service.lookup_revision_with_context_by( | |||||
origin_id, branch_name, ts, sha1_git) | |||||
# then | |||||
self.assertEqual(actual_root_rev, stub_root_rev) | |||||
self.assertEqual(actual_rev, stub_rev) | |||||
mock_storage.revision_get_by.assert_called_once_with( | |||||
origin_id, branch_name, limit=1, timestamp=ts) | |||||
mock_lookup_revision_with_context.assert_called_once_with( | |||||
stub_root_rev, sha1_git, 100) | |||||
def test_lookup_revision_through_ko_not_implemented(self): | |||||
# then | |||||
with self.assertRaises(NotImplementedError): | |||||
service.lookup_revision_through({ | |||||
'something-unknown': 10, | |||||
}) | |||||
@patch('swh.web.common.service.lookup_revision_with_context_by') | |||||
def test_lookup_revision_through_with_context_by(self, mock_lookup): | |||||
# given | |||||
stub_rev = {'id': 'rev'} | |||||
mock_lookup.return_value = stub_rev | |||||
# when | |||||
actual_revision = service.lookup_revision_through({ | |||||
'origin_id': 1, | |||||
'branch_name': 'master', | |||||
'ts': None, | |||||
'sha1_git': 'sha1-git' | |||||
}, limit=1000) | |||||
# then | |||||
self.assertEqual(actual_revision, stub_rev) | |||||
mock_lookup.assert_called_once_with( | |||||
1, 'master', None, 'sha1-git', 1000) | |||||
@patch('swh.web.common.service.lookup_revision_by') | |||||
def test_lookup_revision_through_with_revision_by(self, mock_lookup): | |||||
# given | |||||
stub_rev = {'id': 'rev'} | |||||
mock_lookup.return_value = stub_rev | |||||
# when | |||||
actual_revision = service.lookup_revision_through({ | |||||
'origin_id': 2, | |||||
'branch_name': 'master2', | |||||
'ts': 'some-ts', | |||||
}, limit=10) | |||||
# then | |||||
self.assertEqual(actual_revision, stub_rev) | |||||
mock_lookup.assert_called_once_with( | |||||
2, 'master2', 'some-ts') | |||||
@patch('swh.web.common.service.lookup_revision_with_context') | |||||
def test_lookup_revision_through_with_context(self, mock_lookup): | |||||
# given | |||||
stub_rev = {'id': 'rev'} | |||||
mock_lookup.return_value = stub_rev | |||||
# when | |||||
actual_revision = service.lookup_revision_through({ | |||||
'sha1_git_root': 'some-sha1-root', | |||||
'sha1_git': 'some-sha1', | |||||
}) | |||||
# then | |||||
self.assertEqual(actual_revision, stub_rev) | |||||
mock_lookup.assert_called_once_with( | |||||
'some-sha1-root', 'some-sha1', 100) | |||||
@patch('swh.web.common.service.lookup_revision') | |||||
def test_lookup_revision_through_with_revision(self, mock_lookup): | |||||
# given | |||||
stub_rev = {'id': 'rev'} | |||||
mock_lookup.return_value = stub_rev | |||||
# when | |||||
actual_revision = service.lookup_revision_through({ | |||||
'sha1_git': 'some-sha1', | |||||
}) | |||||
# then | |||||
self.assertEqual(actual_revision, stub_rev) | |||||
mock_lookup.assert_called_once_with( | |||||
'some-sha1') | |||||
@patch('swh.web.common.service.lookup_revision_through') | |||||
def test_lookup_directory_through_revision_ko_not_found( | |||||
self, mock_lookup_rev): | |||||
# given | |||||
mock_lookup_rev.return_value = None | |||||
# when | |||||
with self.assertRaises(NotFoundExc): | |||||
service.lookup_directory_through_revision( | |||||
{'id': 'rev'}, 'some/path', 100) | |||||
mock_lookup_rev.assert_called_once_with({'id': 'rev'}, 100) | |||||
@patch('swh.web.common.service.lookup_revision_through') | |||||
@patch('swh.web.common.service.lookup_directory_with_revision') | |||||
def test_lookup_directory_through_revision_ok_with_data( | |||||
self, mock_lookup_dir, mock_lookup_rev): | |||||
# given | |||||
mock_lookup_rev.return_value = {'id': 'rev-id'} | |||||
mock_lookup_dir.return_value = {'type': 'dir', | |||||
'content': []} | |||||
# when | |||||
rev_id, dir_result = service.lookup_directory_through_revision( | |||||
{'id': 'rev'}, 'some/path', 100) | |||||
# then | |||||
self.assertEqual(rev_id, 'rev-id') | |||||
self.assertEqual(dir_result, {'type': 'dir', | |||||
'content': []}) | |||||
mock_lookup_rev.assert_called_once_with({'id': 'rev'}, 100) | |||||
mock_lookup_dir.assert_called_once_with('rev-id', 'some/path', False) | |||||
@patch('swh.web.common.service.lookup_revision_through') | |||||
@patch('swh.web.common.service.lookup_directory_with_revision') | |||||
def test_lookup_directory_through_revision_ok_with_content( | |||||
self, mock_lookup_dir, mock_lookup_rev): | |||||
# given | |||||
mock_lookup_rev.return_value = {'id': 'rev-id'} | |||||
stub_result = {'type': 'file', | |||||
'revision': 'rev-id', | |||||
'content': {'data': b'blah', | |||||
'sha1': 'sha1'}} | |||||
mock_lookup_dir.return_value = stub_result | |||||
# when | |||||
rev_id, dir_result = service.lookup_directory_through_revision( | |||||
{'id': 'rev'}, 'some/path', 10, with_data=True) | |||||
# then | |||||
self.assertEqual(rev_id, 'rev-id') | |||||
self.assertEqual(dir_result, stub_result) | |||||
mock_lookup_rev.assert_called_once_with({'id': 'rev'}, 10) | |||||
mock_lookup_dir.assert_called_once_with('rev-id', 'some/path', True) |