good morning!!!!

Skip to content
Snippets Groups Projects
query_test.go 1.13 KiB
Newer Older
  • Learn to ignore specific revisions
  • Garet Halliday's avatar
    Garet Halliday committed
    package gsql
    
    Garet Halliday's avatar
    Garet Halliday committed
    
    import (
    	"net"
    	"testing"
    
    
    Garet Halliday's avatar
    a  
    Garet Halliday committed
    	"tuxpa.in/a/zlog/log"
    
    
    Garet Halliday's avatar
    Garet Halliday committed
    	"pggat/lib/auth/credentials"
    
    Garet Halliday's avatar
    Garet Halliday committed
    	"pggat/lib/bouncer/backends/v0"
    	"pggat/lib/bouncer/bouncers/v2"
    
    Garet Halliday's avatar
    Garet Halliday committed
    	"pggat/lib/fed"
    
    Garet Halliday's avatar
    a  
    Garet Halliday committed
    type Result struct {
    
    Garet Halliday's avatar
    Garet Halliday committed
    	Username string  `sql:"0"`
    	Password *string `sql:"1"`
    
    Garet Halliday's avatar
    a  
    Garet Halliday committed
    }
    
    
    Garet Halliday's avatar
    Garet Halliday committed
    func TestQuery(t *testing.T) {
    	// open server
    	s, err := net.Dial("tcp", "localhost:5432")
    	if err != nil {
    		t.Error(err)
    		return
    	}
    
    Garet Halliday's avatar
    Garet Halliday committed
    	server := fed.WrapNetConn(s)
    
    Garet Halliday's avatar
    Garet Halliday committed
    	_, err = backends.Accept(server, backends.AcceptOptions{
    		Credentials: credentials.Cleartext{
    			Username: "postgres",
    			Password: "password",
    		},
    		Database: "postgres",
    	})
    	if err != nil {
    		t.Error(err)
    		return
    	}
    
    
    Garet Halliday's avatar
    a  
    Garet Halliday committed
    	var res Result
    
    Garet Halliday's avatar
    Garet Halliday committed
    	client := new(Client)
    
    Garet Halliday's avatar
    Garet Halliday committed
    	err = client.ExtendedQuery(&res, "SELECT usename, passwd FROM pg_shadow WHERE usename=$1", "bob")
    
    Garet Halliday's avatar
    Garet Halliday committed
    	if err != nil {
    		t.Error(err)
    		return
    	}
    
    Garet Halliday's avatar
    Garet Halliday committed
    	err = client.Close()
    	if err != nil {
    		t.Error(err)
    	}
    
    	initial, err := client.ReadPacket(true)
    	if err != nil {
    		t.Error(err)
    	}
    	clientErr, serverErr := bouncers.Bounce(client, server, initial)
    	if clientErr != nil {
    		t.Error(clientErr)
    	}
    	if serverErr != nil {
    		t.Error(serverErr)
    	}
    
    Garet Halliday's avatar
    a  
    Garet Halliday committed
    
    	log.Printf("%#v", res)
    
    Garet Halliday's avatar
    Garet Halliday committed
    }