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

Side by Side Diff: appengine/monorail/services/test/api_pb2_v1_helpers_test.py

Issue 1868553004: Open Source Monorail (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Rebase Created 4 years, 8 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
(Empty)
1 # Copyright 2016 The Chromium Authors. All rights reserved.
2 # Use of this source code is govered by a BSD-style
3 # license that can be found in the LICENSE file or at
4 # https://developers.google.com/open-source/licenses/bsd
5
6 """Tests for the API v1 helpers."""
7
8 import datetime
9 import mock
10 import unittest
11
12 from framework import permissions
13 from services import api_pb2_v1_helpers
14 from services import service_manager
15 from proto import api_pb2_v1
16 from proto import project_pb2
17 from proto import tracker_pb2
18 from proto import usergroup_pb2
19 from testing import fake
20
21
22 def MakeTemplate(prefix):
23 return tracker_pb2.TemplateDef(
24 name='%s-template' % prefix,
25 content='%s-content' % prefix,
26 summary='%s-summary' % prefix,
27 summary_must_be_edited=True,
28 status='New',
29 labels=['%s-label1' % prefix, '%s-label2' % prefix],
30 members_only=True,
31 owner_defaults_to_member=True,
32 component_required=True,
33 )
34
35
36 def MakeLabel(prefix):
37 return tracker_pb2.LabelDef(
38 label='%s-label' % prefix,
39 label_docstring='%s-description' % prefix
40 )
41
42
43 def MakeStatus(prefix):
44 return tracker_pb2.StatusDef(
45 status='%s-New' % prefix,
46 means_open=True,
47 status_docstring='%s-status' % prefix
48 )
49
50
51 def MakeProjectIssueConfig(prefix):
52 return tracker_pb2.ProjectIssueConfig(
53 restrict_to_known=True,
54 default_col_spec='ID Type Priority Summary',
55 default_sort_spec='ID Priority',
56 well_known_statuses=[
57 MakeStatus('%s-status1' % prefix),
58 MakeStatus('%s-status2' % prefix),
59 ],
60 well_known_labels=[
61 MakeLabel('%s-label1' % prefix),
62 MakeLabel('%s-label2' % prefix),
63 ],
64 templates=[
65 MakeTemplate('%s-template1' % prefix),
66 MakeTemplate('%s-template2' % prefix),
67 ],
68 default_template_for_developers=1,
69 default_template_for_users=2
70 )
71
72
73 def MakeProject(prefix):
74 return project_pb2.MakeProject(
75 project_name='%s-project' % prefix,
76 summary='%s-summary' % prefix,
77 description='%s-description' % prefix,
78 )
79
80
81 class ApiV1HelpersTest(unittest.TestCase):
82
83 def testConvertTemplate(self):
84 """Test convert_template."""
85 template = MakeTemplate('test')
86 prompt = api_pb2_v1_helpers.convert_template(template)
87 self.assertEquals(template.name, prompt.name)
88 self.assertEquals(template.summary, prompt.title)
89 self.assertEquals(template.content, prompt.description)
90 self.assertEquals(
91 template.summary_must_be_edited, prompt.titleMustBeEdited)
92 self.assertEquals(template.status, prompt.status)
93 self.assertEquals(template.labels, prompt.labels)
94 self.assertEquals(template.members_only, prompt.membersOnly)
95 self.assertEquals(
96 template.owner_defaults_to_member, prompt.defaultToMember)
97 self.assertEquals(template.component_required, prompt.componentRequired)
98
99 def testConvertLabel(self):
100 """Test convert_label."""
101 labeldef = MakeLabel('test')
102 label = api_pb2_v1_helpers.convert_label(labeldef)
103 self.assertEquals(labeldef.label, label.label)
104 self.assertEquals(labeldef.label_docstring, label.description)
105
106 def testConvertStatus(self):
107 """Test convert_status."""
108 statusdef = MakeStatus('test')
109 status = api_pb2_v1_helpers.convert_status(statusdef)
110 self.assertEquals(statusdef.status, status.status)
111 self.assertEquals(statusdef.means_open, status.meansOpen)
112 self.assertEquals(statusdef.status_docstring, status.description)
113
114 def testConvertProjectIssueConfig(self):
115 """Test convert_project_config."""
116 config = MakeProjectIssueConfig('test')
117 config_api = api_pb2_v1_helpers.convert_project_config(config)
118 self.assertEquals(config.restrict_to_known, config_api.restrictToKnown)
119 self.assertEquals(
120 config.default_col_spec.split(), config_api.defaultColumns)
121 self.assertEquals(
122 config.default_sort_spec.split(), config_api.defaultSorting)
123 self.assertEquals(2, len(config_api.statuses))
124 self.assertEquals(2, len(config_api.labels))
125 self.assertEquals(2, len(config_api.prompts))
126 self.assertEquals(
127 config.default_template_for_developers,
128 config_api.defaultPromptForMembers)
129 self.assertEquals(
130 config.default_template_for_users,
131 config_api.defaultPromptForNonMembers)
132
133 def testConvertProject(self):
134 """Test convert_project."""
135 project = MakeProject('testprj')
136 config = MakeProjectIssueConfig('testconfig')
137 role = api_pb2_v1.Role.owner
138 project_api = api_pb2_v1_helpers.convert_project(project, config, role)
139 self.assertEquals(project.project_name, project_api.name)
140 self.assertEquals(project.project_name, project_api.externalId)
141 self.assertEquals('/p/%s/' % project.project_name, project_api.htmlLink)
142 self.assertEquals(project.summary, project_api.summary)
143 self.assertEquals(project.description, project_api.description)
144 self.assertEquals(role, project_api.role)
145 self.assertIsInstance(
146 project_api.issuesConfig, api_pb2_v1.ProjectIssueConfig)
147
148 def testConvertPerson(self):
149 """Test convert_person."""
150 svcs = service_manager.Services()
151 svcs.user = fake.UserService()
152 svcs.user.TestAddUser('user@example.com', 1)
153 result = api_pb2_v1_helpers.convert_person(1, None, svcs)
154 self.assertIsInstance(result, api_pb2_v1.AtomPerson)
155 self.assertEquals('user@example.com', result.name)
156
157 def testConvertIssueIDs(self):
158 """Test convert_issue_ids."""
159 svcs = service_manager.Services()
160 svcs.issue = fake.IssueService()
161 issue1 = fake.MakeTestIssue(789, 1, 'one', 'New', 111L)
162 svcs.issue.TestAddIssue(issue1)
163 issue_ids = [100001]
164 mar = mock.Mock()
165 mar.cnxn = None
166 mar.project_name = 'test-project'
167 result = api_pb2_v1_helpers.convert_issue_ids(issue_ids, mar, svcs)
168 self.assertEquals(1, len(result))
169 self.assertEquals(1, result[0].issueId)
170
171 def testConvertIssueRef(self):
172 """Test convert_issueref_pbs."""
173 svcs = service_manager.Services()
174 svcs.issue = fake.IssueService()
175 issue1 = fake.MakeTestIssue(12345, 1, 'one', 'New', 111L)
176 svcs.issue.TestAddIssue(issue1)
177 svcs.project = fake.ProjectService()
178 svcs.project.TestAddProject(
179 'test-project', owner_ids=[2],
180 project_id=12345)
181 mar = mock.Mock()
182 mar.cnxn = None
183 mar.project_name = 'test-project'
184 mar.project_id = 12345
185 ir = api_pb2_v1.IssueRef(
186 issueId=1,
187 projectId='test-project'
188 )
189 result = api_pb2_v1_helpers.convert_issueref_pbs([ir], mar, svcs)
190 self.assertEquals(1, len(result))
191 self.assertEquals(100001, result[0])
192
193 def testConvertAttachment(self):
194 """Test convert_attachment."""
195
196 attachment = tracker_pb2.Attachment(
197 attachment_id=1,
198 filename='stats.txt',
199 filesize=12345,
200 mimetype='text/plain',
201 deleted=False)
202
203 result = api_pb2_v1_helpers.convert_attachment(attachment)
204 self.assertEquals(attachment.attachment_id, result.attachmentId)
205 self.assertEquals(attachment.filename, result.fileName)
206 self.assertEquals(attachment.filesize, result.fileSize)
207 self.assertEquals(attachment.mimetype, result.mimetype)
208 self.assertEquals(attachment.deleted, result.isDeleted)
209
210 def testConvertAmendments(self):
211 """Test convert_amendments."""
212
213 svcs = service_manager.Services()
214 svcs.user = fake.UserService()
215 svcs.user.TestAddUser('user@example.com', 1)
216 svcs.user.TestAddUser('user2@example.com', 2)
217 mar = mock.Mock()
218 mar.cnxn = None
219 issue = mock.Mock()
220 issue.project_name = 'test-project'
221
222 amendment_summary = tracker_pb2.Amendment(
223 field=tracker_pb2.FieldID.SUMMARY,
224 newvalue='new summary')
225 amendment_status = tracker_pb2.Amendment(
226 field=tracker_pb2.FieldID.STATUS,
227 newvalue='new status')
228 amendment_owner = tracker_pb2.Amendment(
229 field=tracker_pb2.FieldID.OWNER,
230 added_user_ids=[1])
231 amendment_labels = tracker_pb2.Amendment(
232 field=tracker_pb2.FieldID.LABELS,
233 newvalue='label1 -label2')
234 amendment_cc_add = tracker_pb2.Amendment(
235 field=tracker_pb2.FieldID.CC,
236 added_user_ids=[1])
237 amendment_cc_remove = tracker_pb2.Amendment(
238 field=tracker_pb2.FieldID.CC,
239 removed_user_ids=[2])
240 amendment_blockedon = tracker_pb2.Amendment(
241 field=tracker_pb2.FieldID.BLOCKEDON,
242 newvalue='1')
243 amendment_blocking = tracker_pb2.Amendment(
244 field=tracker_pb2.FieldID.BLOCKING,
245 newvalue='other:2 -3')
246 amendment_mergedinto = tracker_pb2.Amendment(
247 field=tracker_pb2.FieldID.MERGEDINTO,
248 newvalue='4')
249 amendments = [
250 amendment_summary, amendment_status, amendment_owner,
251 amendment_labels, amendment_cc_add, amendment_cc_remove,
252 amendment_blockedon, amendment_blocking, amendment_mergedinto]
253
254 result = api_pb2_v1_helpers.convert_amendments(
255 issue, amendments, mar, svcs)
256 self.assertEquals(amendment_summary.newvalue, result.summary)
257 self.assertEquals(amendment_status.newvalue, result.status)
258 self.assertEquals('user@example.com', result.owner)
259 self.assertEquals(['label1', '-label2'], result.labels)
260 self.assertEquals(['user@example.com', '-user2@example.com'], result.cc)
261 self.assertEquals(['test-project:1'], result.blockedOn)
262 self.assertEquals(['other:2', '-test-project:3'], result.blocking)
263 self.assertEquals(amendment_mergedinto.newvalue, result.mergedInto)
264
265 def testConvertComment(self):
266 """Test convert_comment."""
267
268 svcs = service_manager.Services()
269 svcs.user = fake.UserService()
270 svcs.user.TestAddUser('user@example.com', 1)
271 mar = mock.Mock()
272 mar.cnxn = None
273 issue = fake.MakeTestIssue(project_id=12345, local_id=1, summary='sum',
274 status='New', owner_id=1001)
275
276 comment = tracker_pb2.IssueComment(
277 user_id=1,
278 content='test content',
279 sequence=1,
280 deleted_by=1,
281 timestamp=1437700000,
282 )
283 result = api_pb2_v1_helpers.convert_comment(
284 issue, comment, mar, svcs, None)
285 self.assertEquals('user@example.com', result.author.name)
286 self.assertEquals(comment.content, result.content)
287 self.assertEquals('user@example.com', result.deletedBy.name)
288 self.assertEquals(1, result.id)
289 # Ensure that the published timestamp falls in a timestamp range to account
290 # for the test being run in different timezones.
291 # Using "Fri, 23 Jul 2015 00:00:00" and "Fri, 25 Jul 2015 00:00:00".
292 self.assertTrue(
293 datetime.datetime(2015, 7, 23, 0, 0, 0) <= result.published <=
294 datetime.datetime(2015, 7, 25, 0, 0, 0))
295
296 def testSplitRemoveAdd(self):
297 """Test split_remove_add."""
298
299 items = ['1', '-2', '-3', '4']
300 list_to_add, list_to_remove = api_pb2_v1_helpers.split_remove_add(items)
301
302 self.assertEquals(['1', '4'], list_to_add)
303 self.assertEquals(['2', '3'], list_to_remove)
304
305 def testIssueGlobalIDs(self):
306 """Test issue_global_ids."""
307
308 svcs = service_manager.Services()
309 svcs.issue = fake.IssueService()
310 issue1 = fake.MakeTestIssue(12345, 1, 'one', 'New', 111L)
311 svcs.issue.TestAddIssue(issue1)
312 svcs.project = fake.ProjectService()
313 svcs.project.TestAddProject(
314 'test-project', owner_ids=[2],
315 project_id=12345)
316 mar = mock.Mock()
317 mar.cnxn = None
318 mar.project_name = 'test-project'
319 mar.project_id = 12345
320 pairs = ['test-project:1']
321 result = api_pb2_v1_helpers.issue_global_ids(pairs, 12345, mar, svcs)
322 self.assertEquals(100001, result[0])
323
324 def testConvertGroupSettings(self):
325 """Test convert_group_settings."""
326
327 setting = usergroup_pb2.MakeSettings('owners', 'mdb', 0)
328 result = api_pb2_v1_helpers.convert_group_settings('test-group', setting)
329 self.assertEquals('test-group', result.groupName)
330 self.assertEquals(
331 setting.who_can_view_members, result.who_can_view_members)
332 self.assertEquals(setting.ext_group_type, result.ext_group_type)
333 self.assertEquals(setting.last_sync_time, result.last_sync_time)
OLDNEW
« no previous file with comments | « appengine/monorail/services/test/__init__.py ('k') | appengine/monorail/services/test/api_svc_v1_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698