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 """This file provides unit tests for Validate functions.""" |
| 7 |
| 8 import unittest |
| 9 |
| 10 from framework import validate |
| 11 |
| 12 |
| 13 class ValidateUnitTest(unittest.TestCase): |
| 14 """Set of unit tests for validation functions.""" |
| 15 |
| 16 GOOD_EMAIL_ADDRESSES = [ |
| 17 'user@example.com', |
| 18 'user@e.com', |
| 19 'user+tag@example.com', |
| 20 'u.ser@example.com', |
| 21 'us.er@example.com', |
| 22 'u.s.e.r@example.com', |
| 23 'user@ex-ample.com', |
| 24 'user@ex.ample.com', |
| 25 'user@e.x.ample.com', |
| 26 'user@exampl.e.com', |
| 27 'user@e-x-ample.com', |
| 28 'user@e-x-a-m-p-l-e.com', |
| 29 'user@e-x.am-ple.com', |
| 30 'user@e--xample.com', |
| 31 ] |
| 32 |
| 33 BAD_EMAIL_ADDRESSES = [ |
| 34 ' leading.whitespace@example.com', |
| 35 'trailing.whitespace@example.com ', |
| 36 '(paren.quoted@example.com)', |
| 37 '<angle.quoted@example.com>', |
| 38 'trailing.@example.com', |
| 39 'trailing.dot.@example.com', |
| 40 '.leading@example.com', |
| 41 '.leading.dot@example.com', |
| 42 'user@example.com.', |
| 43 'us..er@example.com', |
| 44 'user@ex..ample.com', |
| 45 'user@example..com', |
| 46 'user@ex-.ample.com', |
| 47 'user@-example.com', |
| 48 'user@.example.com', |
| 49 'user@example-.com', |
| 50 'user@example', |
| 51 'user@example.', |
| 52 'user@example.c', |
| 53 'user@example.comcomcomc', |
| 54 'user@example.co-m', |
| 55 'user@exa_mple.com', |
| 56 'user@exa-_mple.com', |
| 57 'user@example.c0m', |
| 58 ] |
| 59 |
| 60 def testIsValidEmail(self): |
| 61 """Tests the Email validator class.""" |
| 62 for email in self.GOOD_EMAIL_ADDRESSES: |
| 63 self.assertTrue(validate.IsValidEmail(email), msg='Rejected:%r' % email) |
| 64 |
| 65 for email in self.BAD_EMAIL_ADDRESSES: |
| 66 self.assertFalse(validate.IsValidEmail(email), msg='Accepted:%r' % email) |
| 67 |
| 68 def testIsValidMailTo(self): |
| 69 for email in self.GOOD_EMAIL_ADDRESSES: |
| 70 self.assertTrue( |
| 71 validate.IsValidMailTo('mailto:' + email), |
| 72 msg='Rejected:%r' % ('mailto:' + email)) |
| 73 |
| 74 for email in self.BAD_EMAIL_ADDRESSES: |
| 75 self.assertFalse( |
| 76 validate.IsValidMailTo('mailto:' + email), |
| 77 msg='Accepted:%r' % ('mailto:' + email)) |
| 78 |
| 79 GOOD_URLS = [ |
| 80 'http://google.com', |
| 81 'http://maps.google.com/', |
| 82 'https://secure.protocol.com', |
| 83 'https://dash-domain.com', |
| 84 'http://www.google.com/search?q=foo&hl=en', |
| 85 'https://a.very.long.domain.name.net/with/a/long/path/inf0/too', |
| 86 'http://funny.ws/', |
| 87 'http://we.love.anchors.info/page.html#anchor', |
| 88 'http://redundant-slashes.com//in/path//info', |
| 89 'http://trailingslashe.com/in/path/info/', |
| 90 'http://domain.with.port.com:8080', |
| 91 'http://domain.with.port.com:8080/path/info', |
| 92 'ftp://ftp.gnu.org', |
| 93 'ftp://some.server.some.place.com' |
| 94 ] |
| 95 |
| 96 BAD_URLS = [ |
| 97 ' http://leading.whitespace.com', |
| 98 'http://trailing.domain.whitespace.com ', |
| 99 'http://trailing.whitespace.com/after/path/info ', |
| 100 'http://no-tld/', |
| 101 'http://underscore_domain.com/', |
| 102 'http://space in domain.com', |
| 103 'http://user@example.com', # standard, but we purposely don't accept it. |
| 104 'http://user:pass@ex.com', # standard, but we purposely don't accept it. |
| 105 'http://:password@ex.com', # standard, but we purposely don't accept it. |
| 106 'missing-http.com', |
| 107 'http:missing-slashes.com', |
| 108 'http:/only-one-slash.com', |
| 109 'http://bad-tld.c0m', |
| 110 'http://bad-tld.c', |
| 111 'http://trailing.dot.', |
| 112 'mailto:bad.scheme', |
| 113 'javascript:attempt-to-inject', |
| 114 'http://:8080/', |
| 115 'http://badport.com:808a0/ ', |
| 116 ] |
| 117 |
| 118 def testURL(self): |
| 119 for url in self.GOOD_URLS: |
| 120 self.assertTrue(validate.IsValidURL(url), msg='Rejected:%r' % url) |
| 121 |
| 122 for url in self.BAD_URLS: |
| 123 self.assertFalse(validate.IsValidURL(url), msg='Accepted:%r' % url) |
| 124 |
| 125 |
| 126 if __name__ == '__main__': |
| 127 unittest.main() |
OLD | NEW |