@@ -30,6 +30,7 @@ import (
3030
3131 "github.com/ydb-platform/ydb-go-sdk/v3"
3232 "github.com/ydb-platform/ydb-go-sdk/v3/config"
33+ "github.com/ydb-platform/ydb-go-sdk/v3/internal/credentials"
3334 "github.com/ydb-platform/ydb-go-sdk/v3/internal/meta"
3435 "github.com/ydb-platform/ydb-go-sdk/v3/internal/version"
3536 "github.com/ydb-platform/ydb-go-sdk/v3/internal/xtest"
@@ -193,94 +194,132 @@ func TestDriver(sourceTest *testing.T) {
193194 require .NoError (t , err )
194195 }()
195196 t .RunSynced ("UsingConnectionString" , func (t * xtest.SyncedTest ) {
196- u , err := url .Parse (os .Getenv ("YDB_CONNECTION_STRING" ))
197- require .NoError (t , err )
198- u .User = url .UserPassword ("test" , "password" )
199- t .Log (u .String ())
200- db , err := ydb .Open (ctx ,
201- u .String (),
202- )
203- require .NoError (t , err )
204- defer func () {
205- _ = db .Close (ctx )
206- }()
207- row , err := db .Query ().QueryRow (ctx , `SELECT 1` )
208- require .NoError (t , err )
209- var v int
210- err = row .Scan (& v )
211- require .NoError (t , err )
212- tableName := path .Join (db .Name (), t .Name (), "test" )
213- t .RunSynced ("CreateTable" , func (t * xtest.SyncedTest ) {
214- err := db .Query ().Exec (ctx , fmt .Sprintf (`
215- CREATE TABLE IF NOT EXISTS %s (
216- id Uint64,
217- value Utf8,
218- PRIMARY KEY (id)
219- )` , "`" + tableName + "`" ),
220- )
197+ t .RunSynced ("HappyWay" , func (t * xtest.SyncedTest ) {
198+ u , err := url .Parse (os .Getenv ("YDB_CONNECTION_STRING" ))
221199 require .NoError (t , err )
222- })
223- t .RunSynced ("DescribeTable" , func (t * xtest.SyncedTest ) {
224- var d options.Description
225- err := db .Table ().Do (ctx , func (ctx context.Context , s table.Session ) error {
226- d , err = s .DescribeTable (ctx , tableName )
227- if err != nil {
228- return err
229- }
200+ u .User = url .UserPassword ("test" , "password" )
201+ t .Log (u .String ())
202+ db , err := ydb .Open (ctx , u .String ())
203+ require .NoError (t , err )
204+ defer func () {
205+ _ = db .Close (ctx )
206+ }()
207+ row , err := db .Query ().QueryRow (ctx , `SELECT 1` )
208+ require .NoError (t , err )
209+ var v int
210+ err = row .Scan (& v )
211+ require .NoError (t , err )
212+ tableName := path .Join (db .Name (), t .Name (), "test" )
213+ t .RunSynced ("CreateTable" , func (t * xtest.SyncedTest ) {
214+ err := db .Query ().Exec (ctx , fmt .Sprintf (`
215+ CREATE TABLE IF NOT EXISTS %s (
216+ id Uint64,
217+ value Utf8,
218+ PRIMARY KEY (id)
219+ )` , "`" + tableName + "`" ),
220+ )
221+ require .NoError (t , err )
222+ })
223+ t .RunSynced ("DescribeTable" , func (t * xtest.SyncedTest ) {
224+ var d options.Description
225+ err := db .Table ().Do (ctx , func (ctx context.Context , s table.Session ) error {
226+ d , err = s .DescribeTable (ctx , tableName )
227+ if err != nil {
228+ return err
229+ }
230230
231- return nil
231+ return nil
232+ })
233+ require .NoError (t , err )
234+ require .Equal (t , "test" , d .Name )
235+ require .Equal (t , 2 , len (d .Columns ))
236+ require .Equal (t , "id" , d .Columns [0 ].Name )
237+ require .Equal (t , "value" , d .Columns [1 ].Name )
238+ require .Equal (t , []string {"id" }, d .PrimaryKey )
232239 })
240+ })
241+ t .RunSynced ("WrongLogin" , func (t * xtest.SyncedTest ) {
242+ u , err := url .Parse (os .Getenv ("YDB_CONNECTION_STRING" ))
243+ require .NoError (t , err )
244+ u .User = url .UserPassword ("wrong_login" , "password" )
245+ db , err := ydb .Open (ctx , u .String ())
246+ require .Error (t , err )
247+ require .Nil (t , db )
248+ require .True (t , credentials .IsAccessError (err ))
249+ })
250+ t .RunSynced ("WrongPassword" , func (t * xtest.SyncedTest ) {
251+ u , err := url .Parse (os .Getenv ("YDB_CONNECTION_STRING" ))
233252 require .NoError (t , err )
234- require . Equal ( t , "test" , d . Name )
235- require . Equal ( t , 2 , len ( d . Columns ))
236- require .Equal (t , "id" , d . Columns [ 0 ]. Name )
237- require .Equal (t , "value" , d . Columns [ 1 ]. Name )
238- require .Equal (t , [] string { "id" }, d . PrimaryKey )
253+ u . User = url . UserPassword ( "test" , "wrong_password" )
254+ db , err := ydb . Open ( ctx , u . String ( ))
255+ require .Error (t , err )
256+ require .Nil (t , db )
257+ require .True (t , credentials . IsAccessError ( err ) )
239258 })
240259 })
241260 t .RunSynced ("UsingExplicitStaticCredentials" , func (t * xtest.SyncedTest ) {
242- db , err := ydb .Open (ctx ,
243- os .Getenv ("YDB_CONNECTION_STRING" ),
244- ydb .WithStaticCredentials ("test" , "password" ),
245- )
246- require .NoError (t , err )
247- defer func () {
248- _ = db .Close (ctx )
249- }()
250- tableName := path .Join (db .Name (), t .Name (), "test" )
251- t .RunSynced ("CreateTable" , func (t * xtest.SyncedTest ) {
252- err := db .Query ().Exec (ctx , fmt .Sprintf (`
253- CREATE TABLE IF NOT EXISTS %s (
254- id Uint64,
255- value Utf8,
256- PRIMARY KEY (id)
257- )` , "`" + tableName + "`" ),
261+ t .RunSynced ("HappyWay" , func (t * xtest.SyncedTest ) {
262+ db , err := ydb .Open (ctx ,
263+ os .Getenv ("YDB_CONNECTION_STRING" ),
264+ ydb .WithStaticCredentials ("test" , "password" ),
258265 )
259266 require .NoError (t , err )
260- })
261- t .RunSynced ("Query" , func (t * xtest.SyncedTest ) {
262- row , err := db .Query ().QueryRow (ctx , `SELECT 1` )
263- require .NoError (t , err )
264- var v int
265- err = row .Scan (& v )
266- require .NoError (t , err )
267- })
268- t .RunSynced ("DescribeTable" , func (t * xtest.SyncedTest ) {
269- var d options.Description
270- err := db .Table ().Do (ctx , func (ctx context.Context , s table.Session ) error {
271- d , err = s .DescribeTable (ctx , tableName )
272- if err != nil {
273- return err
274- }
267+ defer func () {
268+ _ = db .Close (ctx )
269+ }()
270+ tableName := path .Join (db .Name (), t .Name (), "test" )
271+ t .RunSynced ("CreateTable" , func (t * xtest.SyncedTest ) {
272+ err := db .Query ().Exec (ctx , fmt .Sprintf (`
273+ CREATE TABLE IF NOT EXISTS %s (
274+ id Uint64,
275+ value Utf8,
276+ PRIMARY KEY (id)
277+ )` , "`" + tableName + "`" ),
278+ )
279+ require .NoError (t , err )
280+ })
281+ t .RunSynced ("Query" , func (t * xtest.SyncedTest ) {
282+ row , err := db .Query ().QueryRow (ctx , `SELECT 1` )
283+ require .NoError (t , err )
284+ var v int
285+ err = row .Scan (& v )
286+ require .NoError (t , err )
287+ })
288+ t .RunSynced ("DescribeTable" , func (t * xtest.SyncedTest ) {
289+ var d options.Description
290+ err := db .Table ().Do (ctx , func (ctx context.Context , s table.Session ) error {
291+ d , err = s .DescribeTable (ctx , tableName )
292+ if err != nil {
293+ return err
294+ }
275295
276- return nil
296+ return nil
297+ })
298+ require .NoError (t , err )
299+ require .Equal (t , "test" , d .Name )
300+ require .Equal (t , 2 , len (d .Columns ))
301+ require .Equal (t , "id" , d .Columns [0 ].Name )
302+ require .Equal (t , "value" , d .Columns [1 ].Name )
303+ require .Equal (t , []string {"id" }, d .PrimaryKey )
277304 })
278- require .NoError (t , err )
279- require .Equal (t , "test" , d .Name )
280- require .Equal (t , 2 , len (d .Columns ))
281- require .Equal (t , "id" , d .Columns [0 ].Name )
282- require .Equal (t , "value" , d .Columns [1 ].Name )
283- require .Equal (t , []string {"id" }, d .PrimaryKey )
305+ })
306+ t .RunSynced ("WrongLogin" , func (t * xtest.SyncedTest ) {
307+ db , err := ydb .Open (ctx ,
308+ os .Getenv ("YDB_CONNECTION_STRING" ),
309+ ydb .WithStaticCredentials ("wrong_user" , "password" ),
310+ )
311+ require .Error (t , err )
312+ require .Nil (t , db )
313+ require .True (t , credentials .IsAccessError (err ))
314+ })
315+ t .RunSynced ("WrongPassword" , func (t * xtest.SyncedTest ) {
316+ db , err := ydb .Open (ctx ,
317+ os .Getenv ("YDB_CONNECTION_STRING" ),
318+ ydb .WithStaticCredentials ("test" , "wrong_password" ),
319+ )
320+ require .Error (t , err )
321+ require .Nil (t , db )
322+ require .True (t , credentials .IsAccessError (err ))
284323 })
285324 })
286325 })
0 commit comments