Changeset View
Changeset View
Standalone View
Standalone View
swh/web/ui/tests/views/test_api.py
Show First 20 Lines • Show All 1,437 Lines • ▼ Show 20 Lines | def api_revision_log(self, mock_service): | ||||
'synthetic': True, | 'synthetic': True, | ||||
}] | }] | ||||
mock_service.lookup_revision_log.return_value = stub_revisions | mock_service.lookup_revision_log.return_value = stub_revisions | ||||
expected_revisions = [{ | expected_revisions = [{ | ||||
'id': '18d8be353ed3480476f032475e7c233eff7371d5', | 'id': '18d8be353ed3480476f032475e7c233eff7371d5', | ||||
'url': '/api/1/revision/18d8be353ed3480476f032475e7c233eff7371d5/', | 'url': '/api/1/revision/18d8be353ed3480476f032475e7c233eff7371d5/', | ||||
'history_url': '/api/1/revision/18d8be353ed3480476f032475e7c233ef' | 'history_url': '/api/1/revision/18d8be353ed3480476f032475e7c233ef' | ||||
'f7371d5/log/', | 'f7371d5/log/', | ||||
'directory': '7834ef7e7c357ce2af928115c6c6a42b7e2a44e6', | 'directory': '7834ef7e7c357ce2af928115c6c6a42b7e2a44e6', | ||||
'directory_url': '/api/1/directory/7834ef7e7c357ce2af928115c6c6a' | 'directory_url': '/api/1/directory/7834ef7e7c357ce2af928115c6c6a' | ||||
'42b7e2a44e6/', | '42b7e2a44e6/', | ||||
'author_name': 'Software Heritage', | 'author_name': 'Software Heritage', | ||||
'author_email': 'robot@softwareheritage.org', | 'author_email': 'robot@softwareheritage.org', | ||||
'committer_name': 'Software Heritage', | 'committer_name': 'Software Heritage', | ||||
'committer_email': 'robot@softwareheritage.org', | 'committer_email': 'robot@softwareheritage.org', | ||||
'message': 'synthetic revision message', | 'message': 'synthetic revision message', | ||||
'date_offset': 0, | 'date_offset': 0, | ||||
'committer_date_offset': 0, | 'committer_date_offset': 0, | ||||
'parents': [ | 'parents': [ | ||||
'7834ef7e7c357ce2af928115c6c6a42b7e2a4345' | '7834ef7e7c357ce2af928115c6c6a42b7e2a4345' | ||||
], | ], | ||||
'parent_urls': [ | 'parent_urls': [ | ||||
'/api/1/revision/7834ef7e7c357ce2af928115c6c6a42b7e2a4345' | '/api/1/revision/7834ef7e7c357ce2af928115c6c6a42b7e2a4345' | ||||
'/prev/18d8be353ed3480476f032475e7c233eff7371d5/' | '/prev/18d8be353ed3480476f032475e7c233eff7371d5/' | ||||
], | ], | ||||
'type': 'tar', | 'type': 'tar', | ||||
'synthetic': True, | 'synthetic': True, | ||||
}] | }] | ||||
expected_response = { | |||||
'revisions': expected_revisions, | |||||
'next_revs_url': None | |||||
} | |||||
# when | # when | ||||
rv = self.app.get('/api/1/revision/8834ef7e7c357ce2af928115c6c6a42' | rv = self.app.get('/api/1/revision/8834ef7e7c357ce2af928115c6c6a42' | ||||
'b7e2a44e6/log/') | 'b7e2a44e6/log/') | ||||
# then | # then | ||||
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, expected_revisions) | self.assertEquals(response_data, expected_response) | ||||
mock_service.lookup_revision_log.assert_called_once_with( | mock_service.lookup_revision_log.assert_called_once_with( | ||||
'8834ef7e7c357ce2af928115c6c6a42b7e2a44e6', 100) | '8834ef7e7c357ce2af928115c6c6a42b7e2a44e6', 26) | ||||
@patch('swh.web.ui.views.api.service') | |||||
@istest | |||||
def api_revision_log_with_next(self, mock_service): | |||||
# given | |||||
stub_revisions = [] | |||||
for i in range(27): | |||||
stub_revisions.append({'id': i}) | |||||
mock_service.lookup_revision_log.return_value = stub_revisions[:26] | |||||
expected_revisions = [x for x in stub_revisions if x['id'] < 25] | |||||
for e in expected_revisions: | |||||
e['url'] = '/api/1/revision/%s/' % e['id'] | |||||
e['history_url'] = '/api/1/revision/%s/log/' % e['id'] | |||||
expected_response = { | |||||
'revisions': expected_revisions, | |||||
'next_revs_url': '/api/1/revision/25/log/' | |||||
} | |||||
# when | |||||
rv = self.app.get('/api/1/revision/8834ef7e7c357ce2af928115c6c6a42' | |||||
'b7e2a44e6/log/') | |||||
# then | |||||
self.assertEquals(rv.status_code, 200) | |||||
self.assertEquals(rv.mimetype, 'application/json') | |||||
response_data = json.loads(rv.data.decode('utf-8')) | |||||
self.assertEquals(response_data, expected_response) | |||||
mock_service.lookup_revision_log.assert_called_once_with( | |||||
'8834ef7e7c357ce2af928115c6c6a42b7e2a44e6', 26) | |||||
@patch('swh.web.ui.views.api.service') | @patch('swh.web.ui.views.api.service') | ||||
@istest | @istest | ||||
def api_revision_log_not_found(self, mock_service): | def api_revision_log_not_found(self, mock_service): | ||||
# given | # given | ||||
mock_service.lookup_revision_log.return_value = None | mock_service.lookup_revision_log.return_value = None | ||||
# when | # when | ||||
rv = self.app.get('/api/1/revision/8834ef7e7c357ce2af928115c6c6a42b7' | rv = self.app.get('/api/1/revision/8834ef7e7c357ce2af928115c6c6a42b7' | ||||
'e2a44e6/log/?limit=10') | 'e2a44e6/log/') | ||||
# then | # then | ||||
self.assertEquals(rv.status_code, 404) | self.assertEquals(rv.status_code, 404) | ||||
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, { | self.assertEquals(response_data, { | ||||
'error': 'Revision with sha1_git' | 'error': 'Revision with sha1_git' | ||||
' 8834ef7e7c357ce2af928115c6c6a42b7e2a44e6 not found.'}) | ' 8834ef7e7c357ce2af928115c6c6a42b7e2a44e6 not found.'}) | ||||
mock_service.lookup_revision_log.assert_called_once_with( | mock_service.lookup_revision_log.assert_called_once_with( | ||||
'8834ef7e7c357ce2af928115c6c6a42b7e2a44e6', 10) | '8834ef7e7c357ce2af928115c6c6a42b7e2a44e6', 26) | ||||
@patch('swh.web.ui.views.api.service') | @patch('swh.web.ui.views.api.service') | ||||
@istest | @istest | ||||
def api_revision_log_context(self, mock_service): | def api_revision_log_context(self, mock_service): | ||||
# given | # given | ||||
stub_revisions = [{ | stub_revisions = [{ | ||||
'id': '18d8be353ed3480476f032475e7c233eff7371d5', | 'id': '18d8be353ed3480476f032475e7c233eff7371d5', | ||||
'directory': '7834ef7e7c357ce2af928115c6c6a42b7e2a44e6', | 'directory': '7834ef7e7c357ce2af928115c6c6a42b7e2a44e6', | ||||
Show All 20 Lines | def api_revision_log_context(self, mock_service): | ||||
'message': 'amazing revision message', | 'message': 'amazing revision message', | ||||
'date_offset': 0, | 'date_offset': 0, | ||||
'committer_date_offset': 0, | 'committer_date_offset': 0, | ||||
'parents': ['adc83b19e793491b1c6ea0fd8b46cd9f32e592fc'], | 'parents': ['adc83b19e793491b1c6ea0fd8b46cd9f32e592fc'], | ||||
'type': 'tar', | 'type': 'tar', | ||||
'synthetic': True, | 'synthetic': True, | ||||
}] | }] | ||||
# when | expected_revisions = [ | ||||
rv = self.app.get('/api/1/revision/18d8be353ed3480476f0' | |||||
'32475e7c233eff7371d5/prev/prev-rev/log/') | |||||
# then | |||||
self.assertEquals(rv.status_code, 200) | |||||
self.assertEquals(rv.mimetype, 'application/json') | |||||
response_data = json.loads(rv.data.decode('utf-8')) | |||||
self.assertEquals(response_data, [ | |||||
{ | { | ||||
'url': '/api/1/revision/' | 'url': '/api/1/revision/' | ||||
'7834ef7e7c357ce2af928115c6c6a42b7e2a44e6/', | '7834ef7e7c357ce2af928115c6c6a42b7e2a44e6/', | ||||
'history_url': '/api/1/revision/' | 'history_url': '/api/1/revision/' | ||||
'7834ef7e7c357ce2af928115c6c6a42b7e2a44e6/log/', | '7834ef7e7c357ce2af928115c6c6a42b7e2a44e6/log/', | ||||
'id': '7834ef7e7c357ce2af928115c6c6a42b7e2a44e6', | 'id': '7834ef7e7c357ce2af928115c6c6a42b7e2a44e6', | ||||
'directory': '18d8be353ed3480476f032475e7c233eff7371d5', | 'directory': '18d8be353ed3480476f032475e7c233eff7371d5', | ||||
'directory_url': '/api/1/directory/' | 'directory_url': '/api/1/directory/' | ||||
Show All 31 Lines | def api_revision_log_context(self, mock_service): | ||||
'committer_date_offset': 0, | 'committer_date_offset': 0, | ||||
'parents': ['7834ef7e7c357ce2af928115c6c6a42b7e2a4345'], | 'parents': ['7834ef7e7c357ce2af928115c6c6a42b7e2a4345'], | ||||
'parent_urls': [ | 'parent_urls': [ | ||||
'/api/1/revision/7834ef7e7c357ce2af928115c6c6a42b7e2a4345' | '/api/1/revision/7834ef7e7c357ce2af928115c6c6a42b7e2a4345' | ||||
'/prev/18d8be353ed3480476f032475e7c233eff7371d5/' | '/prev/18d8be353ed3480476f032475e7c233eff7371d5/' | ||||
], | ], | ||||
'type': 'tar', | 'type': 'tar', | ||||
'synthetic': True, | 'synthetic': True, | ||||
}]) | }] | ||||
expected_response = { | |||||
'revisions': expected_revisions, | |||||
'next_revs_url': None | |||||
} | |||||
# when | |||||
rv = self.app.get('/api/1/revision/18d8be353ed3480476f0' | |||||
'32475e7c233eff7371d5/prev/prev-rev/log/') | |||||
# then | |||||
self.assertEquals(rv.status_code, 200) | |||||
self.assertEquals(rv.mimetype, 'application/json') | |||||
response_data = json.loads(rv.data.decode('utf-8')) | |||||
self.assertEquals(response_data, expected_response) | |||||
mock_service.lookup_revision_log.assert_called_once_with( | mock_service.lookup_revision_log.assert_called_once_with( | ||||
'18d8be353ed3480476f032475e7c233eff7371d5', 100) | '18d8be353ed3480476f032475e7c233eff7371d5', 26) | ||||
mock_service.lookup_revision_multiple.assert_called_once_with( | mock_service.lookup_revision_multiple.assert_called_once_with( | ||||
['prev-rev']) | ['prev-rev']) | ||||
@patch('swh.web.ui.views.api.service') | @patch('swh.web.ui.views.api.service') | ||||
@istest | @istest | ||||
def api_revision_log_by(self, mock_service): | def api_revision_log_by(self, mock_service): | ||||
# given | # given | ||||
stub_revisions = [{ | stub_revisions = [{ | ||||
▲ Show 20 Lines • Show All 597 Lines • Show Last 20 Lines |