-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathrequest_test.go
More file actions
106 lines (81 loc) · 2.42 KB
/
request_test.go
File metadata and controls
106 lines (81 loc) · 2.42 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
package main
import "testing"
func TestEmailParsing(t *testing.T) {
r := request{}
r.buildFromEmail("testing@email.com")
if r.inputEmail != "testing@email.com" {
t.Fatal("Invalid input email found.")
}
if r.inputHost != "email.com" {
t.Fatal("Invalid host found")
}
if r.inputUser != "testing" {
t.Fatal("Invalid user found.")
}
}
func TestValidEmailUserValidation(t *testing.T) {
individualValidEmailTest(t, "testing@email.com")
individualValidEmailTest(t, "somet!$%*hing@localhost")
individualValidEmailTest(t, "a@a")
individualValidEmailTest(t, "helmet@123.224.123.255")
individualValidEmailTest(t, "blargh@frufru.net.liver-disaster.com")
}
func individualValidEmailTest(t *testing.T, email string) {
s := Service{}
s.buildRegularExpressions()
r := request{}
r.buildFromEmail(email)
complete := make(chan bool, 2)
go r.validateUser(complete, s.validEmailUser)
go r.validateHost(complete, s.validEmailHost, s.validEmailHostIP)
<-complete
<-complete
if r.validUser == false {
t.Fatal("Invalid user validation: " + email)
}
if r.validHost == false {
t.Fatal("Invalid host validation: " + email)
}
}
func TestValidateBlacklist(t *testing.T) {
c := Configuration{}
c.LoadBlacklist("./test_data/test_blacklist.txt")
r := request{}
r.buildFromEmail("test@item1")
complete := make(chan bool, 1)
go r.validateBlackList(complete, &c)
<-complete
if r.validBlacklist == true {
t.Fatal("item1 bypassed blacklist!")
}
rf := request{}
rf.buildFromEmail("test@item44")
complete = make(chan bool, 1)
go rf.validateBlackList(complete, &c)
<-complete
if rf.validBlacklist == false {
t.Fatal("item44 failed blacklist!")
}
}
func TestInvalidEmailUserValidation(t *testing.T) {
individualInvalidEmailTest(t, "test ing@email.com")
individualInvalidEmailTest(t, "somet!$%*hing@123.1&556.734")
individualInvalidEmailTest(t, "a@")
individualInvalidEmailTest(t, "")
individualInvalidEmailTest(t, "@123.224.123.255")
individualInvalidEmailTest(t, "blargh@frufru.n et.liver-disaster.com")
}
func individualInvalidEmailTest(t *testing.T, email string) {
s := Service{}
s.buildRegularExpressions()
r := request{}
r.buildFromEmail(email)
complete := make(chan bool, 2)
go r.validateUser(complete, s.validEmailUser)
go r.validateHost(complete, s.validEmailHost, s.validEmailHostIP)
<-complete
<-complete
if r.validUser == true && r.validHost == true {
t.Fatal("False positive validation: " + email)
}
}