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

Unified 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 side-by-side diff with in-line comments
Download patch
« 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 »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: appengine/monorail/services/test/api_pb2_v1_helpers_test.py
diff --git a/appengine/monorail/services/test/api_pb2_v1_helpers_test.py b/appengine/monorail/services/test/api_pb2_v1_helpers_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..1a64d9cf8ad189728ed72fd1697beb563b3000a6
--- /dev/null
+++ b/appengine/monorail/services/test/api_pb2_v1_helpers_test.py
@@ -0,0 +1,333 @@
+# Copyright 2016 The Chromium Authors. All rights reserved.
+# Use of this source code is govered by a BSD-style
+# license that can be found in the LICENSE file or at
+# https://developers.google.com/open-source/licenses/bsd
+
+"""Tests for the API v1 helpers."""
+
+import datetime
+import mock
+import unittest
+
+from framework import permissions
+from services import api_pb2_v1_helpers
+from services import service_manager
+from proto import api_pb2_v1
+from proto import project_pb2
+from proto import tracker_pb2
+from proto import usergroup_pb2
+from testing import fake
+
+
+def MakeTemplate(prefix):
+ return tracker_pb2.TemplateDef(
+ name='%s-template' % prefix,
+ content='%s-content' % prefix,
+ summary='%s-summary' % prefix,
+ summary_must_be_edited=True,
+ status='New',
+ labels=['%s-label1' % prefix, '%s-label2' % prefix],
+ members_only=True,
+ owner_defaults_to_member=True,
+ component_required=True,
+ )
+
+
+def MakeLabel(prefix):
+ return tracker_pb2.LabelDef(
+ label='%s-label' % prefix,
+ label_docstring='%s-description' % prefix
+ )
+
+
+def MakeStatus(prefix):
+ return tracker_pb2.StatusDef(
+ status='%s-New' % prefix,
+ means_open=True,
+ status_docstring='%s-status' % prefix
+ )
+
+
+def MakeProjectIssueConfig(prefix):
+ return tracker_pb2.ProjectIssueConfig(
+ restrict_to_known=True,
+ default_col_spec='ID Type Priority Summary',
+ default_sort_spec='ID Priority',
+ well_known_statuses=[
+ MakeStatus('%s-status1' % prefix),
+ MakeStatus('%s-status2' % prefix),
+ ],
+ well_known_labels=[
+ MakeLabel('%s-label1' % prefix),
+ MakeLabel('%s-label2' % prefix),
+ ],
+ templates=[
+ MakeTemplate('%s-template1' % prefix),
+ MakeTemplate('%s-template2' % prefix),
+ ],
+ default_template_for_developers=1,
+ default_template_for_users=2
+ )
+
+
+def MakeProject(prefix):
+ return project_pb2.MakeProject(
+ project_name='%s-project' % prefix,
+ summary='%s-summary' % prefix,
+ description='%s-description' % prefix,
+ )
+
+
+class ApiV1HelpersTest(unittest.TestCase):
+
+ def testConvertTemplate(self):
+ """Test convert_template."""
+ template = MakeTemplate('test')
+ prompt = api_pb2_v1_helpers.convert_template(template)
+ self.assertEquals(template.name, prompt.name)
+ self.assertEquals(template.summary, prompt.title)
+ self.assertEquals(template.content, prompt.description)
+ self.assertEquals(
+ template.summary_must_be_edited, prompt.titleMustBeEdited)
+ self.assertEquals(template.status, prompt.status)
+ self.assertEquals(template.labels, prompt.labels)
+ self.assertEquals(template.members_only, prompt.membersOnly)
+ self.assertEquals(
+ template.owner_defaults_to_member, prompt.defaultToMember)
+ self.assertEquals(template.component_required, prompt.componentRequired)
+
+ def testConvertLabel(self):
+ """Test convert_label."""
+ labeldef = MakeLabel('test')
+ label = api_pb2_v1_helpers.convert_label(labeldef)
+ self.assertEquals(labeldef.label, label.label)
+ self.assertEquals(labeldef.label_docstring, label.description)
+
+ def testConvertStatus(self):
+ """Test convert_status."""
+ statusdef = MakeStatus('test')
+ status = api_pb2_v1_helpers.convert_status(statusdef)
+ self.assertEquals(statusdef.status, status.status)
+ self.assertEquals(statusdef.means_open, status.meansOpen)
+ self.assertEquals(statusdef.status_docstring, status.description)
+
+ def testConvertProjectIssueConfig(self):
+ """Test convert_project_config."""
+ config = MakeProjectIssueConfig('test')
+ config_api = api_pb2_v1_helpers.convert_project_config(config)
+ self.assertEquals(config.restrict_to_known, config_api.restrictToKnown)
+ self.assertEquals(
+ config.default_col_spec.split(), config_api.defaultColumns)
+ self.assertEquals(
+ config.default_sort_spec.split(), config_api.defaultSorting)
+ self.assertEquals(2, len(config_api.statuses))
+ self.assertEquals(2, len(config_api.labels))
+ self.assertEquals(2, len(config_api.prompts))
+ self.assertEquals(
+ config.default_template_for_developers,
+ config_api.defaultPromptForMembers)
+ self.assertEquals(
+ config.default_template_for_users,
+ config_api.defaultPromptForNonMembers)
+
+ def testConvertProject(self):
+ """Test convert_project."""
+ project = MakeProject('testprj')
+ config = MakeProjectIssueConfig('testconfig')
+ role = api_pb2_v1.Role.owner
+ project_api = api_pb2_v1_helpers.convert_project(project, config, role)
+ self.assertEquals(project.project_name, project_api.name)
+ self.assertEquals(project.project_name, project_api.externalId)
+ self.assertEquals('/p/%s/' % project.project_name, project_api.htmlLink)
+ self.assertEquals(project.summary, project_api.summary)
+ self.assertEquals(project.description, project_api.description)
+ self.assertEquals(role, project_api.role)
+ self.assertIsInstance(
+ project_api.issuesConfig, api_pb2_v1.ProjectIssueConfig)
+
+ def testConvertPerson(self):
+ """Test convert_person."""
+ svcs = service_manager.Services()
+ svcs.user = fake.UserService()
+ svcs.user.TestAddUser('user@example.com', 1)
+ result = api_pb2_v1_helpers.convert_person(1, None, svcs)
+ self.assertIsInstance(result, api_pb2_v1.AtomPerson)
+ self.assertEquals('user@example.com', result.name)
+
+ def testConvertIssueIDs(self):
+ """Test convert_issue_ids."""
+ svcs = service_manager.Services()
+ svcs.issue = fake.IssueService()
+ issue1 = fake.MakeTestIssue(789, 1, 'one', 'New', 111L)
+ svcs.issue.TestAddIssue(issue1)
+ issue_ids = [100001]
+ mar = mock.Mock()
+ mar.cnxn = None
+ mar.project_name = 'test-project'
+ result = api_pb2_v1_helpers.convert_issue_ids(issue_ids, mar, svcs)
+ self.assertEquals(1, len(result))
+ self.assertEquals(1, result[0].issueId)
+
+ def testConvertIssueRef(self):
+ """Test convert_issueref_pbs."""
+ svcs = service_manager.Services()
+ svcs.issue = fake.IssueService()
+ issue1 = fake.MakeTestIssue(12345, 1, 'one', 'New', 111L)
+ svcs.issue.TestAddIssue(issue1)
+ svcs.project = fake.ProjectService()
+ svcs.project.TestAddProject(
+ 'test-project', owner_ids=[2],
+ project_id=12345)
+ mar = mock.Mock()
+ mar.cnxn = None
+ mar.project_name = 'test-project'
+ mar.project_id = 12345
+ ir = api_pb2_v1.IssueRef(
+ issueId=1,
+ projectId='test-project'
+ )
+ result = api_pb2_v1_helpers.convert_issueref_pbs([ir], mar, svcs)
+ self.assertEquals(1, len(result))
+ self.assertEquals(100001, result[0])
+
+ def testConvertAttachment(self):
+ """Test convert_attachment."""
+
+ attachment = tracker_pb2.Attachment(
+ attachment_id=1,
+ filename='stats.txt',
+ filesize=12345,
+ mimetype='text/plain',
+ deleted=False)
+
+ result = api_pb2_v1_helpers.convert_attachment(attachment)
+ self.assertEquals(attachment.attachment_id, result.attachmentId)
+ self.assertEquals(attachment.filename, result.fileName)
+ self.assertEquals(attachment.filesize, result.fileSize)
+ self.assertEquals(attachment.mimetype, result.mimetype)
+ self.assertEquals(attachment.deleted, result.isDeleted)
+
+ def testConvertAmendments(self):
+ """Test convert_amendments."""
+
+ svcs = service_manager.Services()
+ svcs.user = fake.UserService()
+ svcs.user.TestAddUser('user@example.com', 1)
+ svcs.user.TestAddUser('user2@example.com', 2)
+ mar = mock.Mock()
+ mar.cnxn = None
+ issue = mock.Mock()
+ issue.project_name = 'test-project'
+
+ amendment_summary = tracker_pb2.Amendment(
+ field=tracker_pb2.FieldID.SUMMARY,
+ newvalue='new summary')
+ amendment_status = tracker_pb2.Amendment(
+ field=tracker_pb2.FieldID.STATUS,
+ newvalue='new status')
+ amendment_owner = tracker_pb2.Amendment(
+ field=tracker_pb2.FieldID.OWNER,
+ added_user_ids=[1])
+ amendment_labels = tracker_pb2.Amendment(
+ field=tracker_pb2.FieldID.LABELS,
+ newvalue='label1 -label2')
+ amendment_cc_add = tracker_pb2.Amendment(
+ field=tracker_pb2.FieldID.CC,
+ added_user_ids=[1])
+ amendment_cc_remove = tracker_pb2.Amendment(
+ field=tracker_pb2.FieldID.CC,
+ removed_user_ids=[2])
+ amendment_blockedon = tracker_pb2.Amendment(
+ field=tracker_pb2.FieldID.BLOCKEDON,
+ newvalue='1')
+ amendment_blocking = tracker_pb2.Amendment(
+ field=tracker_pb2.FieldID.BLOCKING,
+ newvalue='other:2 -3')
+ amendment_mergedinto = tracker_pb2.Amendment(
+ field=tracker_pb2.FieldID.MERGEDINTO,
+ newvalue='4')
+ amendments = [
+ amendment_summary, amendment_status, amendment_owner,
+ amendment_labels, amendment_cc_add, amendment_cc_remove,
+ amendment_blockedon, amendment_blocking, amendment_mergedinto]
+
+ result = api_pb2_v1_helpers.convert_amendments(
+ issue, amendments, mar, svcs)
+ self.assertEquals(amendment_summary.newvalue, result.summary)
+ self.assertEquals(amendment_status.newvalue, result.status)
+ self.assertEquals('user@example.com', result.owner)
+ self.assertEquals(['label1', '-label2'], result.labels)
+ self.assertEquals(['user@example.com', '-user2@example.com'], result.cc)
+ self.assertEquals(['test-project:1'], result.blockedOn)
+ self.assertEquals(['other:2', '-test-project:3'], result.blocking)
+ self.assertEquals(amendment_mergedinto.newvalue, result.mergedInto)
+
+ def testConvertComment(self):
+ """Test convert_comment."""
+
+ svcs = service_manager.Services()
+ svcs.user = fake.UserService()
+ svcs.user.TestAddUser('user@example.com', 1)
+ mar = mock.Mock()
+ mar.cnxn = None
+ issue = fake.MakeTestIssue(project_id=12345, local_id=1, summary='sum',
+ status='New', owner_id=1001)
+
+ comment = tracker_pb2.IssueComment(
+ user_id=1,
+ content='test content',
+ sequence=1,
+ deleted_by=1,
+ timestamp=1437700000,
+ )
+ result = api_pb2_v1_helpers.convert_comment(
+ issue, comment, mar, svcs, None)
+ self.assertEquals('user@example.com', result.author.name)
+ self.assertEquals(comment.content, result.content)
+ self.assertEquals('user@example.com', result.deletedBy.name)
+ self.assertEquals(1, result.id)
+ # Ensure that the published timestamp falls in a timestamp range to account
+ # for the test being run in different timezones.
+ # Using "Fri, 23 Jul 2015 00:00:00" and "Fri, 25 Jul 2015 00:00:00".
+ self.assertTrue(
+ datetime.datetime(2015, 7, 23, 0, 0, 0) <= result.published <=
+ datetime.datetime(2015, 7, 25, 0, 0, 0))
+
+ def testSplitRemoveAdd(self):
+ """Test split_remove_add."""
+
+ items = ['1', '-2', '-3', '4']
+ list_to_add, list_to_remove = api_pb2_v1_helpers.split_remove_add(items)
+
+ self.assertEquals(['1', '4'], list_to_add)
+ self.assertEquals(['2', '3'], list_to_remove)
+
+ def testIssueGlobalIDs(self):
+ """Test issue_global_ids."""
+
+ svcs = service_manager.Services()
+ svcs.issue = fake.IssueService()
+ issue1 = fake.MakeTestIssue(12345, 1, 'one', 'New', 111L)
+ svcs.issue.TestAddIssue(issue1)
+ svcs.project = fake.ProjectService()
+ svcs.project.TestAddProject(
+ 'test-project', owner_ids=[2],
+ project_id=12345)
+ mar = mock.Mock()
+ mar.cnxn = None
+ mar.project_name = 'test-project'
+ mar.project_id = 12345
+ pairs = ['test-project:1']
+ result = api_pb2_v1_helpers.issue_global_ids(pairs, 12345, mar, svcs)
+ self.assertEquals(100001, result[0])
+
+ def testConvertGroupSettings(self):
+ """Test convert_group_settings."""
+
+ setting = usergroup_pb2.MakeSettings('owners', 'mdb', 0)
+ result = api_pb2_v1_helpers.convert_group_settings('test-group', setting)
+ self.assertEquals('test-group', result.groupName)
+ self.assertEquals(
+ setting.who_can_view_members, result.who_can_view_members)
+ self.assertEquals(setting.ext_group_type, result.ext_group_type)
+ self.assertEquals(setting.last_sync_time, result.last_sync_time)
« 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