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 (
"bitbucket.org/chrj/smtpd"
"errors"
"net/smtp"
"strings"
)
func ExampleServer() {
var server *Server
var server *smtpd.Server
// No-op server. Accepts and discards
server = &Server{}
server = &smtpd.Server{}
server.ListenAndServe()
// 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",
HeloChecker: func(peer Peer) error {
HeloChecker: func(peer smtpd.Peer) error {
if !strings.HasPrefix(peer.Addr.String(), "42.42.42.42:") {
return errors.New("Denied")
}
return nil
},
Handler: func(peer Peer, env Envelope) error {
Handler: func(peer smtpd.Peer, env smtpd.Envelope) error {
return smtp.SendMail(
"smtp.gmail.com:587",
smtp.PlainAuth(
@ -43,5 +43,4 @@ func ExampleServer() {
}
server.ListenAndServe()
}

View file

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