(t *testing.T)
| 4222 | func testingKey(s string) string { return strings.ReplaceAll(s, "TESTING KEY", "PRIVATE KEY") } |
| 4223 | |
| 4224 | func TestSNISupport(t *testing.T) { |
| 4225 | t.Parallel() |
| 4226 | tests := []struct { |
| 4227 | name string |
| 4228 | sni_param string |
| 4229 | sni_set bool |
| 4230 | }{ |
| 4231 | { |
| 4232 | name: "SNI is passed by default", |
| 4233 | sni_param: "", |
| 4234 | sni_set: true, |
| 4235 | }, |
| 4236 | { |
| 4237 | name: "SNI is passed when asked for", |
| 4238 | sni_param: "sslsni=1", |
| 4239 | sni_set: true, |
| 4240 | }, |
| 4241 | { |
| 4242 | name: "SNI is not passed when disabled", |
| 4243 | sni_param: "sslsni=0", |
| 4244 | sni_set: false, |
| 4245 | }, |
| 4246 | } |
| 4247 | for _, tt := range tests { |
| 4248 | t.Run(tt.name, func(t *testing.T) { |
| 4249 | t.Parallel() |
| 4250 | |
| 4251 | ctx, cancel := context.WithTimeout(context.Background(), 120*time.Second) |
| 4252 | defer cancel() |
| 4253 | |
| 4254 | ln, err := net.Listen("tcp", "127.0.0.1:") |
| 4255 | require.NoError(t, err) |
| 4256 | defer ln.Close() |
| 4257 | |
| 4258 | serverErrChan := make(chan error, 1) |
| 4259 | serverSNINameChan := make(chan string, 1) |
| 4260 | defer close(serverErrChan) |
| 4261 | defer close(serverSNINameChan) |
| 4262 | |
| 4263 | go func() { |
| 4264 | var sniHost string |
| 4265 | |
| 4266 | conn, err := ln.Accept() |
| 4267 | if err != nil { |
| 4268 | serverErrChan <- err |
| 4269 | return |
| 4270 | } |
| 4271 | defer conn.Close() |
| 4272 | |
| 4273 | err = conn.SetDeadline(time.Now().Add(5 * time.Second)) |
| 4274 | if err != nil { |
| 4275 | serverErrChan <- err |
| 4276 | return |
| 4277 | } |
| 4278 | |
| 4279 | backend := pgproto3.NewBackend(conn, conn) |
| 4280 | startupMessage, err := backend.ReceiveStartupMessage() |
| 4281 | if err != nil { |
nothing calls this directly
no test coverage detected