MCPcopy
hub / github.com/jackc/pgx / TestConnectWithDirectSSLNegotiation

Function TestConnectWithDirectSSLNegotiation

pgconn/pgconn_test.go:4345–4492  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

4343}
4344
4345func TestConnectWithDirectSSLNegotiation(t *testing.T) {
4346 t.Parallel()
4347
4348 tests := []struct {
4349 name string
4350 connString string
4351 expectDirectNego bool
4352 }{
4353 {
4354 name: "Default negotiation (postgres)",
4355 connString: "sslmode=require",
4356 expectDirectNego: false,
4357 },
4358 {
4359 name: "Direct negotiation",
4360 connString: "sslmode=require sslnegotiation=direct",
4361 expectDirectNego: true,
4362 },
4363 {
4364 name: "Explicit postgres negotiation",
4365 connString: "sslmode=require sslnegotiation=postgres",
4366 expectDirectNego: false,
4367 },
4368 }
4369
4370 for _, tt := range tests {
4371 t.Run(tt.name, func(t *testing.T) {
4372 t.Parallel()
4373
4374 script := &pgmock.Script{
4375 Steps: pgmock.AcceptUnauthenticatedConnRequestSteps(),
4376 }
4377
4378 ln, err := net.Listen("tcp", "127.0.0.1:")
4379 require.NoError(t, err)
4380 defer ln.Close()
4381
4382 _, port, err := net.SplitHostPort(ln.Addr().String())
4383 require.NoError(t, err)
4384
4385 var directNegoObserved atomic.Bool
4386
4387 serverErrCh := make(chan error, 1)
4388 go func() {
4389 defer close(serverErrCh)
4390
4391 conn, err := ln.Accept()
4392 if err != nil {
4393 serverErrCh <- fmt.Errorf("accept error: %w", err)
4394 return
4395 }
4396 defer conn.Close()
4397
4398 conn.SetDeadline(time.Now().Add(5 * time.Second))
4399
4400 firstByte := make([]byte, 1)
4401 _, err = conn.Read(firstByte)
4402 if err != nil {

Callers

nothing calls this directly

Calls 11

CloseMethod · 0.95
RunMethod · 0.95
NewBackendFunction · 0.92
ConnectFunction · 0.92
CloseMethod · 0.65
RunMethod · 0.45
StringMethod · 0.45
SetDeadlineMethod · 0.45
ReadMethod · 0.45
WriteMethod · 0.45

Tested by

no test coverage detected