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

Side by Side 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 unified diff | Download patch
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import datetime 5 import datetime
6 import hashlib 6 import hashlib
7 import StringIO 7 import StringIO
8 import unittest 8 import unittest
9 import zipfile 9 import zipfile
10 10
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 76
77 class TestRepoService(testing.AppengineTestCase): 77 class TestRepoService(testing.AppengineTestCase):
78 maxDiff = None 78 maxDiff = None
79 79
80 def setUp(self): 80 def setUp(self):
81 super(TestRepoService, self).setUp() 81 super(TestRepoService, self).setUp()
82 self.mocked_cas_service = MockedCASService() 82 self.mocked_cas_service = MockedCASService()
83 self.mock(impl.cas, 'get_cas_service', lambda: self.mocked_cas_service) 83 self.mock(impl.cas, 'get_cas_service', lambda: self.mocked_cas_service)
84 self.service = impl.get_repo_service() 84 self.service = impl.get_repo_service()
85 85
86 def test_list_packages_no_path(self):
87 self.assertIsNone(self.service.get_package('a/b'))
88 self.assertIsNone(self.service.get_package('y/z'))
89 self.service.register_package(
90 package_name='y/z',
91 caller=auth.Identity.from_bytes('user:abc@example.com'),
92 now=datetime.datetime(2014, 1, 1, 0, 0))
93 self.service.register_package(
94 package_name='a/b',
95 caller=auth.Identity.from_bytes('user:abc@example.com'),
96 now=datetime.datetime(2014, 1, 1, 0, 0))
97 self.assertEqual(([], ['a', 'y']),
98 self.service.list_packages('', False))
99 self.assertEqual((['a/b', 'y/z'], ['a', 'y']),
100 self.service.list_packages('', True))
101
102 def test_list_packages_with_path(self):
103 self.assertIsNone(self.service.get_package('a/b'))
104 self.assertIsNone(self.service.get_package('y/x'))
105 self.assertIsNone(self.service.get_package('y/z/z'))
106 self.service.register_package(
107 package_name='y/x',
108 caller=auth.Identity.from_bytes('user:abc@example.com'),
109 now=datetime.datetime(2014, 1, 1, 0, 0))
110 self.service.register_package(
111 package_name='y/z/z',
112 caller=auth.Identity.from_bytes('user:abc@example.com'),
113 now=datetime.datetime(2014, 1, 1, 0, 0))
114 self.service.register_package(
115 package_name='a/b',
116 caller=auth.Identity.from_bytes('user:abc@example.com'),
117 now=datetime.datetime(2014, 1, 1, 0, 0))
118 self.assertEqual((['y/x'], ['y/z']), self.service.list_packages('y', False))
119 self.assertEqual((['y/z/z'], []),
120 self.service.list_packages('y/z/z', False))
121 self.assertEqual((['y/x'], ['y/z']),
122 self.service.list_packages('y/', False))
123 self.assertEqual((['y/x', 'y/z/z'], ['y/z']),
124 self.service.list_packages('y', True))
125
126 def test_list_packages_ignore_substrings(self):
127 self.assertIsNone(self.service.get_package('good/path'))
128 self.service.register_package(
129 package_name='good/path',
130 caller=auth.Identity.from_bytes('user:abc@example.com'),
131 now=datetime.datetime(2014, 1, 1, 0, 0))
132 self.assertEqual((['good/path'], []),
133 self.service.list_packages('good', False))
134 self.assertEqual((['good/path'], []),
135 self.service.list_packages('good/', False))
136 self.assertEqual(([], []),
137 self.service.list_packages('goo', False))
138
139 def test_list_packages_where_a_package_is_also_a_directory(self):
140 self.assertIsNone(self.service.get_package('good'))
141 self.assertIsNone(self.service.get_package('good/path'))
142 self.service.register_package(
143 package_name='good',
144 caller=auth.Identity.from_bytes('user:abc@example.com'),
145 now=datetime.datetime(2014, 1, 1, 0, 0))
146 self.service.register_package(
147 package_name='good/path',
148 caller=auth.Identity.from_bytes('user:abc@example.com'),
149 now=datetime.datetime(2014, 1, 1, 0, 0))
150 self.assertEqual((['good'], ['good']),
151 self.service.list_packages('', False))
152 self.assertEqual((['good', 'good/path'], ['good']),
153 self.service.list_packages('', True))
154 # To keep things simple we match packages with names matching the search
155 # with the trailing slash stripped.
156 self.assertEqual((['good', 'good/path'], []),
157 self.service.list_packages('good/', False))
158
159 def test_list_packages_with_an_empty_directory(self):
160 self.assertIsNone(self.service.get_package('good/sub/path'))
161 self.service.register_package(
162 package_name='good/sub/path',
163 caller=auth.Identity.from_bytes('user:abc@example.com'),
164 now=datetime.datetime(2014, 1, 1, 0, 0))
165 self.assertEqual(([], ['good/sub']),
166 self.service.list_packages('good', False))
167 self.assertEqual((['good/sub/path'], ['good/sub']),
168 self.service.list_packages('good', True))
169 self.assertEqual((['good/sub/path'], ['good', 'good/sub']),
170 self.service.list_packages('', True))
171
86 def test_register_package_new(self): 172 def test_register_package_new(self):
87 self.assertIsNone(self.service.get_package('a/b')) 173 self.assertIsNone(self.service.get_package('a/b'))
88 inst, registered = self.service.register_package( 174 inst, registered = self.service.register_package(
89 package_name='a/b', 175 package_name='a/b',
90 caller=auth.Identity.from_bytes('user:abc@example.com'), 176 caller=auth.Identity.from_bytes('user:abc@example.com'),
91 now=datetime.datetime(2014, 1, 1, 0, 0)) 177 now=datetime.datetime(2014, 1, 1, 0, 0))
92 self.assertTrue(registered) 178 self.assertTrue(registered)
93 self.assertEqual('a/b', inst.package_name) 179 self.assertEqual('a/b', inst.package_name)
94 self.assertEqual({ 180 self.assertEqual({
95 'registered_by': auth.Identity(kind='user', name='abc@example.com'), 181 'registered_by': auth.Identity(kind='user', name='abc@example.com'),
(...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after
579 return True 665 return True
580 666
581 def run(self, instance, data): 667 def run(self, instance, data):
582 if self.error: 668 if self.error:
583 raise processing.ProcessingError(self.error) 669 raise processing.ProcessingError(self.error)
584 return { 670 return {
585 'instance_id': instance.instance_id, 671 'instance_id': instance.instance_id,
586 'package_name': instance.package_name, 672 'package_name': instance.package_name,
587 'processor_name': self.name, 673 'processor_name': self.name,
588 } 674 }
OLDNEW
« no previous file with comments | « appengine/chrome_infra_packages/cipd/test/api_test.py ('k') | go/src/infra/tools/cipd/apps/cipd/main.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698