summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2022-10-05 02:42:41 +0700
committerShulhan <ms@kilabit.info>2022-10-05 02:42:41 +0700
commit00b6c3c97d91139a3f8a3e8e6ed80dbe8b065e92 (patch)
treeaaad7d86cb70e509973ec822b3f49b9f4e1f1a9a
parentdc974927fcf48b147bee320ef4e5a0f479350d58 (diff)
downloadpakakeh.go-00b6c3c97d91139a3f8a3e8e6ed80dbe8b065e92.tar.xz
lib/stmp: fix tests with -count=X, where X>1
This changes require all unit tests to use their own client.
-rw-r--r--lib/smtp/client_test.go65
-rw-r--r--lib/smtp/smtp_test.go27
2 files changed, 70 insertions, 22 deletions
diff --git a/lib/smtp/client_test.go b/lib/smtp/client_test.go
index 06678346..194071fa 100644
--- a/lib/smtp/client_test.go
+++ b/lib/smtp/client_test.go
@@ -40,17 +40,24 @@ func TestEhlo(t *testing.T) {
},
}}
+ var (
+ cl *Client
+ )
+
for _, c := range cases {
t.Log(c.desc)
- got, err := testClient.ehlo(c.arg)
+ cl = testNewClient(false)
+
+ got, err := cl.ehlo(c.arg)
if err != nil {
t.Fatal(err)
}
+ t.Logf(`got: %+v`, got)
test.Assert(t, "Ehlo", c.exp, got)
- test.Assert(t, "ServerInfo.Domain", c.expServerInfo.Domain, testClient.ServerInfo.Domain)
- test.Assert(t, "ServerInfo.Info", c.expServerInfo.Info, testClient.ServerInfo.Info)
+ test.Assert(t, "ServerInfo.Domain", c.expServerInfo.Domain, cl.ServerInfo.Domain)
+ test.Assert(t, "ServerInfo.Info", c.expServerInfo.Info, cl.ServerInfo.Info)
}
}
@@ -98,10 +105,14 @@ func TestAuth(t *testing.T) {
},
}}
+ var (
+ cl *Client = testNewClient(false)
+ )
+
for _, c := range cases {
t.Log(c.desc)
- got, err := testClient.Authenticate(c.mech, c.username, c.password)
+ got, err := cl.Authenticate(c.mech, c.username, c.password)
if err != nil {
test.Assert(t, "error", c.expErr, err.Error())
continue
@@ -168,10 +179,14 @@ func TestExpand(t *testing.T) {
},
}}
+ var (
+ cl *Client = testNewClient(true)
+ )
+
for _, c := range cases {
t.Log(c.desc)
- got, err := testClient.Expand(c.mlist)
+ got, err := cl.Expand(c.mlist)
if err != nil {
t.Fatal(err)
}
@@ -193,10 +208,14 @@ func TestHelp(t *testing.T) {
},
}}
+ var (
+ cl *Client = testNewClient(true)
+ )
+
for _, c := range cases {
t.Log(c.desc)
- got, err := testClient.Help(c.arg)
+ got, err := cl.Help(c.arg)
if err != nil {
t.Fatal(err)
}
@@ -233,10 +252,14 @@ func TestSendCommand(t *testing.T) {
},
}}
+ var (
+ cl *Client = testNewClient(false)
+ )
+
for _, c := range cases {
t.Log(c.desc)
- got, err := testClient.SendCommand(c.cmd)
+ got, err := cl.SendCommand(c.cmd)
if err != nil {
t.Fatal(err)
}
@@ -278,10 +301,14 @@ func TestMailTx(t *testing.T) {
},
}}
+ var (
+ cl *Client = testNewClient(true)
+ )
+
for _, c := range cases {
t.Log(c.desc)
- got, err := testClient.MailTx(c.mail)
+ got, err := cl.MailTx(c.mail)
if err != nil {
test.Assert(t, "error", c.expErr, err.Error())
continue
@@ -313,10 +340,14 @@ func TestVerify(t *testing.T) {
},
}}
+ var (
+ cl *Client = testNewClient(true)
+ )
+
for _, c := range cases {
t.Log(c.desc)
- got, err := testClient.Verify(c.mailbox)
+ got, err := cl.Verify(c.mailbox)
if err != nil {
t.Fatal(err)
}
@@ -326,12 +357,18 @@ func TestVerify(t *testing.T) {
}
func TestQuit(t *testing.T) {
- exp := &Response{
- Code: StatusClosing,
- Message: "Service closing transmission channel",
- }
+ var (
+ cl *Client = testNewClient(false)
+ exp = &Response{
+ Code: StatusClosing,
+ Message: "Service closing transmission channel",
+ }
+
+ got *Response
+ err error
+ )
- got, err := testClient.Quit()
+ got, err = cl.Quit()
if err != nil {
t.Fatal(err)
}
diff --git a/lib/smtp/smtp_test.go b/lib/smtp/smtp_test.go
index 4ade34ae..f7b18f4c 100644
--- a/lib/smtp/smtp_test.go
+++ b/lib/smtp/smtp_test.go
@@ -26,7 +26,6 @@ const (
)
var (
- testClient *Client
testServer *Server
testAccountFirst *Account
testAccountSecond *Account
@@ -84,7 +83,7 @@ func testRunServer() {
}()
}
-func TestMain(m *testing.M) {
+func testNewClient(withAuth bool) (cl *Client) {
var (
opts = ClientOptions{
ServerUrl: testSMTPSAddress,
@@ -92,18 +91,30 @@ func TestMain(m *testing.M) {
}
err error
- s int
+ )
+ if withAuth {
+ opts.AuthUser = testAccountFirst.Short()
+ opts.AuthPass = testPassword
+ opts.AuthMechanism = SaslMechanismPlain
+ }
+
+ cl, err = NewClient(opts)
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ return cl
+}
+
+func TestMain(m *testing.M) {
+ var (
+ s int
)
testRunServer()
time.Sleep(100 * time.Millisecond)
- testClient, err = NewClient(opts)
- if err != nil {
- log.Fatal(err.Error())
- }
-
s = m.Run()
os.Exit(s)
}