Merge branch 'outbound'
[mailpopbox.git] / smtp_test.go
index 89eeb3f125ee285ec187d6861d6de8adda449162..d1239ea99a3bce649d6f04abdfef2f98ed7939c0 100644 (file)
@@ -104,3 +104,41 @@ func TestMessageDelivery(t *testing.T) {
                t.Errorf("Could not find expected data in message")
        }
 }
+
+func TestAuthenticate(t *testing.T) {
+       server := smtpServer{
+               config: Config{
+                       Servers: []Server{
+                               Server{
+                                       Domain:          "domain1.net",
+                                       MailboxPassword: "d1",
+                               },
+                               Server{
+                                       Domain:          "domain2.xyz",
+                                       MailboxPassword: "d2",
+                               },
+                       },
+               },
+       }
+
+       authTests := []struct {
+               authz, authc, passwd string
+               ok                   bool
+       }{
+               {"foo@domain1.net", "mailbox@domain1.net", "d1", true},
+               {"", "mailbox@domain1.net", "d1", true},
+               {"foo@domain2.xyz", "mailbox@domain1.xyz", "d1", false},
+               {"foo@domain2.xyz", "mailbox@domain1.xyz", "d2", false},
+               {"foo@domain2.xyz", "mailbox@domain2.xyz", "d2", true},
+               {"invalid", "mailbox@domain2.xyz", "d2", false},
+               {"", "mailbox@domain2.xyz", "d2", true},
+               {"", "", "", false},
+       }
+
+       for i, test := range authTests {
+               actual := server.Authenticate(test.authz, test.authc, test.passwd)
+               if actual != test.ok {
+                       t.Errorf("Test %d, got %v, expected %v", i, actual, test.ok)
+               }
+       }
+}