Files

34 lines
783 B
Go

package outbound
import (
"errors"
"net"
"testing"
)
type halfCloseFixture struct {
net.Conn
called bool
err error
}
func (c *halfCloseFixture) CloseWrite() error { c.called = true; return c.err }
func TestForwardWrappersPreserveHalfClose(t *testing.T) {
for _, kind := range []string{"ssh", "k8s"} {
t.Run(kind, func(t *testing.T) {
expected := errors.New("fixture write-close result")
underlying := &halfCloseFixture{err: expected}
var wrapper interface{ CloseWrite() error }
if kind == "ssh" {
wrapper = &sshForwardConn{Conn: underlying}
} else {
wrapper = &kubernetesConn{Conn: underlying}
}
if err := wrapper.CloseWrite(); !errors.Is(err, expected) || !underlying.called {
t.Fatal("half-close not delegated", err)
}
})
}
}