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

Side by Side Diff: appengine/chrome_infra_packages/cipd/test/api_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 6
7 from testing_utils import testing 7 from testing_utils import testing
8 8
9 from components import auth 9 from components import auth
10 from components import auth_testing 10 from components import auth_testing
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 resp = self.call_api('fetch_package', {'package_name': 'good/name'}) 60 resp = self.call_api('fetch_package', {'package_name': 'good/name'})
61 self.assertEqual({'status': 'PACKAGE_NOT_FOUND'}, resp.json_body) 61 self.assertEqual({'status': 'PACKAGE_NOT_FOUND'}, resp.json_body)
62 62
63 def test_fetch_package_bad_name(self): 63 def test_fetch_package_bad_name(self):
64 resp = self.call_api('fetch_package', {'package_name': 'bad name'}) 64 resp = self.call_api('fetch_package', {'package_name': 'bad name'})
65 self.assertEqual({ 65 self.assertEqual({
66 'status': 'ERROR', 66 'status': 'ERROR',
67 'error_message': 'Invalid package name', 67 'error_message': 'Invalid package name',
68 }, resp.json_body) 68 }, resp.json_body)
69 69
70 def test_list_packages_no_results(self):
71 resp = self.call_api('list_packages', {})
72 self.assertEqual({
73 'status': 'SUCCESS',
74 }, resp.json_body)
75
76 def test_list_packages_all_packages(self):
77 resp = self.call_api('register_package', {'package_name': 'good/name'})
78 self.assertEqual('REGISTERED', resp.json_body['status'])
79
80 resp = self.call_api('list_packages', {'recursive': True})
81 self.assertEqual({
82 'status': 'SUCCESS',
83 'packages': ['good/name'],
84 'directories': ['good'],
85 }, resp.json_body)
86
87 def test_list_packages_filter_no_access(self):
88 resp = self.call_api('register_package', {'package_name': 'good/name'})
89 self.assertEqual('REGISTERED', resp.json_body['status'])
90
91 self.mock(api.acl, 'can_fetch_package', lambda *_: False)
92
93 resp = self.call_api('list_packages', {})
94 self.assertEqual({
95 'status': 'SUCCESS',
96 }, resp.json_body)
97
98 def test_list_packages_in_path(self):
99 resp = self.call_api('register_package', {'package_name': 'p/a'})
100 self.assertEqual('REGISTERED', resp.json_body['status'])
101 resp = self.call_api('register_package', {'package_name': 'p/y'})
102 self.assertEqual('REGISTERED', resp.json_body['status'])
103 resp = self.call_api('register_package', {'package_name': 'p/z/z'})
104 self.assertEqual('REGISTERED', resp.json_body['status'])
105 resp = self.call_api('register_package', {'package_name': 'pp'})
106 self.assertEqual('REGISTERED', resp.json_body['status'])
107 resp = self.call_api('register_package', {'package_name': 'q'})
108 self.assertEqual('REGISTERED', resp.json_body['status'])
109
110 resp = self.call_api('list_packages', {
111 'path': 'p',
112 'recursive': False,
113 })
114 self.assertEqual({
115 'status': 'SUCCESS',
116 'packages': [
117 'p/a',
118 'p/y',
119 ],
120 'directories': [
121 'p/z',
122 ],
123 }, resp.json_body)
124
125 resp = self.call_api('list_packages', {
126 'path': 'p',
127 'recursive': True,
128 })
129 self.assertEqual({
130 'status': 'SUCCESS',
131 'packages': [
132 'p/a',
133 'p/y',
134 'p/z/z',
135 ],
136 'directories': [
137 'p/z',
138 ],
139 }, resp.json_body)
140
70 def test_register_package(self): 141 def test_register_package(self):
71 self.mock(utils, 'utcnow', lambda: datetime.datetime(2014, 1, 1)) 142 self.mock(utils, 'utcnow', lambda: datetime.datetime(2014, 1, 1))
72 143
73 # Not yet registered. 144 # Not yet registered.
74 resp = self.call_api('register_package', {'package_name': 'good/name'}) 145 resp = self.call_api('register_package', {'package_name': 'good/name'})
75 self.assertEqual(200, resp.status_code) 146 self.assertEqual(200, resp.status_code)
76 self.assertEqual({ 147 self.assertEqual({
77 'status': 'REGISTERED', 148 'status': 'REGISTERED',
78 'package': { 149 'package': {
79 'package_name': 'good/name', 150 'package_name': 'good/name',
(...skipping 920 matching lines...) Expand 10 before | Expand all | Expand 10 after
1000 return True 1071 return True
1001 1072
1002 def generate_fetch_url(self, instance): 1073 def generate_fetch_url(self, instance):
1003 return 'http://signed-url/%s' % instance.instance_id 1074 return 'http://signed-url/%s' % instance.instance_id
1004 1075
1005 def is_instance_file_uploaded(self, package_name, instance_id): 1076 def is_instance_file_uploaded(self, package_name, instance_id):
1006 return instance_id in self.uploaded 1077 return instance_id in self.uploaded
1007 1078
1008 def create_upload_session(self, package_name, instance_id, caller): 1079 def create_upload_session(self, package_name, instance_id, caller):
1009 return 'http://upload_url', 'upload_session_id' 1080 return 'http://upload_url', 'upload_session_id'
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698