TestConnectTLS is separate from other connect tests because it has an additional test to ensure it really is a secure connection.
(t *testing.T)
| 99 | // TestConnectTLS is separate from other connect tests because it has an additional test to ensure it really is a secure |
| 100 | // connection. |
| 101 | func TestConnectTLS(t *testing.T) { |
| 102 | t.Parallel() |
| 103 | |
| 104 | setup := func(t *testing.T, connString string) (*pgconn.PgConn, context.Context) { |
| 105 | t.Helper() |
| 106 | |
| 107 | ctx, cancel := context.WithTimeout(context.Background(), 120*time.Second) |
| 108 | t.Cleanup(cancel) |
| 109 | |
| 110 | conn, err := pgconn.Connect(ctx, connString) |
| 111 | require.NoError(t, err) |
| 112 | t.Cleanup(func() { closeConn(t, conn) }) |
| 113 | |
| 114 | return conn, ctx |
| 115 | } |
| 116 | |
| 117 | t.Run("WithChannelBinding", func(t *testing.T) { |
| 118 | t.Parallel() |
| 119 | |
| 120 | connString := os.Getenv("PGX_TEST_SCRAM_PLUS_CONN_STRING") |
| 121 | if connString == "" { |
| 122 | t.Skipf("Skipping due to missing environment variable %v", "PGX_TEST_SCRAM_PLUS_CONN_STRING") |
| 123 | } |
| 124 | |
| 125 | conn, ctx := setup(t, connString) |
| 126 | |
| 127 | result := conn.ExecParams(ctx, `select ssl from pg_stat_ssl where pg_backend_pid() = pid;`, nil, nil, nil, nil).Read() |
| 128 | require.NoError(t, result.Err) |
| 129 | require.Len(t, result.Rows, 1) |
| 130 | require.Len(t, result.Rows[0], 1) |
| 131 | require.Equalf(t, "t", string(result.Rows[0][0]), "not a TLS connection") |
| 132 | }) |
| 133 | |
| 134 | t.Run("WithoutChannelBinding", func(t *testing.T) { |
| 135 | t.Parallel() |
| 136 | |
| 137 | connString := os.Getenv("PGX_TEST_TLS_CONN_STRING") |
| 138 | if connString == "" { |
| 139 | t.Skipf("Skipping due to missing environment variable %v", "PGX_TEST_TLS_CONN_STRING") |
| 140 | } |
| 141 | |
| 142 | conn, ctx := setup(t, connString) |
| 143 | |
| 144 | result := conn.ExecParams(ctx, `select ssl from pg_stat_ssl where pg_backend_pid() = pid;`, nil, nil, nil, nil).Read() |
| 145 | require.NoError(t, result.Err) |
| 146 | require.Len(t, result.Rows, 1) |
| 147 | require.Len(t, result.Rows[0], 1) |
| 148 | require.Equalf(t, "t", string(result.Rows[0][0]), "not a TLS connection") |
| 149 | }) |
| 150 | } |
| 151 | |
| 152 | func TestConnectChannelBinding(t *testing.T) { |
| 153 | t.Parallel() |