34 lines
783 B
Go
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)
|
|
}
|
|
})
|
|
}
|
|
}
|