Use separate package for tests and example.

This commit is contained in:
Christian Joergensen 2014-07-15 13:38:50 +02:00
parent 51430d7777
commit 7b9d6461a0
2 changed files with 47 additions and 47 deletions

View file

@ -1,32 +1,32 @@
package smtpd package smtpd_test
import ( import (
"bitbucket.org/chrj/smtpd"
"errors" "errors"
"net/smtp" "net/smtp"
"strings" "strings"
) )
func ExampleServer() { func ExampleServer() {
var server *smtpd.Server
var server *Server
// No-op server. Accepts and discards // No-op server. Accepts and discards
server = &Server{} server = &smtpd.Server{}
server.ListenAndServe() server.ListenAndServe()
// Relay server. Accepts only from single IP address and forwards using the Gmail smtp // Relay server. Accepts only from single IP address and forwards using the Gmail smtp
server = &Server{ server = &smtpd.Server{
Addr: "0.0.0.0:10025", Addr: "0.0.0.0:10025",
HeloChecker: func(peer Peer) error { HeloChecker: func(peer smtpd.Peer) error {
if !strings.HasPrefix(peer.Addr.String(), "42.42.42.42:") { if !strings.HasPrefix(peer.Addr.String(), "42.42.42.42:") {
return errors.New("Denied") return errors.New("Denied")
} }
return nil return nil
}, },
Handler: func(peer Peer, env Envelope) error { Handler: func(peer smtpd.Peer, env smtpd.Envelope) error {
return smtp.SendMail( return smtp.SendMail(
"smtp.gmail.com:587", "smtp.gmail.com:587",
smtp.PlainAuth( smtp.PlainAuth(
@ -43,5 +43,4 @@ func ExampleServer() {
} }
server.ListenAndServe() server.ListenAndServe()
} }

View file

@ -1,6 +1,7 @@
package smtpd package smtpd_test
import ( import (
"bitbucket.org/chrj/smtpd"
"crypto/tls" "crypto/tls"
"errors" "errors"
"fmt" "fmt"
@ -42,7 +43,7 @@ func TestSMTP(t *testing.T) {
defer ln.Close() defer ln.Close()
server := &Server{} server := &smtpd.Server{}
go func() { go func() {
server.Serve(ln) server.Serve(ln)
@ -120,7 +121,7 @@ func TestListenAndServe(t *testing.T) {
ln.Close() ln.Close()
server := &Server{Addr: addr} server := &smtpd.Server{Addr: addr}
go func() { go func() {
server.ListenAndServe() server.ListenAndServe()
@ -153,8 +154,8 @@ func TestSTARTTLS(t *testing.T) {
t.Fatalf("Cert load failed: %v", err) t.Fatalf("Cert load failed: %v", err)
} }
server := &Server{ server := &smtpd.Server{
Authenticator: func(peer Peer, username, password string) error { return nil }, Authenticator: func(peer smtpd.Peer, username, password string) error { return nil },
TLSConfig: &tls.Config{ TLSConfig: &tls.Config{
Certificates: []tls.Certificate{cert}, Certificates: []tls.Certificate{cert},
}, },
@ -248,9 +249,9 @@ func TestAuthRejection(t *testing.T) {
t.Fatalf("Cert load failed: %v", err) t.Fatalf("Cert load failed: %v", err)
} }
server := &Server{ server := &smtpd.Server{
Authenticator: func(peer Peer, username, password string) error { Authenticator: func(peer smtpd.Peer, username, password string) error {
return Error{Code: 550, Message: "Denied"} return smtpd.Error{Code: 550, Message: "Denied"}
}, },
TLSConfig: &tls.Config{ TLSConfig: &tls.Config{
Certificates: []tls.Certificate{cert}, Certificates: []tls.Certificate{cert},
@ -286,9 +287,9 @@ func TestConnectionCheck(t *testing.T) {
defer ln.Close() defer ln.Close()
server := &Server{ server := &smtpd.Server{
ConnectionChecker: func(peer Peer) error { ConnectionChecker: func(peer smtpd.Peer) error {
return Error{Code: 552, Message: "Denied"} return smtpd.Error{Code: 552, Message: "Denied"}
}, },
} }
@ -311,8 +312,8 @@ func TestConnectionCheckSimpleError(t *testing.T) {
defer ln.Close() defer ln.Close()
server := &Server{ server := &smtpd.Server{
ConnectionChecker: func(peer Peer) error { ConnectionChecker: func(peer smtpd.Peer) error {
return errors.New("Denied") return errors.New("Denied")
}, },
} }
@ -336,9 +337,9 @@ func TestHELOCheck(t *testing.T) {
defer ln.Close() defer ln.Close()
server := &Server{ server := &smtpd.Server{
HeloChecker: func(peer Peer) error { HeloChecker: func(peer smtpd.Peer) error {
return Error{Code: 552, Message: "Denied"} return smtpd.Error{Code: 552, Message: "Denied"}
}, },
} }
@ -366,9 +367,9 @@ func TestSenderCheck(t *testing.T) {
defer ln.Close() defer ln.Close()
server := &Server{ server := &smtpd.Server{
SenderChecker: func(peer Peer, addr string) error { SenderChecker: func(peer smtpd.Peer, addr string) error {
return Error{Code: 552, Message: "Denied"} return smtpd.Error{Code: 552, Message: "Denied"}
}, },
} }
@ -396,9 +397,9 @@ func TestRecipientCheck(t *testing.T) {
defer ln.Close() defer ln.Close()
server := &Server{ server := &smtpd.Server{
RecipientChecker: func(peer Peer, addr string) error { RecipientChecker: func(peer smtpd.Peer, addr string) error {
return Error{Code: 552, Message: "Denied"} return smtpd.Error{Code: 552, Message: "Denied"}
}, },
} }
@ -430,7 +431,7 @@ func TestMaxMessageSize(t *testing.T) {
defer ln.Close() defer ln.Close()
server := &Server{ server := &smtpd.Server{
MaxMessageSize: 5, MaxMessageSize: 5,
} }
@ -481,8 +482,8 @@ func TestHandler(t *testing.T) {
defer ln.Close() defer ln.Close()
server := &Server{ server := &smtpd.Server{
Handler: func(peer Peer, env Envelope) error { Handler: func(peer smtpd.Peer, env smtpd.Envelope) error {
if env.Sender != "sender@example.org" { if env.Sender != "sender@example.org" {
t.Fatalf("Unknown sender: %v", env.Sender) t.Fatalf("Unknown sender: %v", env.Sender)
} }
@ -546,9 +547,9 @@ func TestRejectHandler(t *testing.T) {
defer ln.Close() defer ln.Close()
server := &Server{ server := &smtpd.Server{
Handler: func(peer Peer, env Envelope) error { Handler: func(peer smtpd.Peer, env smtpd.Envelope) error {
return Error{Code: 550, Message: "Rejected"} return smtpd.Error{Code: 550, Message: "Rejected"}
}, },
} }
@ -599,7 +600,7 @@ func TestMaxConnections(t *testing.T) {
defer ln.Close() defer ln.Close()
server := &Server{ server := &smtpd.Server{
MaxConnections: 1, MaxConnections: 1,
} }
@ -629,7 +630,7 @@ func TestNoMaxConnections(t *testing.T) {
defer ln.Close() defer ln.Close()
server := &Server{ server := &smtpd.Server{
MaxConnections: -1, MaxConnections: -1,
} }
@ -654,7 +655,7 @@ func TestInvalidHelo(t *testing.T) {
defer ln.Close() defer ln.Close()
server := &Server{} server := &smtpd.Server{}
go func() { go func() {
server.Serve(ln) server.Serve(ln)
@ -680,7 +681,7 @@ func TestInvalidSender(t *testing.T) {
defer ln.Close() defer ln.Close()
server := &Server{} server := &smtpd.Server{}
go func() { go func() {
server.Serve(ln) server.Serve(ln)
@ -706,7 +707,7 @@ func TestInvalidRecipient(t *testing.T) {
defer ln.Close() defer ln.Close()
server := &Server{} server := &smtpd.Server{}
go func() { go func() {
server.Serve(ln) server.Serve(ln)
@ -736,7 +737,7 @@ func TestRCPTbeforeMAIL(t *testing.T) {
defer ln.Close() defer ln.Close()
server := &Server{} server := &smtpd.Server{}
go func() { go func() {
server.Serve(ln) server.Serve(ln)
@ -762,9 +763,9 @@ func TestDATAbeforeRCPT(t *testing.T) {
defer ln.Close() defer ln.Close()
server := &Server{ server := &smtpd.Server{
Handler: func(peer Peer, env Envelope) error { Handler: func(peer smtpd.Peer, env smtpd.Envelope) error {
return Error{Code: 550, Message: "Rejected"} return smtpd.Error{Code: 550, Message: "Rejected"}
}, },
} }
@ -800,8 +801,8 @@ func TestInterruptedDATA(t *testing.T) {
defer ln.Close() defer ln.Close()
server := &Server{ server := &smtpd.Server{
Handler: func(peer Peer, env Envelope) error { Handler: func(peer smtpd.Peer, env smtpd.Envelope) error {
t.Fatal("Accepted DATA despite disconnection") t.Fatal("Accepted DATA despite disconnection")
return nil return nil
}, },