OLD | NEW |
(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 """Unit tests for framework_views classes.""" |
| 7 |
| 8 import unittest |
| 9 |
| 10 from framework import framework_views |
| 11 from framework import monorailrequest |
| 12 from proto import project_pb2 |
| 13 from proto import tracker_pb2 |
| 14 from proto import user_pb2 |
| 15 import settings |
| 16 |
| 17 |
| 18 LONG_STR = 'VeryLongStringThatCertainlyWillNotFit' |
| 19 LONG_PART_STR = 'OnePartThatWillNotFit-OneShort' |
| 20 |
| 21 |
| 22 class LabelViewTest(unittest.TestCase): |
| 23 |
| 24 def testLabelView(self): |
| 25 view = framework_views.LabelView('', None) |
| 26 self.assertEquals('', view.name) |
| 27 |
| 28 view = framework_views.LabelView('Priority-High', None) |
| 29 self.assertEquals('Priority-High', view.name) |
| 30 self.assertIsNone(view.is_restrict) |
| 31 self.assertEquals('Priority-High', view.tooltip) |
| 32 self.assertEquals('', view.docstring) |
| 33 self.assertEquals('Priority', view.prefix) |
| 34 self.assertEquals('High', view.value) |
| 35 |
| 36 view = framework_views.LabelView('%s-%s' % (LONG_STR, LONG_STR), None) |
| 37 self.assertEquals('%s-%s' % (LONG_STR, LONG_STR), view.name) |
| 38 self.assertEquals('%s-%s' % (LONG_STR, LONG_STR), view.tooltip) |
| 39 self.assertEquals('', view.docstring) |
| 40 self.assertEquals(LONG_STR, view.prefix) |
| 41 self.assertEquals(LONG_STR, view.value) |
| 42 |
| 43 view = framework_views.LabelView(LONG_PART_STR, None) |
| 44 self.assertEquals(LONG_PART_STR, view.name) |
| 45 self.assertEquals(LONG_PART_STR, view.tooltip) |
| 46 self.assertEquals('', view.docstring) |
| 47 self.assertEquals('OnePartThatWillNotFit', view.prefix) |
| 48 self.assertEquals('OneShort', view.value) |
| 49 |
| 50 config = tracker_pb2.ProjectIssueConfig() |
| 51 config.well_known_labels.append(tracker_pb2.LabelDef( |
| 52 label='Priority-High', label_docstring='Must ship in this milestone')) |
| 53 |
| 54 view = framework_views.LabelView('Priority-High', config) |
| 55 self.assertEquals('Must ship in this milestone', view.docstring) |
| 56 |
| 57 view = framework_views.LabelView('Priority-Foo', config) |
| 58 self.assertEquals('', view.docstring) |
| 59 |
| 60 view = framework_views.LabelView('Restrict-View-Commit', None) |
| 61 self.assertTrue(view.is_restrict) |
| 62 |
| 63 |
| 64 class StatusViewTest(unittest.TestCase): |
| 65 |
| 66 def testStatusView(self): |
| 67 view = framework_views.StatusView('', None) |
| 68 self.assertEquals('', view.name) |
| 69 |
| 70 view = framework_views.StatusView('Accepted', None) |
| 71 self.assertEquals('Accepted', view.name) |
| 72 self.assertEquals('Accepted', view.tooltip) |
| 73 self.assertEquals('', view.docstring) |
| 74 self.assertEquals('yes', view.means_open) |
| 75 |
| 76 view = framework_views.StatusView(LONG_STR, None) |
| 77 self.assertEquals(LONG_STR, view.name) |
| 78 self.assertEquals(LONG_STR, view.tooltip) |
| 79 self.assertEquals('', view.docstring) |
| 80 self.assertEquals('yes', view.means_open) |
| 81 |
| 82 config = tracker_pb2.ProjectIssueConfig() |
| 83 config.well_known_statuses.append(tracker_pb2.StatusDef( |
| 84 status='SlamDunk', status_docstring='Code fixed and taught a lesson', |
| 85 means_open=False)) |
| 86 |
| 87 view = framework_views.StatusView('SlamDunk', config) |
| 88 self.assertEquals('Code fixed and taught a lesson', view.docstring) |
| 89 self.assertFalse(view.means_open) |
| 90 |
| 91 view = framework_views.StatusView('SlammedBack', config) |
| 92 self.assertEquals('', view.docstring) |
| 93 |
| 94 |
| 95 class RevealEmailsToMembersTest(unittest.TestCase): |
| 96 |
| 97 def setUp(self): |
| 98 project = project_pb2.Project() |
| 99 project.owner_ids.append(111L) |
| 100 project.committer_ids.append(222L) |
| 101 project.contributor_ids.append(333L) |
| 102 project.contributor_ids.append(888L) |
| 103 user = user_pb2.User() |
| 104 user.is_site_admin = False |
| 105 self.mr = monorailrequest.MonorailRequest() |
| 106 self.mr.project = project |
| 107 self.mr.auth.user_pb = user |
| 108 |
| 109 def CheckRevealAllToMember( |
| 110 self, logged_in_user_id, expected, viewed_user_id=333L, group_id=None): |
| 111 user_view = framework_views.UserView( |
| 112 viewed_user_id, 'user@example.com', True) |
| 113 |
| 114 if group_id: |
| 115 pass # xxx re-implement groups |
| 116 |
| 117 users_by_id = {333L: user_view} |
| 118 self.mr.auth.user_id = logged_in_user_id |
| 119 self.mr.auth.effective_ids = {logged_in_user_id} |
| 120 # Assert display name is obscured before the reveal. |
| 121 self.assertEqual('u...@example.com', user_view.display_name) |
| 122 # Assert profile url contains user ID before the reveal. |
| 123 self.assertEqual('/u/%s/' % viewed_user_id, user_view.profile_url) |
| 124 framework_views.RevealAllEmailsToMembers(self.mr, users_by_id) |
| 125 self.assertEqual(expected, not user_view.obscure_email) |
| 126 if expected: |
| 127 # Assert display name is now revealed. |
| 128 self.assertEqual('user@example.com', user_view.display_name) |
| 129 # Assert profile url contains the email. |
| 130 self.assertEqual('/u/user@example.com/', user_view.profile_url) |
| 131 else: |
| 132 # Assert display name is still hidden. |
| 133 self.assertEqual('u...@example.com', user_view.display_name) |
| 134 # Assert profile url still contains user ID. |
| 135 self.assertEqual('/u/%s/' % viewed_user_id, user_view.profile_url) |
| 136 |
| 137 def testRevealEmailsToPriviledgedDomain(self): |
| 138 for priviledged_user_domain in settings.priviledged_user_domains: |
| 139 self.mr.auth.user_pb.email = 'test@' + priviledged_user_domain |
| 140 self.CheckRevealAllToMember(100001L, True) |
| 141 |
| 142 def testRevealEmailToSelf(self): |
| 143 self.mr.auth.user_pb.email = 'user@example.com' |
| 144 self.CheckRevealAllToMember(100001L, True) |
| 145 |
| 146 def testRevealAllEmailsToMembers_Collaborators(self): |
| 147 self.CheckRevealAllToMember(0L, False) |
| 148 self.CheckRevealAllToMember(111L, True) |
| 149 self.CheckRevealAllToMember(222L, True) |
| 150 self.CheckRevealAllToMember(333L, True) |
| 151 self.CheckRevealAllToMember(444L, False) |
| 152 |
| 153 # Viewed user has indirect role in the project via a group. |
| 154 self.CheckRevealAllToMember(0, False, group_id=888L) |
| 155 self.CheckRevealAllToMember(111L, True, group_id=888L) |
| 156 # xxx re-implement |
| 157 # self.CheckRevealAllToMember( |
| 158 # 111, True, viewed_user_id=444L, group_id=888L) |
| 159 |
| 160 # Logged in user has indirect role in the project via a group. |
| 161 self.CheckRevealAllToMember(888L, True) |
| 162 |
| 163 def testRevealAllEmailsToMembers_Admins(self): |
| 164 self.CheckRevealAllToMember(555L, False) |
| 165 self.mr.auth.user_pb.is_site_admin = True |
| 166 self.CheckRevealAllToMember(555L, True) |
| 167 |
| 168 |
| 169 class RevealAllEmailsTest(unittest.TestCase): |
| 170 |
| 171 def testRevealAllEmail(self): |
| 172 users_by_id = { |
| 173 111L: framework_views.UserView(111L, 'a@a.com', True), |
| 174 222L: framework_views.UserView(222L, 'b@b.com', True), |
| 175 333L: framework_views.UserView(333L, 'c@c.com', True), |
| 176 999L: framework_views.UserView(999L, 'z@z.com', True), |
| 177 } |
| 178 # Assert display names are obscured before the reveal. |
| 179 self.assertEqual('a...@a.com', users_by_id[111L].display_name) |
| 180 self.assertEqual('b...@b.com', users_by_id[222L].display_name) |
| 181 self.assertEqual('c...@c.com', users_by_id[333L].display_name) |
| 182 self.assertEqual('z...@z.com', users_by_id[999L].display_name) |
| 183 |
| 184 framework_views.RevealAllEmails(users_by_id) |
| 185 |
| 186 self.assertFalse(users_by_id[111L].obscure_email) |
| 187 self.assertFalse(users_by_id[222L].obscure_email) |
| 188 self.assertFalse(users_by_id[333L].obscure_email) |
| 189 self.assertFalse(users_by_id[999L].obscure_email) |
| 190 # Assert display names are now revealed. |
| 191 self.assertEqual('a@a.com', users_by_id[111L].display_name) |
| 192 self.assertEqual('b@b.com', users_by_id[222L].display_name) |
| 193 self.assertEqual('c@c.com', users_by_id[333L].display_name) |
| 194 self.assertEqual('z@z.com', users_by_id[999L].display_name) |
| 195 |
| 196 |
| 197 if __name__ == '__main__': |
| 198 unittest.main() |
OLD | NEW |