def test_search_multiple_queries(self): users = [] def user_handler(u): users.append(u) bugzilla.BugzillaUser(search_strings=[ '[email protected]', '[email protected]' ], user_handler=user_handler).wait() foundNobody1 = False foundNobody2 = False for user in users: if user['email'] == '*****@*****.**': self.assertFalse(foundNobody1) foundNobody1 = True self.assertEqual(user['name'], '*****@*****.**') self.assertEqual(user['real_name'], 'Nobody; OK to take it and work on it') elif user['email'] == '*****@*****.**': self.assertFalse(foundNobody2) foundNobody2 = True self.assertEqual(user['name'], '*****@*****.**') self.assertEqual(user['real_name'], 'Nobody; OK to take it and work on it') self.assertTrue(foundNobody1) self.assertTrue(foundNobody2)
def test_get_users_ids(self): user = { 'first': {}, 'second': {}, } def user_handler(u): if u['id'] == 1: user['first'].update(u) elif u['id'] == 208267: user['second'].update(u) else: raise Exception('Unexpected ID') bugzilla.BugzillaUser(user_names=['1', 208267], user_handler=user_handler).wait() self.assertEqual(user['first']['email'], '*****@*****.**') self.assertEqual(user['first']['name'], '*****@*****.**') self.assertEqual(user['first']['real_name'], 'Nobody; OK to take it and work on it') self.assertEqual(user['second']['email'], '*****@*****.**') self.assertEqual(user['second']['name'], '*****@*****.**') self.assertEqual(user['second']['real_name'], 'bugbot on irc.mozilla.org')
def test_get_user_id_string(self): user = {} def user_handler(u): user.update(u) bugzilla.BugzillaUser(user_names='1', user_handler=user_handler).wait() self.assertEqual(user['email'], '*****@*****.**') self.assertEqual(user['name'], '*****@*****.**') self.assertEqual(user['real_name'], 'Nobody; OK to take it and work on it')
def test_search_single_result(self): user = {} def user_handler(u): user.update(u) bugzilla.BugzillaUser(search_strings='[email protected]', user_handler=user_handler).wait() self.assertEqual(user['email'], '*****@*****.**') self.assertEqual(user['name'], '*****@*****.**') self.assertEqual(user['real_name'], 'Nobody; OK to take it and work on it')
def load_users(self): """ Load users linked through roles to an analysis """ assert self.analysis is not None, \ 'Missing bug analysis' roles = {} def _extract_user(user_data, role): # Support multiple input structures if user_data is None: return elif isinstance(user_data, dict): if 'id' in user_data: key = user_data['id'] elif 'email' in user_data: key = user_data['email'] else: raise Exception('Invalid user data : no id or email') elif isinstance(user_data, str): key = user_data else: raise Exception('Invalid user data : unsupported format') if key not in roles: roles[key] = [] roles[key].append(role) # Extract users keys & roles _extract_user(self.analysis['users'].get('creator'), 'creator') _extract_user(self.analysis['users'].get('assignee'), 'assignee') for r in self.analysis['users']['reviewers']: _extract_user(r, 'reviewer') _extract_user(self.analysis['uplift_author'], 'uplift_author') def _handler(user, data): # Store users with their roles user['roles'] = roles.get(user['id'], roles.get(user['email'], [])) data.append(user) # Finally fetch clean users data through Bugzilla out = [] bugzilla.BugzillaUser(user_names=roles.keys(), user_handler=_handler, user_data=out).wait() return out
def test_get_user_include_fields(self): user = {} user_data = {} def user_handler(u, data): user.update(u) data.update(u) bugzilla.BugzillaUser(user_names='*****@*****.**', include_fields=['email', 'real_name'], user_handler=user_handler, user_data=user_data).wait() self.assertEqual(user['email'], '*****@*****.**') self.assertEqual(user['real_name'], 'Nobody; OK to take it and work on it') self.assertNotIn('name', user) self.assertNotIn('id', user) self.assertEqual(user, user_data)