good morning!!!!

Skip to content
Snippets Groups Projects
query_test.go 1.47 KiB
Newer Older
  • Learn to ignore specific revisions
  • Garet Halliday's avatar
    Garet Halliday committed
    package gsql_test
    
    Garet Halliday's avatar
    Garet Halliday committed
    
    import (
    
    Garet Halliday's avatar
    Garet Halliday committed
    	"log"
    
    Garet Halliday's avatar
    Garet Halliday committed
    	"net"
    
    	"net/http"
    	_ "net/http/pprof"
    
    Garet Halliday's avatar
    Garet Halliday committed
    	"testing"
    
    
    Garet Halliday's avatar
    Garet Halliday committed
    	"gfx.cafe/gfx/pggat/lib/auth/credentials"
    	"gfx.cafe/gfx/pggat/lib/bouncer/backends/v0"
    	"gfx.cafe/gfx/pggat/lib/bouncer/bouncers/v2"
    	"gfx.cafe/gfx/pggat/lib/fed"
    
    Garet Halliday's avatar
    Garet Halliday committed
    	"gfx.cafe/gfx/pggat/lib/gsql"
    
    	"gfx.cafe/gfx/pggat/lib/util/flip"
    
    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) {
    
    	go func() {
    		panic(http.ListenAndServe(":8080", nil))
    	}()
    
    
    Garet Halliday's avatar
    Garet Halliday committed
    	s, err := net.Dial("tcp", "localhost:5432")
    	if err != nil {
    		t.Error(err)
    		return
    	}
    
    	server := fed.NewConn(s)
    
    Garet Halliday's avatar
    Garet Halliday committed
    	err = backends.Accept(
    		server,
    		"",
    		nil,
    		"postgres",
    		credentials.Cleartext{
    
    Garet Halliday's avatar
    Garet Halliday committed
    			Password: "password",
    
    Garet Halliday's avatar
    Garet Halliday committed
    		},
    
    Garet Halliday's avatar
    Garet Halliday committed
    		"postgres",
    		nil,
    	)
    
    Garet Halliday's avatar
    Garet Halliday committed
    	if err != nil {
    		t.Error(err)
    		return
    	}
    
    
    Garet Halliday's avatar
    Garet Halliday committed
    	inward, outward := gsql.NewPair()
    
    Garet Halliday's avatar
    a  
    Garet Halliday committed
    	var res Result
    
    	var b flip.Bank
    	b.Queue(func() error {
    
    Garet Halliday's avatar
    Garet Halliday committed
    		if err := gsql.ExtendedQuery(inward, &res, "SELECT usename, passwd FROM pg_shadow WHERE usename=$1", "postgres"); err != nil {
    			return err
    		}
    		return nil
    
    	})
    
    	b.Queue(func() error {
    		initial, err := outward.ReadPacket(true)
    		if err != nil {
    			return err
    		}
    		clientErr, serverErr := bouncers.Bounce(outward, server, initial)
    		if clientErr != nil {
    			return clientErr
    		}
    		if serverErr != nil {
    			return serverErr
    		}
    
    Garet Halliday's avatar
    Garet Halliday committed
    		if err := outward.Close(); err != nil {
    			return err
    		}
    		return nil
    
    	})
    
    	if err = b.Wait(); err != nil {
    
    Garet Halliday's avatar
    Garet Halliday committed
    		t.Error(err)
    	}
    
    Garet Halliday's avatar
    a  
    Garet Halliday committed
    
    	log.Printf("%#v", res)
    
    Garet Halliday's avatar
    Garet Halliday committed
    }