github.com/ydb-platform/ydb-go-sdk/v3@v3.89.2/internal/dsn/dsn_test.go (about) 1 package dsn 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 8 "github.com/ydb-platform/ydb-go-sdk/v3/config" 9 ) 10 11 func TestParseConnectionString(t *testing.T) { 12 for _, test := range []struct { 13 connectionString string 14 secure bool 15 endpoint string 16 database string 17 user string 18 password string 19 }{ 20 { 21 "grpc://ydb-ru.yandex.net:2135/?" + 22 "database=/ru/home/gvit/mydb", 23 false, 24 "ydb-ru.yandex.net:2135", 25 "/ru/home/gvit/mydb", 26 "", 27 "", 28 }, 29 { 30 "grpc://ydb-ru.yandex.net:2135/ru/home/gvit/mydb", 31 false, 32 "ydb-ru.yandex.net:2135", 33 "/ru/home/gvit/mydb", 34 "", 35 "", 36 }, 37 { 38 "grpcs://ydb.serverless.yandexcloud.net:2135/?" + 39 "database=/ru-central1/b1g8skpblkos03malf3s/etn02qso4v3isjb00te1", 40 true, 41 "ydb.serverless.yandexcloud.net:2135", 42 "/ru-central1/b1g8skpblkos03malf3s/etn02qso4v3isjb00te1", 43 "", 44 "", 45 }, 46 { 47 "grpcs://ydb.serverless.yandexcloud.net:2135" + 48 "/ru-central1/b1g8skpblkos03malf3s/etn02qso4v3isjb00te1", 49 true, 50 "ydb.serverless.yandexcloud.net:2135", 51 "/ru-central1/b1g8skpblkos03malf3s/etn02qso4v3isjb00te1", 52 "", 53 "", 54 }, 55 { 56 "grpcs://ydb.serverless.yandexcloud.net:2135" + 57 "/ru-central1/b1g8skpblkos03malf3s/etn02qso4v3isjb00te1?database=/ru/home/gvit/mydb", 58 true, 59 "ydb.serverless.yandexcloud.net:2135", 60 "/ru/home/gvit/mydb", 61 "", 62 "", 63 }, 64 { 65 "grpcs://lb.etn03r9df42nb631unbv.ydb.mdb.yandexcloud.net:2135/?" + 66 "database=/ru-central1/b1g8skpblkos03malf3s/etn03r9df42nb631unbv", 67 true, 68 "lb.etn03r9df42nb631unbv.ydb.mdb.yandexcloud.net:2135", 69 "/ru-central1/b1g8skpblkos03malf3s/etn03r9df42nb631unbv", 70 "", 71 "", 72 }, 73 { 74 "grpcs://lb.etn03r9df42nb631unbv.ydb.mdb.yandexcloud.net:2135" + 75 "/ru-central1/b1g8skpblkos03malf3s/etn03r9df42nb631unbv", 76 true, 77 "lb.etn03r9df42nb631unbv.ydb.mdb.yandexcloud.net:2135", 78 "/ru-central1/b1g8skpblkos03malf3s/etn03r9df42nb631unbv", 79 "", 80 "", 81 }, 82 { 83 "grpcs://user:password@lb.etn03r9df42nb631unbv.ydb.mdb.yandexcloud.net:2135" + 84 "/ru-central1/b1g8skpblkos03malf3s/etn03r9df42nb631unbv", 85 true, 86 "lb.etn03r9df42nb631unbv.ydb.mdb.yandexcloud.net:2135", 87 "/ru-central1/b1g8skpblkos03malf3s/etn03r9df42nb631unbv", 88 "user", 89 "password", 90 }, 91 { 92 "abcd://ydb-ru.yandex.net:2135/?database=/ru/home/gvit/mydb", 93 true, 94 "ydb-ru.yandex.net:2135", 95 "/ru/home/gvit/mydb", 96 "", 97 "", 98 }, 99 { 100 "abcd://ydb-ru.yandex.net:2135/ru/home/gvit/mydb", 101 true, 102 "ydb-ru.yandex.net:2135", 103 "/ru/home/gvit/mydb", 104 "", 105 "", 106 }, 107 { 108 "localhost:3049/Root", 109 true, 110 "localhost:3049", 111 "/Root", 112 "", 113 "", 114 }, 115 { 116 "grpc://localhost:3049/Root", 117 false, 118 "localhost:3049", 119 "/Root", 120 "", 121 "", 122 }, 123 } { 124 t.Run(test.connectionString, func(t *testing.T) { 125 info, err := Parse(test.connectionString) 126 if err != nil { 127 t.Fatalf("Received unexpected error:\n%+v", err) 128 } 129 c := config.New(info.Options...) 130 require.Equal(t, test.secure, c.Secure()) 131 require.Equal(t, test.endpoint, c.Endpoint()) 132 require.Equal(t, test.database, c.Database()) 133 if test.user != "" { 134 require.NotNil(t, t, info.UserInfo) 135 require.Equal(t, test.user, info.UserInfo.User) 136 require.Equal(t, test.password, info.UserInfo.Password) 137 } else { 138 require.Nil(t, info.UserInfo) 139 } 140 }) 141 } 142 } 143 144 func TestParseConnectionStringEmptyDatabase(t *testing.T) { 145 info, err := Parse("grpc://ydb-ru.yandex.net:2135") 146 if err != nil { 147 t.Fatalf("Received unexpected error:\n%+v", err) 148 } 149 c := config.New(config.WithDatabase("mydb")) 150 c = c.With(info.Options...) 151 require.False(t, c.Secure()) 152 require.Equal(t, "ydb-ru.yandex.net:2135", c.Endpoint()) 153 require.Equal(t, "mydb", c.Database()) 154 }