aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/jackc/pgx/v5/internal/pgmock/pgmock_test.go
diff options
context:
space:
mode:
authoruzhas <uzhas@ydb.tech>2023-11-16 16:04:50 +0300
committeruzhas <uzhas@ydb.tech>2023-11-16 17:46:46 +0300
commit46f0c0079bb50609d2eeb6586642bcf114fc5239 (patch)
tree84e4e4978d57fe5de321ba69bf9d0c290de60a66 /vendor/github.com/jackc/pgx/v5/internal/pgmock/pgmock_test.go
parent73045e389397816cc2bdd6cd7818b4bce427b265 (diff)
downloadydb-46f0c0079bb50609d2eeb6586642bcf114fc5239.tar.gz
enable ya make for go projects
Diffstat (limited to 'vendor/github.com/jackc/pgx/v5/internal/pgmock/pgmock_test.go')
-rw-r--r--vendor/github.com/jackc/pgx/v5/internal/pgmock/pgmock_test.go93
1 files changed, 93 insertions, 0 deletions
diff --git a/vendor/github.com/jackc/pgx/v5/internal/pgmock/pgmock_test.go b/vendor/github.com/jackc/pgx/v5/internal/pgmock/pgmock_test.go
new file mode 100644
index 0000000000..4405de2c40
--- /dev/null
+++ b/vendor/github.com/jackc/pgx/v5/internal/pgmock/pgmock_test.go
@@ -0,0 +1,93 @@
+package pgmock_test
+
+import (
+ "context"
+ "fmt"
+ "net"
+ "strings"
+ "testing"
+ "time"
+
+ "github.com/jackc/pgx/v5/internal/pgmock"
+ "github.com/jackc/pgx/v5/pgconn"
+ "github.com/jackc/pgx/v5/pgproto3"
+
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+)
+
+func TestScript(t *testing.T) {
+ script := &pgmock.Script{
+ Steps: pgmock.AcceptUnauthenticatedConnRequestSteps(),
+ }
+ script.Steps = append(script.Steps, pgmock.ExpectMessage(&pgproto3.Query{String: "select 42"}))
+ script.Steps = append(script.Steps, pgmock.SendMessage(&pgproto3.RowDescription{
+ Fields: []pgproto3.FieldDescription{
+ {
+ Name: []byte("?column?"),
+ TableOID: 0,
+ TableAttributeNumber: 0,
+ DataTypeOID: 23,
+ DataTypeSize: 4,
+ TypeModifier: -1,
+ Format: 0,
+ },
+ },
+ }))
+ script.Steps = append(script.Steps, pgmock.SendMessage(&pgproto3.DataRow{
+ Values: [][]byte{[]byte("42")},
+ }))
+ script.Steps = append(script.Steps, pgmock.SendMessage(&pgproto3.CommandComplete{CommandTag: []byte("SELECT 1")}))
+ script.Steps = append(script.Steps, pgmock.SendMessage(&pgproto3.ReadyForQuery{TxStatus: 'I'}))
+ script.Steps = append(script.Steps, pgmock.ExpectMessage(&pgproto3.Terminate{}))
+
+ ln, err := net.Listen("tcp", "127.0.0.1:")
+ require.NoError(t, err)
+ defer ln.Close()
+
+ serverErrChan := make(chan error, 1)
+ go func() {
+ defer close(serverErrChan)
+
+ conn, err := ln.Accept()
+ if err != nil {
+ serverErrChan <- err
+ return
+ }
+ defer conn.Close()
+
+ err = conn.SetDeadline(time.Now().Add(time.Second))
+ if err != nil {
+ serverErrChan <- err
+ return
+ }
+
+ err = script.Run(pgproto3.NewBackend(conn, conn))
+ if err != nil {
+ serverErrChan <- err
+ return
+ }
+ }()
+
+ parts := strings.Split(ln.Addr().String(), ":")
+ host := parts[0]
+ port := parts[1]
+ connStr := fmt.Sprintf("sslmode=disable host=%s port=%s", host, port)
+
+ ctx, cancel := context.WithTimeout(context.Background(), time.Second)
+ defer cancel()
+ pgConn, err := pgconn.Connect(ctx, connStr)
+ require.NoError(t, err)
+ results, err := pgConn.Exec(ctx, "select 42").ReadAll()
+ assert.NoError(t, err)
+
+ assert.Len(t, results, 1)
+ assert.Nil(t, results[0].Err)
+ assert.Equal(t, "SELECT 1", results[0].CommandTag.String())
+ assert.Len(t, results[0].Rows, 1)
+ assert.Equal(t, "42", string(results[0].Rows[0][0]))
+
+ pgConn.Close(ctx)
+
+ assert.NoError(t, <-serverErrChan)
+}