From 10043d6779c58f16c1c6d433406a8ae26acd8cdc Mon Sep 17 00:00:00 2001 From: DualFroz Date: Mon, 14 Sep 2026 05:23:54 +0200 Subject: [PATCH] test: pin the timeout of a dialer without context --- smtp_test.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/smtp_test.go b/smtp_test.go index eb76a72..34299cd 100644 --- a/smtp_test.go +++ b/smtp_test.go @@ -270,6 +270,25 @@ func TestEstablishProxyConnection_DialerWithoutContext(t *testing.T) { require.ErrorIs(t, err, wantErr) } +type slowDialer struct{ delay time.Duration } + +func (d slowDialer) Dial(_, _ string) (net.Conn, error) { + time.Sleep(d.delay) + return nil, errors.New("slow dialer finished") +} + +func TestEstablishProxyConnection_DialerWithoutContextTimesOut(t *testing.T) { + proxy.RegisterDialerType("emailverifierslow", func(*url.URL, proxy.Dialer) (proxy.Dialer, error) { + return slowDialer{delay: 2 * time.Second}, nil + }) + + start := time.Now() + conn, err := establishProxyConnection("example.com:25", "emailverifierslow://127.0.0.1:1080", 50*time.Millisecond) + assert.Nil(t, conn) + require.ErrorIs(t, err, context.DeadlineExceeded) + assert.Less(t, time.Since(start), time.Second) +} + func TestPreferredDialError(t *testing.T) { network := errors.New("dial tcp 1.2.3.4:25: connect: connection refused") dns := &net.DNSError{Err: "no such host", Name: "mx.example.invalid", IsNotFound: true}