Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(477)

Unified Diff: appengine/chrome_infra_packages/cipd/test/impl_test.py

Issue 1194803002: Add a package listing API to cipd. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: appengine/chrome_infra_packages/cipd/test/impl_test.py
diff --git a/appengine/chrome_infra_packages/cipd/test/impl_test.py b/appengine/chrome_infra_packages/cipd/test/impl_test.py
index d7384d5167f9b3fdb30de4b40ec77abd2565fae0..203129cbe15f05e9ebaee9990c7deeae9db84fbb 100644
--- a/appengine/chrome_infra_packages/cipd/test/impl_test.py
+++ b/appengine/chrome_infra_packages/cipd/test/impl_test.py
@@ -71,6 +71,92 @@ class TestRepoService(testing.AppengineTestCase):
self.mock(impl.cas, 'get_cas_service', lambda: self.mocked_cas_service)
self.service = impl.get_repo_service()
+ def test_list_packages_no_path(self):
+ self.assertIsNone(self.service.get_package('a/b'))
+ self.assertIsNone(self.service.get_package('y/z'))
+ self.service.register_package(
+ package_name='y/z',
+ caller=auth.Identity.from_bytes('user:abc@example.com'),
+ now=datetime.datetime(2014, 1, 1, 0, 0))
+ self.service.register_package(
+ package_name='a/b',
+ caller=auth.Identity.from_bytes('user:abc@example.com'),
+ now=datetime.datetime(2014, 1, 1, 0, 0))
+ self.assertEqual(([], ['a', 'y']),
+ self.service.list_packages('', False))
+ self.assertEqual((['a/b', 'y/z'], ['a', 'y']),
+ self.service.list_packages('', True))
+
+ def test_list_packages_with_path(self):
+ self.assertIsNone(self.service.get_package('a/b'))
+ self.assertIsNone(self.service.get_package('y/x'))
+ self.assertIsNone(self.service.get_package('y/z/z'))
+ self.service.register_package(
+ package_name='y/x',
+ caller=auth.Identity.from_bytes('user:abc@example.com'),
+ now=datetime.datetime(2014, 1, 1, 0, 0))
+ self.service.register_package(
+ package_name='y/z/z',
+ caller=auth.Identity.from_bytes('user:abc@example.com'),
+ now=datetime.datetime(2014, 1, 1, 0, 0))
+ self.service.register_package(
+ package_name='a/b',
+ caller=auth.Identity.from_bytes('user:abc@example.com'),
+ now=datetime.datetime(2014, 1, 1, 0, 0))
+ self.assertEqual((['y/x'], ['y/z']), self.service.list_packages('y', False))
+ self.assertEqual((['y/z/z'], []),
+ self.service.list_packages('y/z/z', False))
+ self.assertEqual((['y/x'], ['y/z']),
+ self.service.list_packages('y/', False))
+ self.assertEqual((['y/x', 'y/z/z'], ['y/z']),
+ self.service.list_packages('y', True))
+
+ def test_list_packages_ignore_substrings(self):
+ self.assertIsNone(self.service.get_package('good/path'))
+ self.service.register_package(
+ package_name='good/path',
+ caller=auth.Identity.from_bytes('user:abc@example.com'),
+ now=datetime.datetime(2014, 1, 1, 0, 0))
+ self.assertEqual((['good/path'], []),
+ self.service.list_packages('good', False))
+ self.assertEqual((['good/path'], []),
+ self.service.list_packages('good/', False))
+ self.assertEqual(([], []),
+ self.service.list_packages('goo', False))
+
+ def test_list_packages_where_a_package_is_also_a_directory(self):
+ self.assertIsNone(self.service.get_package('good'))
+ self.assertIsNone(self.service.get_package('good/path'))
+ self.service.register_package(
+ package_name='good',
+ caller=auth.Identity.from_bytes('user:abc@example.com'),
+ now=datetime.datetime(2014, 1, 1, 0, 0))
+ self.service.register_package(
+ package_name='good/path',
+ caller=auth.Identity.from_bytes('user:abc@example.com'),
+ now=datetime.datetime(2014, 1, 1, 0, 0))
+ self.assertEqual((['good'], ['good']),
+ self.service.list_packages('', False))
+ self.assertEqual((['good', 'good/path'], ['good']),
+ self.service.list_packages('', True))
+ # Don't be too smart about this case since we'll eventually remove
+ # support for being both a package and directory.
Vadim Sh. 2015/06/23 00:08:35 If we do it, we have to do it correctly: package r
estaab 2015/06/23 02:26:13 It should be ok. I changed the comment.
+ self.assertEqual((['good', 'good/path'], []),
+ self.service.list_packages('good/', False))
+
+ def test_list_packages_with_an_empty_directory(self):
+ self.assertIsNone(self.service.get_package('good/sub/path'))
+ self.service.register_package(
+ package_name='good/sub/path',
+ caller=auth.Identity.from_bytes('user:abc@example.com'),
+ now=datetime.datetime(2014, 1, 1, 0, 0))
+ self.assertEqual(([], ['good/sub']),
+ self.service.list_packages('good', False))
+ self.assertEqual((['good/sub/path'], ['good/sub']),
+ self.service.list_packages('good', True))
+ self.assertEqual((['good/sub/path'], ['good', 'good/sub']),
+ self.service.list_packages('', True))
+
def test_register_package_new(self):
self.assertIsNone(self.service.get_package('a/b'))
inst, registered = self.service.register_package(

Powered by Google App Engine
This is Rietveld 408576698