/
test_email_checker.py
83 lines (59 loc) · 3.55 KB
/
test_email_checker.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import unittest
from email_checker import EmailChecker, MIN_NAME, MIN_DOMAIN,\
MAX_NAME, MAX_DOMAIN
class TestEmailChecker(unittest.TestCase):
def setUp(self):
self.checker = EmailChecker()
def test_one_at_returns_true(self):
self.assertTrue(self.checker.check_email('example@yandex.ru'))
def test_several_ats_returns_false(self):
self.assertFalse(self.checker.check_email('ex@ample@yand@ex.ru'))
def test_no_ats_returns_false(self):
self.assertFalse(self.checker.check_email('exampleyandex.ru'))
def test_domain_length_less_min_returns_false(self):
self.assertFalse(self.checker.check_email('example@y.'))
def test_domain_length_in_range_returns_true(self):
self.assertTrue(self.checker.check_email('example@google.ru'))
def test_domain_length_more_max_returns_false(self):
domain = [str(x) for x in range(MAX_DOMAIN + 1)]
self.assertFalse(self.checker.check_email('example@' + ''.join(domain)))
def test_name_length_less_min_returns_false(self):
self.assertFalse(self.checker.check_email('@yandex.ru'))
def test_name_length_more_max_returns_false(self):
name = [str(x) for x in range(MAX_NAME + 1)]
self.assertFalse(self.checker.check_email(''.join(name) + '@yandex.ru'))
def test_name_length_in_range_returns_true(self):
name = [str(x) for x in range(MAX_NAME // 2)]
self.assertTrue(self.checker.check_email(''.join(name) + '@yandex.ru'))
def test_simple_domain_numbers_letters_returns_true(self):
self.assertTrue(self.checker.check_email('example@ya2nde_x1.r1u'))
def test_name_numbers_letters_returns_true(self):
self.assertTrue(self.checker.check_email('ex.am21_ple@yandex.ru'))
def test_simple_domain_bad_sybmols_returns_false(self):
self.assertFalse(self.checker.check_email('example@ya!n:dex1.r1u'))
def test_simple_domain_with_dashes_returns_false(self):
self.assertFalse(self.checker.check_email('example@-yandex.ru'))
self.assertFalse(self.checker.check_email('example@yandex-.ru'))
self.assertFalse(self.checker.check_email('example@yandex.ru-'))
def test_composite_domain_without_dashes_returns_true(self):
self.assertTrue(self.checker.check_email('example@mail.yandex.ru'))
def test_composite_domain_with_dashes_returns_false(self):
self.assertFalse(self.checker.check_email('example@mail.-yandex.ru'))
self.assertFalse(self.checker.check_email('example@mail.-yandex-.ru'))
self.assertFalse(self.checker.check_email('example@-mail.-yandex.ru-'))
def test_name_two_dots_returns_false(self):
self.assertFalse(self.checker.check_email('exa..mple@mail.yandex.ru'))
def test_name_two_separated_dots_returns_true(self):
self.assertTrue(self.checker.check_email('exa.mp.le@mail.yandex.ru'))
def test_name_one_quote_returns_false(self):
self.assertFalse(self.checker.check_email('exa\"mple@mail.yandex.ru'))
def test_name_pairs_of_quotes_returns_true(self):
self.assertTrue(self.checker.check_email('exa"m"ple@mail.yandex.ru'))
def test_name_symbols_inside_quotes_returns_true(self):
self.assertTrue(self.checker.check_email('exa\"!m,m:!\"ple@mail.yandex.ru'))
def test_name_symbols_outside_quotes_returns_false(self):
self.assertFalse(self.checker.check_email('!e!x!a\"m\"pl,e;@mail.yandex.ru'))
def test_empty_email_returns_false(self):
self.assertFalse(self.checker.check_email(''))
if __name__ == '__main__':
unittest.main()