11package dsn
22
33import (
4- "context "
4+ "strconv "
55 "testing"
66
7+ "github.com/stretchr/testify/require"
8+
79 "github.com/ydb-platform/ydb-go-sdk/v3/config"
8- "github.com/ydb-platform/ydb-go-sdk/v3/internal/credentials"
910 "github.com/ydb-platform/ydb-go-sdk/v3/testutil"
1011)
1112
12- func init () {
13- _ = Register ("token" , func (token string ) ([]config.Option , error ) {
14- return []config.Option {
15- config .WithCredentials (
16- credentials .NewAccessTokenCredentials (token , "" ),
17- ),
18- }, nil
19- })
20- }
21-
2213func TestParseConnectionString (t * testing.T ) {
2314 for _ , test := range []struct {
2415 connectionString string
2516 secure bool
2617 endpoint string
2718 database string
28- token string
2919 }{
3020 {
3121 "grpc://ydb-ru.yandex.net:2135/?" +
32- "database=/ru/home/gvit/mydb&token=123 " ,
22+ "database=/ru/home/gvit/mydb" ,
3323 false ,
3424 "ydb-ru.yandex.net:2135" ,
3525 "/ru/home/gvit/mydb" ,
36- "123" ,
3726 },
3827 {
39- "grpc://ydb-ru.yandex.net:2135/ru/home/gvit/mydb?token=123 " ,
28+ "grpc://ydb-ru.yandex.net:2135/ru/home/gvit/mydb" ,
4029 false ,
4130 "ydb-ru.yandex.net:2135" ,
4231 "/ru/home/gvit/mydb" ,
43- "123" ,
4432 },
4533 {
4634 "grpcs://ydb.serverless.yandexcloud.net:2135/?" +
47- "database=/ru-central1/b1g8skpblkos03malf3s/etn02qso4v3isjb00te1&token=123 " ,
35+ "database=/ru-central1/b1g8skpblkos03malf3s/etn02qso4v3isjb00te1" ,
4836 true ,
4937 "ydb.serverless.yandexcloud.net:2135" ,
5038 "/ru-central1/b1g8skpblkos03malf3s/etn02qso4v3isjb00te1" ,
51- "123" ,
5239 },
5340 {
5441 "grpcs://ydb.serverless.yandexcloud.net:2135" +
55- "/ru-central1/b1g8skpblkos03malf3s/etn02qso4v3isjb00te1?token=123 " ,
42+ "/ru-central1/b1g8skpblkos03malf3s/etn02qso4v3isjb00te1" ,
5643 true ,
5744 "ydb.serverless.yandexcloud.net:2135" ,
5845 "/ru-central1/b1g8skpblkos03malf3s/etn02qso4v3isjb00te1" ,
59- "123" ,
6046 },
6147 {
6248 "grpcs://ydb.serverless.yandexcloud.net:2135" +
63- "/ru-central1/b1g8skpblkos03malf3s/etn02qso4v3isjb00te1?database=/ru/home/gvit/mydb&token=123 " ,
49+ "/ru-central1/b1g8skpblkos03malf3s/etn02qso4v3isjb00te1?database=/ru/home/gvit/mydb" ,
6450 true ,
6551 "ydb.serverless.yandexcloud.net:2135" ,
6652 "/ru/home/gvit/mydb" ,
67- "123" ,
6853 },
6954 {
7055 "grpcs://lb.etn03r9df42nb631unbv.ydb.mdb.yandexcloud.net:2135/?" +
71- "database=/ru-central1/b1g8skpblkos03malf3s/etn03r9df42nb631unbv&token=123 " ,
56+ "database=/ru-central1/b1g8skpblkos03malf3s/etn03r9df42nb631unbv" ,
7257 true ,
7358 "lb.etn03r9df42nb631unbv.ydb.mdb.yandexcloud.net:2135" ,
7459 "/ru-central1/b1g8skpblkos03malf3s/etn03r9df42nb631unbv" ,
75- "123" ,
7660 },
7761 {
7862 "grpcs://lb.etn03r9df42nb631unbv.ydb.mdb.yandexcloud.net:2135" +
79- "/ru-central1/b1g8skpblkos03malf3s/etn03r9df42nb631unbv?token=123 " ,
63+ "/ru-central1/b1g8skpblkos03malf3s/etn03r9df42nb631unbv" ,
8064 true ,
8165 "lb.etn03r9df42nb631unbv.ydb.mdb.yandexcloud.net:2135" ,
8266 "/ru-central1/b1g8skpblkos03malf3s/etn03r9df42nb631unbv" ,
83- "123" ,
8467 },
8568 {
8669 "abcd://ydb-ru.yandex.net:2135/?database=/ru/home/gvit/mydb" ,
8770 true ,
8871 "ydb-ru.yandex.net:2135" ,
8972 "/ru/home/gvit/mydb" ,
90- "" ,
9173 },
9274 {
9375 "abcd://ydb-ru.yandex.net:2135/ru/home/gvit/mydb" ,
9476 true ,
9577 "ydb-ru.yandex.net:2135" ,
9678 "/ru/home/gvit/mydb" ,
97- "" ,
9879 },
9980 } {
10081 t .Run (test .connectionString , func (t * testing.T ) {
@@ -106,16 +87,29 @@ func TestParseConnectionString(t *testing.T) {
10687 testutil .Equal (t , test .secure , config .Secure ())
10788 testutil .Equal (t , test .endpoint , config .Endpoint ())
10889 testutil .Equal (t , test .database , config .Database ())
109- var token string
110- if credentials := config .Credentials (); credentials != nil {
111- token , err = credentials .Token (context .Background ())
112- if err != nil {
113- t .Fatalf ("Received unexpected error:\n %+v" , err )
114- }
115- } else {
116- token = ""
117- }
118- testutil .Equal (t , test .token , token )
11990 })
12091 }
12192}
93+
94+ func TestRegister (t * testing.T ) {
95+ var test1 , test2 , test3 int
96+ _ = Register ("test1" , func (value string ) (_ []config.Option , err error ) {
97+ test1 , err = strconv .Atoi (value )
98+ if err != nil {
99+ return nil , err
100+ }
101+ return []config.Option {}, nil
102+ })
103+ _ = Register ("test2" , func (value string ) (_ []config.Option , err error ) {
104+ test2 , err = strconv .Atoi (value )
105+ if err != nil {
106+ return nil , err
107+ }
108+ return []config.Option {}, nil
109+ })
110+ _ , err := Parse ("grpc://ydb-ru.yandex.net:2135/ru/home/gvit/mydb?test1=1&test2=2&test3=3" )
111+ require .NoError (t , err , "" )
112+ require .Equal (t , 1 , test1 , "" )
113+ require .Equal (t , 2 , test2 , "" )
114+ require .NotEqualf (t , 3 , test3 , "" )
115+ }
0 commit comments