* commit 'd5ff09c23a954d20b0dc21750dc5c0a666c0ce56': Guard against @google.com.example.com.
This commit is contained in:
		@@ -51,6 +51,13 @@ def get_headers(msg):
 | 
				
			|||||||
    return headers
 | 
					    return headers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def should_skip_message(gerrit_info):
 | 
				
			||||||
 | 
					    match = re.search(r'<(\S+)>$', gerrit_info['Owner'])
 | 
				
			||||||
 | 
					    if match:
 | 
				
			||||||
 | 
					        return not match.group(1).endswith('@google.com')
 | 
				
			||||||
 | 
					    raise RuntimeError('Gerrit info missing Gerrit-Owner info.')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def build_service():
 | 
					def build_service():
 | 
				
			||||||
    from apiclient.discovery import build
 | 
					    from apiclient.discovery import build
 | 
				
			||||||
    from oauth2client.client import flow_from_clientsecrets
 | 
					    from oauth2client.client import flow_from_clientsecrets
 | 
				
			||||||
@@ -200,7 +207,7 @@ def build_project(gerrit_info, dry_run):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def handle_change(gerrit_info, _, dry_run):
 | 
					def handle_change(gerrit_info, _, dry_run):
 | 
				
			||||||
    if '@google.com' not in gerrit_info['Owner']:
 | 
					    if should_skip_message(gerrit_info):
 | 
				
			||||||
        return True
 | 
					        return True
 | 
				
			||||||
    return build_project(gerrit_info, dry_run)
 | 
					    return build_project(gerrit_info, dry_run)
 | 
				
			||||||
handle_newchange = handle_change
 | 
					handle_newchange = handle_change
 | 
				
			||||||
@@ -233,7 +240,7 @@ def handle_comment(gerrit_info, body, dry_run):
 | 
				
			|||||||
        drop_rejection(gerrit_info, dry_run)
 | 
					        drop_rejection(gerrit_info, dry_run)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # TODO(danalbert): Needs to be based on the account that made the comment.
 | 
					    # TODO(danalbert): Needs to be based on the account that made the comment.
 | 
				
			||||||
    if '@google.com' not in gerrit_info['Owner']:
 | 
					    if should_skip_message(gerrit_info):
 | 
				
			||||||
        return True
 | 
					        return True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    command_map = {
 | 
					    command_map = {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										21
									
								
								tools/bionicbb/test_gmail_listener.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								tools/bionicbb/test_gmail_listener.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					import gmail_listener
 | 
				
			||||||
 | 
					import unittest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class TestGerritParsers(unittest.TestCase):
 | 
				
			||||||
 | 
					    def test_should_skip_message(self):
 | 
				
			||||||
 | 
					        info = gmail_listener.get_gerrit_info(
 | 
				
			||||||
 | 
					            'Gerrit-Owner: Some Googler <somegoogler@google.com>\n')
 | 
				
			||||||
 | 
					        self.assertFalse(gmail_listener.should_skip_message(info))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        info = gmail_listener.get_gerrit_info(
 | 
				
			||||||
 | 
					            'Gerrit-Owner: Fake Googler <fakegoogler@google.com.foo.com>\n')
 | 
				
			||||||
 | 
					        self.assertTrue(gmail_listener.should_skip_message(info))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        info = gmail_listener.get_gerrit_info(
 | 
				
			||||||
 | 
					            'Gerrit-Owner: John Doe <johndoe@example.com>\n')
 | 
				
			||||||
 | 
					        self.assertTrue(gmail_listener.should_skip_message(info))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if __name__ == '__main__':
 | 
				
			||||||
 | 
					    unittest.main()
 | 
				
			||||||
		Reference in New Issue
	
	Block a user