@@ -11,6 +11,7 @@ import (
1111 "testing"
1212 "time"
1313
14+ log "github.com/fclairamb/go-log"
1415 "github.com/fclairamb/go-log/gokit"
1516 gklog "github.com/go-kit/log"
1617 "github.com/spf13/afero"
@@ -38,13 +39,10 @@ var errInvalidTLSCertificate = errors.New("invalid TLS certificate")
3839
3940// NewTestServer provides a test server with or without debugging
4041func NewTestServer (t * testing.T , debug bool ) * FtpServer {
41- return NewTestServerWithDriver (t , & TestServerDriver {Debug : debug })
42+ return NewTestServerWithTestDriver (t , & TestServerDriver {Debug : debug })
4243}
4344
44- // NewTestServerWithDriver provides a server instantiated with some settings
45- func NewTestServerWithDriver (t * testing.T , driver * TestServerDriver ) * FtpServer {
46- t .Parallel ()
47-
45+ func (driver * TestServerDriver ) Init () {
4846 if driver .Settings == nil {
4947 driver .Settings = & Settings {
5048 DefaultTransferType : TransferTypeBinary ,
@@ -63,15 +61,35 @@ func NewTestServerWithDriver(t *testing.T, driver *TestServerDriver) *FtpServer
6361
6462 driver .fs = afero .NewBasePathFs (afero .NewOsFs (), dir )
6563 }
64+ }
6665
67- s := NewFtpServer (driver )
66+ func NewTestServerWithTestDriver (t * testing.T , driver * TestServerDriver ) * FtpServer {
67+ t .Parallel ()
68+
69+ driver .Init ()
6870
6971 // If we are in debug mode, we should log things
72+ var logger log.Logger
7073 if driver .Debug {
71- s . Logger = gokit .NewWrap (gklog .NewLogfmtLogger (gklog .NewSyncWriter (os .Stdout ))).With (
74+ logger = gokit .NewWrap (gklog .NewLogfmtLogger (gklog .NewSyncWriter (os .Stdout ))).With (
7275 "ts" , gokit .GKDefaultTimestampUTC ,
7376 "caller" , gokit .GKDefaultCaller ,
7477 )
78+ } else {
79+ logger = nil
80+ }
81+
82+ s := NewTestServerWithDriverAndLogger (t , driver , logger )
83+
84+ return s
85+ }
86+
87+ // NewTestServerWithTestDriver provides a server instantiated with some settings
88+ func NewTestServerWithDriverAndLogger (t * testing.T , driver MainDriver , logger log.Logger ) * FtpServer {
89+ s := NewFtpServer (driver )
90+
91+ if logger != nil {
92+ s .Logger = logger
7593 }
7694
7795 if err := s .Listen (); err != nil {
@@ -91,6 +109,10 @@ func NewTestServerWithDriver(t *testing.T, driver *TestServerDriver) *FtpServer
91109 return s
92110}
93111
112+ func NewTestServerWithDriver (t * testing.T , driver MainDriver ) * FtpServer {
113+ return NewTestServerWithDriverAndLogger (t , driver , nil )
114+ }
115+
94116// TestServerDriver defines a minimal serverftp server driver
95117type TestServerDriver struct {
96118 Debug bool // To display connection logs information
@@ -104,8 +126,6 @@ type TestServerDriver struct {
104126 TLSVerificationReply tlsVerificationReply
105127 errPassiveListener error
106128 TLSRequirement TLSRequirement
107- customAuthMessage bool
108- customQuitMessage bool
109129}
110130
111131// TestClientDriver defines a minimal serverftp client driver
@@ -240,12 +260,12 @@ func (driver *TestServerDriver) AuthUser(_ ClientContext, user, pass string) (Cl
240260 return nil , errBadUserNameOrPassword
241261}
242262
243- // PostAuthMessage returns a message displayed after authentication
244- func (driver * TestServerDriver ) PostAuthMessage (_ ClientContext , _ string , authErr error ) string {
245- if ! driver .customAuthMessage {
246- return ""
247- }
263+ type MesssageDriver struct {
264+ TestServerDriver
265+ }
248266
267+ // PostAuthMessage returns a message displayed after authentication
268+ func (driver * MesssageDriver ) PostAuthMessage (_ ClientContext , _ string , authErr error ) string {
249269 if authErr != nil {
250270 return "You are not welcome here"
251271 }
@@ -254,11 +274,7 @@ func (driver *TestServerDriver) PostAuthMessage(_ ClientContext, _ string, authE
254274}
255275
256276// QuitMessage returns a goodbye message
257- func (driver * TestServerDriver ) QuitMessage () string {
258- if ! driver .customQuitMessage {
259- return ""
260- }
261-
277+ func (driver * MesssageDriver ) QuitMessage () string {
262278 return "Sayonara, bye bye!"
263279}
264280
0 commit comments