mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
				
	
	
		
			40 lines
		
	
	
		
			893 B
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			893 B
		
	
	
	
		
			Go
		
	
	
	
| package postgres
 | |
| 
 | |
| import (
 | |
| 	"database/sql"
 | |
| 	"fmt"
 | |
| 	"net"
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/lib/pq"
 | |
| 	"github.com/stretchr/testify/require"
 | |
| 	"golang.org/x/net/proxy"
 | |
| )
 | |
| 
 | |
| type testDialer struct {
 | |
| }
 | |
| 
 | |
| func (d *testDialer) Dial(network, addr string) (c net.Conn, err error) {
 | |
| 	return nil, fmt.Errorf("test-dialer is not functional")
 | |
| }
 | |
| 
 | |
| var _ proxy.Dialer = (&testDialer{})
 | |
| 
 | |
| func TestPostgresProxyDriver(t *testing.T) {
 | |
| 	dbURL := "localhost:5432"
 | |
| 	cnnstr := fmt.Sprintf("postgres://auser:password@%s/db?sslmode=disable", dbURL)
 | |
| 
 | |
| 	t.Run("Connector should use dialer context that routes through the socks proxy to db", func(t *testing.T) {
 | |
| 		connector, err := pq.NewConnector(cnnstr)
 | |
| 		require.NoError(t, err)
 | |
| 		dialer := newPostgresProxyDialer(&testDialer{})
 | |
| 
 | |
| 		connector.Dialer(dialer)
 | |
| 
 | |
| 		db := sql.OpenDB(connector)
 | |
| 		err = db.Ping()
 | |
| 
 | |
| 		require.Contains(t, err.Error(), "test-dialer is not functional")
 | |
| 	})
 | |
| }
 |