Home | History | Annotate | Download | only in net
      1 # Copyright 2014 The Chromium Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 # This is based on code from:
      6 # https://chromium.googlesource.com/chromium/tools/build/+/master/scripts/tools/blink_roller/auto_roll_test.py
      7 # Ideally we should share code between these.
      8 
      9 
     10 from webkitpy.common.system.outputcapture import OutputCaptureTestCaseBase
     11 import sheriff_calendar as calendar
     12 
     13 
     14 class SheriffCalendarTest(OutputCaptureTestCaseBase):
     15     def test_complete_email(self):
     16         expected_emails = ['foo (at] chromium.org', 'bar (at] google.com', 'baz (at] chromium.org']
     17         names = ['foo', 'bar (at] google.com', 'baz']
     18         self.assertEqual(map(calendar._complete_email, names), expected_emails)
     19 
     20     def test_emails(self):
     21         expected_emails = ['foo (at] bar.com', 'baz (at] baz.com']
     22         calendar._emails_from_url = lambda urls: expected_emails
     23         self.assertEqual(calendar.current_gardener_emails(), expected_emails)
     24 
     25     def _assert_parse(self, js_string, expected_emails):
     26         self.assertEqual(calendar._names_from_sheriff_js(js_string), expected_emails)
     27 
     28     def test_names_from_sheriff_js(self):
     29         self._assert_parse('document.write(\'none (channel is sheriff)\')', [])
     30         self._assert_parse('document.write(\'foo, bar\')', ['foo', 'bar'])
     31 
     32     def test_email_regexp(self):
     33         self.assertTrue(calendar._email_is_valid('somebody (at] example.com'))
     34         self.assertTrue(calendar._email_is_valid('somebody (at] example.domain.com'))
     35         self.assertTrue(calendar._email_is_valid('somebody (at] example-domain.com'))
     36         self.assertTrue(calendar._email_is_valid('some.body (at] example.com'))
     37         self.assertTrue(calendar._email_is_valid('some_body (at] example.com'))
     38         self.assertTrue(calendar._email_is_valid('some+body (at] example.com'))
     39         self.assertTrue(calendar._email_is_valid('some+body@com'))
     40         self.assertTrue(calendar._email_is_valid('some/body@example.com'))
     41         # These are valid according to the standard, but not supported here.
     42         self.assertFalse(calendar._email_is_valid('some~body (at] example.com'))
     43         self.assertFalse(calendar._email_is_valid('some!body (at] example.com'))
     44         self.assertFalse(calendar._email_is_valid('some?body (at] example.com'))
     45         self.assertFalse(calendar._email_is_valid('some" "body (at] example.com'))
     46         self.assertFalse(calendar._email_is_valid('"{somebody}"@example.com'))
     47         # Bogus.
     48         self.assertFalse(calendar._email_is_valid('rm -rf /#@example.com'))
     49         self.assertFalse(calendar._email_is_valid('some body (at] example.com'))
     50         self.assertFalse(calendar._email_is_valid('[some body]@example.com'))
     51 
     52     def test_filter_emails(self):
     53         input_emails = ['foo (at] bar.com', 'baz (at] baz.com', 'bogus email @ !!!']
     54         expected_emails = ['foo (at] bar.com', 'baz (at] baz.com']
     55         self.assertEquals(calendar._filter_emails(input_emails), expected_emails)
     56         self.assertStdout('WARNING: Not including bogus email @ !!! (invalid email address)\n')
     57