Changeset View
Changeset View
Standalone View
Standalone View
swh/indexer/tests/storage/test_storage.py
Show First 20 Lines • Show All 1,547 Lines • ▼ Show 20 Lines | |||||
def test_origin_intrinsic_metadata_search_by_producer(self): | def test_origin_intrinsic_metadata_search_by_producer(self): | ||||
self._fill_origin_intrinsic_metadata() | self._fill_origin_intrinsic_metadata() | ||||
tool1 = self.tools['swh-metadata-detector'] | tool1 = self.tools['swh-metadata-detector'] | ||||
tool2 = self.tools['swh-metadata-detector2'] | tool2 = self.tools['swh-metadata-detector2'] | ||||
endpoint = self.storage.origin_intrinsic_metadata_search_by_producer | endpoint = self.storage.origin_intrinsic_metadata_search_by_producer | ||||
# test pagination | # test pagination | ||||
# no 'page_token' param, return all origins | |||||
self.assertCountEqual( | self.assertCountEqual( | ||||
endpoint(ids_only=True), | endpoint(ids_only=True)['origins'], | ||||
[self.origin_url_1, self.origin_url_2, self.origin_url_3]) | [self.origin_url_1, self.origin_url_2, self.origin_url_3]) | ||||
# 'page_token' is < than origin_1, return everything | |||||
self.assertCountEqual( | self.assertCountEqual( | ||||
endpoint(start=self.origin_url_1, ids_only=True), | endpoint( | ||||
page_token=self.origin_url_1[:-1], ids_only=True)['origins'], | |||||
[self.origin_url_1, self.origin_url_2, self.origin_url_3]) | [self.origin_url_1, self.origin_url_2, self.origin_url_3]) | ||||
# 'page_token' is origin_3, return nothing | |||||
self.assertCountEqual( | self.assertCountEqual( | ||||
endpoint(start=self.origin_url_1, limit=2, ids_only=True), | endpoint(page_token=self.origin_url_3, ids_only=True)['origins'], | ||||
[]) | |||||
vlorentz: Either test the value of `next_page_token`, or use its value for the next call.
I prefer the… | |||||
douarddaAuthorUnsubmitted Done Inline ActionsThat's a refactoring to include in another 'make opaque token really opaque' diff. douardda: That's a refactoring to include in another 'make opaque token really opaque' diff.
| |||||
vlorentzUnsubmitted Done Inline ActionsThen you should test its value vlorentz: Then you should test its value | |||||
# test limit argument | |||||
self.assertCountEqual( | |||||
endpoint(page_token=self.origin_url_1[:-1], | |||||
limit=2, ids_only=True)['origins'], | |||||
[self.origin_url_1, self.origin_url_2]) | [self.origin_url_1, self.origin_url_2]) | ||||
self.assertCountEqual( | self.assertCountEqual( | ||||
endpoint(start=self.origin_url_1+'2', ids_only=True), | endpoint(page_token=self.origin_url_1, | ||||
limit=2, ids_only=True)['origins'], | |||||
[self.origin_url_2, self.origin_url_3]) | [self.origin_url_2, self.origin_url_3]) | ||||
self.assertCountEqual( | self.assertCountEqual( | ||||
endpoint(start=self.origin_url_1+'2', end=self.origin_url_3[:-1], | endpoint(page_token=self.origin_url_2, | ||||
ids_only=True), | limit=2, ids_only=True)['origins'], | ||||
[self.origin_url_2]) | [self.origin_url_3]) | ||||
# test mappings filtering | # test mappings filtering | ||||
self.assertCountEqual( | self.assertCountEqual( | ||||
endpoint(mappings=['npm'], ids_only=True), | endpoint(mappings=['npm'], ids_only=True)['origins'], | ||||
[self.origin_url_1, self.origin_url_2]) | [self.origin_url_1, self.origin_url_2]) | ||||
self.assertCountEqual( | self.assertCountEqual( | ||||
endpoint(mappings=['npm', 'gemspec'], ids_only=True), | endpoint(mappings=['npm', 'gemspec'], ids_only=True)['origins'], | ||||
[self.origin_url_1, self.origin_url_2]) | [self.origin_url_1, self.origin_url_2]) | ||||
self.assertCountEqual( | self.assertCountEqual( | ||||
endpoint(mappings=['gemspec'], ids_only=True), | endpoint(mappings=['gemspec'], ids_only=True)['origins'], | ||||
[self.origin_url_2]) | [self.origin_url_2]) | ||||
self.assertCountEqual( | self.assertCountEqual( | ||||
endpoint(mappings=['pkg-info'], ids_only=True), | endpoint(mappings=['pkg-info'], ids_only=True)['origins'], | ||||
[self.origin_url_3]) | [self.origin_url_3]) | ||||
self.assertCountEqual( | self.assertCountEqual( | ||||
endpoint(mappings=['foobar'], ids_only=True), | endpoint(mappings=['foobar'], ids_only=True)['origins'], | ||||
[]) | []) | ||||
# test pagination + mappings | # test pagination + mappings | ||||
self.assertCountEqual( | self.assertCountEqual( | ||||
endpoint(mappings=['npm'], limit=1, ids_only=True), | endpoint(mappings=['npm'], limit=1, ids_only=True)['origins'], | ||||
[self.origin_url_1]) | [self.origin_url_1]) | ||||
# test tool filtering | # test tool filtering | ||||
self.assertCountEqual( | self.assertCountEqual( | ||||
endpoint(tool_ids=[tool1['id']], ids_only=True), | endpoint(tool_ids=[tool1['id']], ids_only=True)['origins'], | ||||
[self.origin_url_1]) | [self.origin_url_1]) | ||||
self.assertCountEqual( | self.assertCountEqual( | ||||
endpoint(tool_ids=[tool2['id']], ids_only=True), | endpoint(tool_ids=[tool2['id']], ids_only=True)['origins'], | ||||
[self.origin_url_2, self.origin_url_3]) | [self.origin_url_2, self.origin_url_3]) | ||||
self.assertCountEqual( | self.assertCountEqual( | ||||
endpoint(tool_ids=[tool1['id'], tool2['id']], ids_only=True), | endpoint(tool_ids=[tool1['id'], tool2['id']], | ||||
ids_only=True)['origins'], | |||||
[self.origin_url_1, self.origin_url_2, self.origin_url_3]) | [self.origin_url_1, self.origin_url_2, self.origin_url_3]) | ||||
# test ids_only=False | # test ids_only=False | ||||
self.assertEqual(list(endpoint(mappings=['gemspec'])), [{ | self.assertEqual(endpoint(mappings=['gemspec'])['origins'], [{ | ||||
'id': self.origin_url_2, | 'id': self.origin_url_2, | ||||
'metadata': { | 'metadata': { | ||||
'@context': 'foo', | '@context': 'foo', | ||||
'author': 'Jane Doe', | 'author': 'Jane Doe', | ||||
}, | }, | ||||
'mappings': ['npm', 'gemspec'], | 'mappings': ['npm', 'gemspec'], | ||||
'tool': tool2, | 'tool': tool2, | ||||
'from_revision': self.revision_id_2, | 'from_revision': self.revision_id_2, | ||||
▲ Show 20 Lines • Show All 357 Lines • Show Last 20 Lines |
Either test the value of next_page_token, or use its value for the next call.
I prefer the latter because it actually treats the token as opaque.