Fixing to have the proper version of go-imap from foxcpp.

This commit is contained in:
2025-12-08 22:52:36 +02:00
parent d8ddb6be71
commit 226c7e6cf0
207 changed files with 15166 additions and 15437 deletions

137
server/cmd_noauth_test.go Normal file
View File

@@ -0,0 +1,137 @@
package server_test
import (
"bufio"
"crypto/tls"
"io"
"strings"
"testing"
"github.com/emersion/go-imap/internal"
)
func TestStartTLS(t *testing.T) {
s, c, scanner := testServerGreeted(t)
defer c.Close()
defer s.Close()
cert, err := tls.X509KeyPair(internal.LocalhostCert, internal.LocalhostKey)
if err != nil {
t.Fatal(err)
}
tlsConfig := &tls.Config{
InsecureSkipVerify: true,
Certificates: []tls.Certificate{cert},
}
s.AllowInsecureAuth = false
s.TLSConfig = tlsConfig
io.WriteString(c, "a001 CAPABILITY\r\n")
scanner.Scan()
if scanner.Text() != "* CAPABILITY IMAP4rev1 STARTTLS LOGINDISABLED" {
t.Fatal("Bad CAPABILITY response:", scanner.Text())
}
scanner.Scan()
if !strings.HasPrefix(scanner.Text(), "a001 OK ") {
t.Fatal("Bad status response:", scanner.Text())
}
io.WriteString(c, "a001 STARTTLS\r\n")
scanner.Scan()
if !strings.HasPrefix(scanner.Text(), "a001 OK ") {
t.Fatal("Bad status response:", scanner.Text())
}
sc := tls.Client(c, tlsConfig)
if err = sc.Handshake(); err != nil {
t.Fatal(err)
}
scanner = bufio.NewScanner(sc)
scanner.Scan()
if scanner.Text() != "* CAPABILITY IMAP4rev1 AUTH=PLAIN" {
t.Fatal("Bad CAPABILITY response:", scanner.Text())
}
}
func TestLogin_Ok(t *testing.T) {
s, c, scanner := testServerGreeted(t)
defer c.Close()
defer s.Close()
io.WriteString(c, "a001 LOGIN username password\r\n")
scanner.Scan()
if !strings.HasPrefix(scanner.Text(), "a001 OK ") {
t.Fatal("Bad status response:", scanner.Text())
}
}
func TestLogin_No(t *testing.T) {
s, c, scanner := testServerGreeted(t)
defer c.Close()
defer s.Close()
io.WriteString(c, "a001 LOGIN username wrongpassword\r\n")
scanner.Scan()
if !strings.HasPrefix(scanner.Text(), "a001 NO ") {
t.Fatal("Bad status response:", scanner.Text())
}
}
func TestAuthenticate_Plain_Ok(t *testing.T) {
s, c, scanner := testServerGreeted(t)
defer c.Close()
defer s.Close()
io.WriteString(c, "a001 AUTHENTICATE PLAIN\r\n")
scanner.Scan()
if scanner.Text() != "+" {
t.Fatal("Bad continuation request:", scanner.Text())
}
// :usename:password
io.WriteString(c, "AHVzZXJuYW1lAHBhc3N3b3Jk\r\n")
scanner.Scan()
if !strings.HasPrefix(scanner.Text(), "a001 OK ") {
t.Fatal("Bad status response:", scanner.Text())
}
}
func TestAuthenticate_Plain_No(t *testing.T) {
s, c, scanner := testServerGreeted(t)
defer c.Close()
defer s.Close()
io.WriteString(c, "a001 AUTHENTICATE PLAIN\r\n")
scanner.Scan()
if scanner.Text() != "+" {
t.Fatal("Bad continuation request:", scanner.Text())
}
// Invalid challenge
io.WriteString(c, "BHVzZXJuYW1lAHBhc3N3b6Jk\r\n")
scanner.Scan()
if !strings.HasPrefix(scanner.Text(), "a001 NO ") {
t.Fatal("Bad status response:", scanner.Text())
}
}
func TestAuthenticate_No(t *testing.T) {
s, c, scanner := testServerGreeted(t)
defer c.Close()
defer s.Close()
io.WriteString(c, "a001 AUTHENTICATE XIDONTEXIST\r\n")
scanner.Scan()
if !strings.HasPrefix(scanner.Text(), "a001 NO ") {
t.Fatal("Bad status response:", scanner.Text())
}
}