blob: 64e17626b8afd5fa4e5e6d96ae398355831d4fd7 [file] [log] [blame]
package gomail
import (
"net/smtp"
"testing"
)
type output struct {
proto string
data []string
err error
}
const (
testUser = "user"
testPwd = "pwd"
)
func TestPlainAuth(t *testing.T) {
tests := []struct {
serverProtos []string
serverChallenges []string
proto string
data []string
}{
{
serverProtos: []string{"LOGIN"},
serverChallenges: []string{"Username:", "Password:"},
proto: "LOGIN",
data: []string{"", testUser, testPwd},
},
}
for _, test := range tests {
auth := LoginAuth(testUser, testPwd, testHost)
server := &smtp.ServerInfo{
Name: testHost,
TLS: true,
Auth: test.serverProtos,
}
proto, toServer, err := auth.Start(server)
if err != nil {
t.Fatalf("Start error: %v", err)
}
if proto != test.proto {
t.Errorf("Invalid protocol, got %q, want %q", proto, test.proto)
}
i := 0
got := string(toServer)
if got != test.data[i] {
t.Errorf("Invalid response, got %q, want %q", got, test.data[i])
}
for _, challenge := range test.serverChallenges {
toServer, err = auth.Next([]byte(challenge), true)
if err != nil {
t.Fatalf("Auth error: %v", err)
}
i++
got = string(toServer)
if got != test.data[i] {
t.Errorf("Invalid response, got %q, want %q", got, test.data[i])
}
}
}
}