good morning!!!!

Skip to content
Snippets Groups Projects
query_test.go 1.23 KiB
Newer Older
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
	ctx := backends.AcceptContext{
		Conn: server,
		Options: backends.AcceptOptions{
			Credentials: credentials.Cleartext{
				Username: "postgres",
				Password: "password",
			},
			Database: "postgres",
Garet Halliday's avatar
Garet Halliday committed
		},
Garet Halliday's avatar
Garet Halliday committed
	}
	_, err = backends.Accept(&ctx)
Garet Halliday's avatar
Garet Halliday committed
	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 = ExtendedQuery(client, &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)
	}

Garet Halliday's avatar
Garet Halliday committed
	var initial fed.Packet
	initial, err = client.ReadPacket(true, initial)
Garet Halliday's avatar
Garet Halliday committed
	if err != nil {
		t.Error(err)
	}
Garet Halliday's avatar
Garet Halliday committed
	_, clientErr, serverErr := bouncers.Bounce(client, server, initial)
Garet Halliday's avatar
Garet Halliday committed
	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
}