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

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 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 64
65 class TestRepoService(testing.AppengineTestCase): 65 class TestRepoService(testing.AppengineTestCase):
66 maxDiff = None 66 maxDiff = None
67 67
68 def setUp(self): 68 def setUp(self):
69 super(TestRepoService, self).setUp() 69 super(TestRepoService, self).setUp()
70 self.mocked_cas_service = MockedCASService() 70 self.mocked_cas_service = MockedCASService()
71 self.mock(impl.cas, 'get_cas_service', lambda: self.mocked_cas_service) 71 self.mock(impl.cas, 'get_cas_service', lambda: self.mocked_cas_service)
72 self.service = impl.get_repo_service() 72 self.service = impl.get_repo_service()
73 73
74 def test_list_packages_no_path(self):
75 self.assertIsNone(self.service.get_package('a/b'))
76 self.assertIsNone(self.service.get_package('y/z'))
77 self.service.register_package(
78 package_name='y/z',
79 caller=auth.Identity.from_bytes('user:abc@example.com'),
80 now=datetime.datetime(2014, 1, 1, 0, 0))
81 self.service.register_package(
82 package_name='a/b',
83 caller=auth.Identity.from_bytes('user:abc@example.com'),
84 now=datetime.datetime(2014, 1, 1, 0, 0))
85 self.assertEqual(([], ['a', 'y']),
86 self.service.list_packages('', False))
87 self.assertEqual((['a/b', 'y/z'], ['a', 'y']),
88 self.service.list_packages('', True))
89
90 def test_list_packages_with_path(self):
91 self.assertIsNone(self.service.get_package('a/b'))
92 self.assertIsNone(self.service.get_package('y/x'))
93 self.assertIsNone(self.service.get_package('y/z/z'))
94 self.service.register_package(
95 package_name='y/x',
96 caller=auth.Identity.from_bytes('user:abc@example.com'),
97 now=datetime.datetime(2014, 1, 1, 0, 0))
98 self.service.register_package(
99 package_name='y/z/z',
100 caller=auth.Identity.from_bytes('user:abc@example.com'),
101 now=datetime.datetime(2014, 1, 1, 0, 0))
102 self.service.register_package(
103 package_name='a/b',
104 caller=auth.Identity.from_bytes('user:abc@example.com'),
105 now=datetime.datetime(2014, 1, 1, 0, 0))
106 self.assertEqual((['y/x'], ['y/z']), self.service.list_packages('y', False))
107 self.assertEqual((['y/z/z'], []),
108 self.service.list_packages('y/z/z', False))
109 self.assertEqual((['y/x'], ['y/z']),
110 self.service.list_packages('y/', False))
111 self.assertEqual((['y/x', 'y/z/z'], ['y/z']),
112 self.service.list_packages('y', True))
113
114 def test_list_packages_ignore_substrings(self):
115 self.assertIsNone(self.service.get_package('good/path'))
116 self.service.register_package(
117 package_name='good/path',
118 caller=auth.Identity.from_bytes('user:abc@example.com'),
119 now=datetime.datetime(2014, 1, 1, 0, 0))
120 self.assertEqual((['good/path'], []),
121 self.service.list_packages('good', False))
122 self.assertEqual((['good/path'], []),
123 self.service.list_packages('good/', False))
124 self.assertEqual(([], []),
125 self.service.list_packages('goo', False))
126
127 def test_list_packages_where_a_package_is_also_a_directory(self):
128 self.assertIsNone(self.service.get_package('good'))
129 self.assertIsNone(self.service.get_package('good/path'))
130 self.service.register_package(
131 package_name='good',
132 caller=auth.Identity.from_bytes('user:abc@example.com'),
133 now=datetime.datetime(2014, 1, 1, 0, 0))
134 self.service.register_package(
135 package_name='good/path',
136 caller=auth.Identity.from_bytes('user:abc@example.com'),
137 now=datetime.datetime(2014, 1, 1, 0, 0))
138 self.assertEqual((['good'], ['good']),
139 self.service.list_packages('', False))
140 self.assertEqual((['good', 'good/path'], ['good']),
141 self.service.list_packages('', True))
142 # Don't be too smart about this case since we'll eventually remove
143 # 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.
144 self.assertEqual((['good', 'good/path'], []),
145 self.service.list_packages('good/', False))
146
147 def test_list_packages_with_an_empty_directory(self):
148 self.assertIsNone(self.service.get_package('good/sub/path'))
149 self.service.register_package(
150 package_name='good/sub/path',
151 caller=auth.Identity.from_bytes('user:abc@example.com'),
152 now=datetime.datetime(2014, 1, 1, 0, 0))
153 self.assertEqual(([], ['good/sub']),
154 self.service.list_packages('good', False))
155 self.assertEqual((['good/sub/path'], ['good/sub']),
156 self.service.list_packages('good', True))
157 self.assertEqual((['good/sub/path'], ['good', 'good/sub']),
158 self.service.list_packages('', True))
159
74 def test_register_package_new(self): 160 def test_register_package_new(self):
75 self.assertIsNone(self.service.get_package('a/b')) 161 self.assertIsNone(self.service.get_package('a/b'))
76 inst, registered = self.service.register_package( 162 inst, registered = self.service.register_package(
77 package_name='a/b', 163 package_name='a/b',
78 caller=auth.Identity.from_bytes('user:abc@example.com'), 164 caller=auth.Identity.from_bytes('user:abc@example.com'),
79 now=datetime.datetime(2014, 1, 1, 0, 0)) 165 now=datetime.datetime(2014, 1, 1, 0, 0))
80 self.assertTrue(registered) 166 self.assertTrue(registered)
81 self.assertEqual('a/b', inst.package_name) 167 self.assertEqual('a/b', inst.package_name)
82 self.assertEqual({ 168 self.assertEqual({
83 'registered_by': auth.Identity(kind='user', name='abc@example.com'), 169 'registered_by': auth.Identity(kind='user', name='abc@example.com'),
(...skipping 435 matching lines...) Expand 10 before | Expand all | Expand 10 after
519 return True 605 return True
520 606
521 def run(self, instance, data): 607 def run(self, instance, data):
522 if self.error: 608 if self.error:
523 raise processing.ProcessingError(self.error) 609 raise processing.ProcessingError(self.error)
524 return { 610 return {
525 'instance_id': instance.instance_id, 611 'instance_id': instance.instance_id,
526 'package_name': instance.package_name, 612 'package_name': instance.package_name,
527 'processor_name': self.name, 613 'processor_name': self.name,
528 } 614 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698