github.com/ydb-platform/ydb-go-sdk/v3@v3.89.2/tests/integration/register_dsn_parser_test.go (about)

     1  //go:build integration
     2  // +build integration
     3  
     4  package integration
     5  
     6  import (
     7  	"context"
     8  	"database/sql"
     9  	"os"
    10  	"testing"
    11  
    12  	"github.com/stretchr/testify/require"
    13  
    14  	"github.com/ydb-platform/ydb-go-sdk/v3"
    15  )
    16  
    17  func TestRegisterDsnParser(t *testing.T) {
    18  	t.Run("native", func(t *testing.T) {
    19  		var visited bool
    20  		registrationID := ydb.RegisterDsnParser(func(dsn string) (opts []ydb.Option, _ error) {
    21  			return []ydb.Option{
    22  				func(ctx context.Context, d *ydb.Driver) error {
    23  					visited = true
    24  
    25  					return nil
    26  				},
    27  			}, nil
    28  		})
    29  		defer ydb.UnregisterDsnParser(registrationID)
    30  		db, err := ydb.Open(context.Background(), os.Getenv("YDB_CONNECTION_STRING"))
    31  		require.NoError(t, err)
    32  		require.True(t, visited)
    33  		defer func() {
    34  			_ = db.Close(context.Background())
    35  		}()
    36  	})
    37  	t.Run("database/sql", func(t *testing.T) {
    38  		var visited bool
    39  		registrationID := ydb.RegisterDsnParser(func(dsn string) (opts []ydb.Option, _ error) {
    40  			return []ydb.Option{
    41  				func(ctx context.Context, d *ydb.Driver) error {
    42  					visited = true
    43  
    44  					return nil
    45  				},
    46  			}, nil
    47  		})
    48  		defer ydb.UnregisterDsnParser(registrationID)
    49  		db, err := sql.Open("ydb", os.Getenv("YDB_CONNECTION_STRING"))
    50  		require.NoError(t, err)
    51  		require.True(t, visited)
    52  		defer func() {
    53  			_ = db.Close()
    54  		}()
    55  	})
    56  }