@@ -358,20 +358,29 @@ TEST_F(Sess, ssl_session)
358
358
359
359
SKIP_IF_NO_XPLUGIN;
360
360
361
+ // Test if ssl is enabled using cipher
362
+ auto check_ssl_impl = [](mysqlx::XSession &sess, bool enable, int line)
361
363
{
362
- mysqlx::XSession sess (SessionSettings::PORT, get_port (),
363
- SessionSettings::USER,get_user (),
364
- SessionSettings::PWD, get_password () ? get_password () : NULL ,
365
- SessionSettings::SSL_ENABLE, true );
366
-
367
364
SqlResult res = sess.bindToDefaultShard ().sql (" SHOW STATUS LIKE 'mysqlx_ssl_cipher'" ).execute ();
368
365
369
366
auto row = res.fetchOne ();
370
- cout << row[0 ] << " :" << row[1 ] << endl;
367
+ cout << " Line " << line << " : " << row[0 ] << " :" << row[1 ] << endl;
371
368
372
369
string cipher = row[1 ];
373
370
374
- EXPECT_FALSE (cipher.empty ());
371
+ EXPECT_EQ (enable, !cipher.empty ());
372
+ };
373
+
374
+ #define check_ssl (x,y ) check_ssl_impl(x, y, __LINE__)
375
+
376
+
377
+ {
378
+ mysqlx::XSession sess (SessionSettings::PORT, get_port (),
379
+ SessionSettings::USER,get_user (),
380
+ SessionSettings::PWD, get_password () ? get_password () : nullptr ,
381
+ SessionSettings::SSL_ENABLE, true );
382
+
383
+ check_ssl (sess, true );
375
384
}
376
385
377
386
{
@@ -380,14 +389,7 @@ TEST_F(Sess, ssl_session)
380
389
SessionSettings::PWD, get_password () ? get_password () : nullptr ,
381
390
SessionSettings::SSL_ENABLE, false );
382
391
383
- SqlResult res = sess.bindToDefaultShard ().sql (" SHOW STATUS LIKE 'mysqlx_ssl_cipher'" ).execute ();
384
-
385
- auto row = res.fetchOne ();
386
- cout << row[0 ] << " :" << row[1 ] << endl;
387
-
388
- string cipher = row[1 ];
389
-
390
- EXPECT_TRUE (cipher.empty ());
392
+ check_ssl (sess, false );
391
393
}
392
394
393
395
// Using URI
@@ -404,31 +406,17 @@ TEST_F(Sess, ssl_session)
404
406
// URI without ssl_enable
405
407
{
406
408
mysqlx::XSession sess (uri.str ());
407
-
408
- SqlResult res = sess.bindToDefaultShard ().sql (" SHOW STATUS LIKE 'mysqlx_ssl_cipher'" ).execute ();
409
-
410
- auto row = res.fetchOne ();
411
- cout << row[0 ] << " :" << row[1 ] << endl;
412
-
413
- string cipher = row[1 ];
414
-
415
- EXPECT_TRUE (cipher.empty ());
409
+ check_ssl (sess, false );
416
410
}
417
411
418
412
419
- // Enable SSL
420
- uri << " /?ssl-enable" ;
421
413
{
422
- mysqlx::XSession sess (uri.str ());
423
-
424
- SqlResult res = sess.bindToDefaultShard ().sql (" SHOW STATUS LIKE 'mysqlx_ssl_cipher'" ).execute ();
425
-
426
- auto row = res.fetchOne ();
427
- cout << row[0 ] << " :" << row[1 ] << endl;
414
+ std::stringstream uri_ssl;
415
+ // Enable SSL
416
+ uri_ssl << uri.str () << " /?ssl-enable" ;
428
417
429
- string cipher = row[1 ];
430
-
431
- EXPECT_FALSE (cipher.empty ());
418
+ mysqlx::XSession sess (uri_ssl.str ());
419
+ check_ssl (sess, true );
432
420
}
433
421
434
422
@@ -437,7 +425,7 @@ TEST_F(Sess, ssl_session)
437
425
EXPECT_THROW (
438
426
mysqlx::XSession sess (SessionSettings::PORT, get_port (),
439
427
SessionSettings::USER,get_user (),
440
- SessionSettings::PWD, get_password () ? get_password () : NULL ,
428
+ SessionSettings::PWD, get_password () ? get_password () : nullptr ,
441
429
SessionSettings::SSL_ENABLE, true ,
442
430
SessionSettings::SSL_CA, " unknown" )
443
431
, mysqlx::Error);
@@ -448,7 +436,7 @@ TEST_F(Sess, ssl_session)
448
436
// using wrong ssl-ca and ssl-ca-path on URI
449
437
{
450
438
std::stringstream bad_uri;
451
- bad_uri << uri.str () << " & ssl-ca=" << " unknown.file" << " &ssl-ca-path= " << " unknown.path " ;
439
+ bad_uri << uri.str () << " /? ssl-ca=" << " unknown.file" ;
452
440
453
441
EXPECT_THROW (mysqlx::XSession sess (bad_uri.str ()), mysqlx::Error);
454
442
}
@@ -482,19 +470,46 @@ TEST_F(Sess, ssl_session)
482
470
ssl_ca = datadir + ssl_ca;
483
471
}
484
472
485
- uri << " & ssl-ca=" << ssl_ca;
473
+ uri << " /? ssl-ca=" << ssl_ca;
486
474
487
475
{
488
476
mysqlx::XSession sess (uri.str ());
477
+ check_ssl (sess, true );
478
+ }
489
479
490
- SqlResult res = sess.bindToDefaultShard ().sql (" SHOW STATUS LIKE 'mysqlx_ssl_cipher'" ).execute ();
480
+ // using ssl-enable and ssl-ca as SessionSettings
481
+ {
482
+ mysqlx::XSession sess (SessionSettings::PORT, get_port (),
483
+ SessionSettings::USER,get_user (),
484
+ SessionSettings::PWD, get_password () ? get_password () : nullptr ,
485
+ SessionSettings::SSL_ENABLE, true ,
486
+ SessionSettings::SSL_CA, ssl_ca);
491
487
492
- auto row = res.fetchOne ();
493
- cout << row[0 ] << " :" << row[1 ] << endl;
488
+ check_ssl (sess, true );
494
489
495
- string cipher = row[1 ];
490
+ }
491
+
492
+ // using ssl-ca as SessionSettings
493
+ {
494
+ mysqlx::XSession sess (SessionSettings::PORT, get_port (),
495
+ SessionSettings::USER,get_user (),
496
+ SessionSettings::PWD, get_password () ? get_password () : nullptr ,
497
+ SessionSettings::SSL_CA, ssl_ca);
498
+
499
+ check_ssl (sess, true );
500
+
501
+ }
502
+
503
+ // using ssl-ca but ssl-enable = false on SessionSettings
504
+ {
505
+ mysqlx::XSession sess (SessionSettings::PORT, get_port (),
506
+ SessionSettings::USER,get_user (),
507
+ SessionSettings::PWD, get_password () ? get_password () : nullptr ,
508
+ SessionSettings::SSL_ENABLE, false ,
509
+ SessionSettings::SSL_CA, ssl_ca);
510
+
511
+ check_ssl (sess, false );
496
512
497
- EXPECT_FALSE (cipher.empty ());
498
513
}
499
514
500
515
// using ssl-enable and ssl-ca as SessionSettings
0 commit comments