-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathvalidate-email.test.ts
More file actions
124 lines (96 loc) · 4.29 KB
/
Copy pathvalidate-email.test.ts
File metadata and controls
124 lines (96 loc) · 4.29 KB
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
import { validateEmail } from './validate-email';
describe('Validate Email', () => {
it('is a function', () => {
expect(typeof validateEmail).toBe('function');
});
describe('Positive', () => {
it('approves short adresses', () => {
expect(validateEmail('a@b.cd')).toEqual(true);
expect(validateEmail('email@example.com')).toEqual(true);
expect(validateEmail('awdopawkdop@duiwahdui.com')).toEqual(true);
});
it('approves long adresses', () => {
expect(validateEmail('dahdbwhjabhdjbajhwdbjhawdjdwadawdawdaw@b.cd')).toEqual(true);
});
it('approves subdomain adresses', () => {
expect(validateEmail('a@b.b.cd')).toEqual(true);
expect(validateEmail('email@subdomain.example.com')).toEqual(true);
});
it('approves plused adresses', () => {
expect(validateEmail('a+1@b.cd')).toEqual(true);
expect(validateEmail('firstname+lastname@example.com')).toEqual(true);
});
it('approves dashed adresses', () => {
expect(validateEmail('a-a@b.cd')).toEqual(true);
expect(validateEmail('firstname-lastname@example.com')).toEqual(true);
});
it('approves doted adresses', () => {
expect(validateEmail('a.a@b.cd')).toEqual(true);
expect(validateEmail('firstname.lastname@example.com')).toEqual(true);
});
it('approves digit domains', () => {
expect(validateEmail('email@123.123.123.123')).toEqual(true);
});
it('approves IP domains', () => {
expect(validateEmail('email@[123.123.123.123]')).toEqual(true);
});
it('approves quoted adresses', () => {
expect(validateEmail('"email"@example.com')).toEqual(true);
});
it('approves digit adresses', () => {
expect(validateEmail('1234567890@example.com')).toEqual(true);
});
it('approves underscore adresses', () => {
expect(validateEmail('a_a@b.cd')).toEqual(true);
expect(validateEmail('_______@example.com')).toEqual(true);
});
});
describe('Negative', () => {
it('denies empty strings', () => {
expect(validateEmail('')).toEqual(false);
});
it('denies whitespace strings', () => {
expect(validateEmail(' ')).toEqual(false);
});
it('denies numeric strings', () => {
expect(validateEmail('1243544')).toEqual(false);
});
it('denies a random @ symbol', () => {
expect(validateEmail('@')).toEqual(false);
});
it('denies emails with no @ symbol', () => {
expect(validateEmail('email.example.com')).toEqual(false);
});
it('denies on a plain adress', () => {
expect(validateEmail('asdasdas')).toEqual(false);
});
it('denies on a missing adress', () => {
expect(validateEmail('@example.com')).toEqual(false);
});
it('denies unfinished domains', () => {
expect(validateEmail('a@b')).toEqual(false);
});
it('denies adresses with whitespace', () => {
expect(validateEmail('a a@b.cd')).toEqual(false);
});
it('denies adresses with trailing whitespace', () => {
expect(validateEmail('a @b.cd')).toEqual(false);
});
it('denies adresses with leading dots', () => {
expect(validateEmail('.a@b.cd')).toEqual(false);
});
it('denies adresses with trailing dots', () => {
expect(validateEmail('a.@b.cd')).toEqual(false);
});
it('denies domains with leading whitespace', () => {
expect(validateEmail('a@ b.cd')).toEqual(false);
});
it('denies domain with enclosed whitespace', () => {
expect(validateEmail('a@b b.cd')).toEqual(false);
});
it('denies adresses with multiple domain dots', () => {
expect(validateEmail('a@b..cd')).toEqual(false);
expect(validateEmail('a@b..b.cd')).toEqual(false);
});
});
});