Implement AUTH PLAIN authentication extensions in SMTP.
[mailpopbox.git] / smtp_test.go
1 package main
2
3 import (
4 "testing"
5 )
6
7 var testConfig = Config{
8 Servers: []Server{
9 Server{
10 Domain: "domain1.net",
11 MailboxPassword: "d1",
12 },
13 Server{
14 Domain: "domain2.xyz",
15 MailboxPassword: "d2",
16 },
17 },
18 }
19
20 func TestAuthenticate(t *testing.T) {
21 server := smtpServer{config: testConfig}
22
23 authTests := []struct {
24 authz, authc, passwd string
25 ok bool
26 }{
27 {"foo@domain1.net", "mailbox@domain1.net", "d1", true},
28 {"", "mailbox@domain1.net", "d1", true},
29 {"foo@domain2.xyz", "mailbox@domain1.xyz", "d1", false},
30 {"foo@domain2.xyz", "mailbox@domain1.xyz", "d2", false},
31 {"foo@domain2.xyz", "mailbox@domain2.xyz", "d2", true},
32 {"invalid", "mailbox@domain2.xyz", "d2", false},
33 {"", "mailbox@domain2.xyz", "d2", true},
34 {"", "", "", false},
35 }
36
37 for i, test := range authTests {
38 actual := server.Authenticate(test.authz, test.authc, test.passwd)
39 if actual != test.ok {
40 t.Errorf("Test %d, got %v, expected %v", i, actual, test.ok)
41 }
42 }
43 }