mirror of
https://github.com/wiggin77/mailrelay.git
synced 2025-07-12 12:15:04 +02:00
105 lines
2.0 KiB
Go
105 lines
2.0 KiB
Go
package main
|
|
|
|
import (
|
|
"net/smtp"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestLoginAuth(t *testing.T) {
|
|
auth := LoginAuth("testuser", "testpass")
|
|
assert.NotNil(t, auth)
|
|
|
|
// Type assertion to ensure we get the right type
|
|
loginAuth, ok := auth.(*loginAuth)
|
|
assert.True(t, ok)
|
|
assert.Equal(t, "testuser", loginAuth.username)
|
|
assert.Equal(t, "testpass", loginAuth.password)
|
|
}
|
|
|
|
func TestLoginAuthStart(t *testing.T) {
|
|
auth := &loginAuth{
|
|
username: "testuser",
|
|
password: "testpass",
|
|
}
|
|
|
|
method, resp, err := auth.Start(&smtp.ServerInfo{})
|
|
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, "LOGIN", method)
|
|
assert.Empty(t, resp)
|
|
}
|
|
|
|
func TestLoginAuthNext(t *testing.T) {
|
|
auth := &loginAuth{
|
|
username: "testuser",
|
|
password: "testpass",
|
|
}
|
|
|
|
tests := []struct {
|
|
name string
|
|
serverMsg string
|
|
more bool
|
|
expected string
|
|
expectErr bool
|
|
}{
|
|
{
|
|
name: "username prompt - User Name",
|
|
serverMsg: "User Name",
|
|
more: true,
|
|
expected: "testuser",
|
|
expectErr: false,
|
|
},
|
|
{
|
|
name: "username prompt - Username:",
|
|
serverMsg: "Username:",
|
|
more: true,
|
|
expected: "testuser",
|
|
expectErr: false,
|
|
},
|
|
{
|
|
name: "password prompt - Password",
|
|
serverMsg: "Password",
|
|
more: true,
|
|
expected: "testpass",
|
|
expectErr: false,
|
|
},
|
|
{
|
|
name: "password prompt - Password:",
|
|
serverMsg: "Password:",
|
|
more: true,
|
|
expected: "testpass",
|
|
expectErr: false,
|
|
},
|
|
{
|
|
name: "unknown server response",
|
|
serverMsg: "Unknown Prompt",
|
|
more: true,
|
|
expected: "",
|
|
expectErr: true,
|
|
},
|
|
{
|
|
name: "more is false",
|
|
serverMsg: "anything",
|
|
more: false,
|
|
expected: "",
|
|
expectErr: false,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
resp, err := auth.Next([]byte(tt.serverMsg), tt.more)
|
|
|
|
if tt.expectErr {
|
|
assert.Error(t, err)
|
|
assert.Contains(t, err.Error(), "unknown server response")
|
|
} else {
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, tt.expected, string(resp))
|
|
}
|
|
})
|
|
}
|
|
}
|