28
28
#include "json-test-operations.h"
29
29
#include "json-test-monitoring.h"
30
30
#include "TestSuite.h"
31
+ #include "test-conveniences.h"
31
32
#include "test-libmongoc.h"
32
33
33
34
#ifdef _MSC_VER
@@ -1354,10 +1355,9 @@ set_uri_opts_from_bson (mongoc_uri_t *uri, const bson_t *opts)
1354
1355
}
1355
1356
}
1356
1357
1357
- static void
1358
- set_auto_encryption_opts (mongoc_client_t * client , bson_t * test )
1358
+ void
1359
+ set_auto_encryption_opts (mongoc_client_t * client , bson_t * opts )
1359
1360
{
1360
- bson_t opts ;
1361
1361
bson_iter_t iter ;
1362
1362
mongoc_auto_encryption_opts_t * auto_encryption_opts ;
1363
1363
bson_error_t error ;
@@ -1366,14 +1366,9 @@ set_auto_encryption_opts (mongoc_client_t *client, bson_t *test)
1366
1366
1367
1367
ASSERT (client );
1368
1368
1369
- if (!bson_has_field (test , "clientOptions.autoEncryptOpts" )) {
1370
- return ;
1371
- }
1372
-
1373
- bson_lookup_doc (test , "clientOptions.autoEncryptOpts" , & opts );
1374
1369
auto_encryption_opts = mongoc_auto_encryption_opts_new ();
1375
1370
1376
- if (bson_iter_init_find (& iter , & opts , "kmsProviders" )) {
1371
+ if (bson_iter_init_find (& iter , opts , "kmsProviders" )) {
1377
1372
bson_t kms_providers = BSON_INITIALIZER ;
1378
1373
bson_t tls_opts = BSON_INITIALIZER ;
1379
1374
bson_t tmp ;
@@ -1383,7 +1378,7 @@ set_auto_encryption_opts (mongoc_client_t *client, bson_t *test)
1383
1378
& tmp , & kms_providers , "aws" , "awsTemporary" , "awsTemporaryNoSessionToken" , "azure" , "gcp" , "kmip" , NULL );
1384
1379
1385
1380
/* AWS credentials are set from environment variables. */
1386
- if (bson_has_field (& opts , "kmsProviders.aws" )) {
1381
+ if (bson_has_field (opts , "kmsProviders.aws" )) {
1387
1382
char * const secret_access_key = test_framework_getenv ("MONGOC_TEST_AWS_SECRET_ACCESS_KEY" );
1388
1383
char * const access_key_id = test_framework_getenv ("MONGOC_TEST_AWS_ACCESS_KEY_ID" );
1389
1384
@@ -1408,9 +1403,9 @@ set_auto_encryption_opts (mongoc_client_t *client, bson_t *test)
1408
1403
bson_free (access_key_id );
1409
1404
}
1410
1405
1411
- const bool need_aws_with_session_token = bson_has_field (& opts , "kmsProviders.awsTemporary" );
1406
+ const bool need_aws_with_session_token = bson_has_field (opts , "kmsProviders.awsTemporary" );
1412
1407
const bool need_aws_with_temp_creds =
1413
- need_aws_with_session_token || bson_has_field (& opts , "kmsProviders.awsTemporaryNoSessionToken" );
1408
+ need_aws_with_session_token || bson_has_field (opts , "kmsProviders.awsTemporaryNoSessionToken" );
1414
1409
1415
1410
if (need_aws_with_temp_creds ) {
1416
1411
char * const secret_access_key = test_framework_getenv ("MONGOC_TEST_AWS_TEMP_SECRET_ACCESS_KEY" );
@@ -1449,7 +1444,7 @@ set_auto_encryption_opts (mongoc_client_t *client, bson_t *test)
1449
1444
bson_free (session_token );
1450
1445
}
1451
1446
1452
- if (bson_has_field (& opts , "kmsProviders.azure" )) {
1447
+ if (bson_has_field (opts , "kmsProviders.azure" )) {
1453
1448
char * azure_tenant_id ;
1454
1449
char * azure_client_id ;
1455
1450
char * azure_client_secret ;
@@ -1477,7 +1472,7 @@ set_auto_encryption_opts (mongoc_client_t *client, bson_t *test)
1477
1472
bson_free (azure_client_secret );
1478
1473
}
1479
1474
1480
- if (bson_has_field (& opts , "kmsProviders.gcp" )) {
1475
+ if (bson_has_field (opts , "kmsProviders.gcp" )) {
1481
1476
char * gcp_email ;
1482
1477
char * gcp_privatekey ;
1483
1478
@@ -1497,7 +1492,7 @@ set_auto_encryption_opts (mongoc_client_t *client, bson_t *test)
1497
1492
bson_free (gcp_privatekey );
1498
1493
}
1499
1494
1500
- if (bson_has_field (& opts , "kmsProviders.kmip" )) {
1495
+ if (bson_has_field (opts , "kmsProviders.kmip" )) {
1501
1496
char * kmip_tls_ca_file ;
1502
1497
char * kmip_tls_certificate_key_file ;
1503
1498
@@ -1527,23 +1522,23 @@ set_auto_encryption_opts (mongoc_client_t *client, bson_t *test)
1527
1522
bson_destroy (& tls_opts );
1528
1523
}
1529
1524
1530
- if (bson_iter_init_find (& iter , & opts , "schemaMap" )) {
1525
+ if (bson_iter_init_find (& iter , opts , "schemaMap" )) {
1531
1526
bson_t schema_map ;
1532
1527
1533
1528
bson_iter_bson (& iter , & schema_map );
1534
1529
mongoc_auto_encryption_opts_set_schema_map (auto_encryption_opts , & schema_map );
1535
1530
bson_destroy (& schema_map );
1536
1531
}
1537
1532
1538
- if (bson_iter_init_find (& iter , & opts , "bypassAutoEncryption" )) {
1533
+ if (bson_iter_init_find (& iter , opts , "bypassAutoEncryption" )) {
1539
1534
mongoc_auto_encryption_opts_set_bypass_auto_encryption (auto_encryption_opts , bson_iter_as_bool (& iter ));
1540
1535
}
1541
1536
1542
- if (bson_iter_init_find (& iter , & opts , "bypassQueryAnalysis" )) {
1537
+ if (bson_iter_init_find (& iter , opts , "bypassQueryAnalysis" )) {
1543
1538
mongoc_auto_encryption_opts_set_bypass_query_analysis (auto_encryption_opts , bson_iter_as_bool (& iter ));
1544
1539
}
1545
1540
1546
- if (bson_iter_init_find (& iter , & opts , "keyVaultNamespace" )) {
1541
+ if (bson_iter_init_find (& iter , opts , "keyVaultNamespace" )) {
1547
1542
const char * keyvault_ns ;
1548
1543
char * db_name ;
1549
1544
char * coll_name ;
@@ -1565,7 +1560,7 @@ set_auto_encryption_opts (mongoc_client_t *client, bson_t *test)
1565
1560
mongoc_auto_encryption_opts_set_keyvault_namespace (auto_encryption_opts , "keyvault" , "datakeys" );
1566
1561
}
1567
1562
1568
- if (bson_iter_init_find (& iter , & opts , "extra" )) {
1563
+ if (bson_iter_init_find (& iter , opts , "extra" )) {
1569
1564
bson_t tmp ;
1570
1565
1571
1566
bson_iter_bson (& iter , & tmp );
@@ -1574,7 +1569,7 @@ set_auto_encryption_opts (mongoc_client_t *client, bson_t *test)
1574
1569
bson_init (& extra );
1575
1570
}
1576
1571
1577
- if (bson_iter_init_find (& iter , & opts , "encryptedFieldsMap" )) {
1572
+ if (bson_iter_init_find (& iter , opts , "encryptedFieldsMap" )) {
1578
1573
BSON_ASSERT (BSON_ITER_HOLDS_DOCUMENT (& iter ));
1579
1574
bson_t efm ;
1580
1575
@@ -1596,7 +1591,7 @@ set_auto_encryption_opts (mongoc_client_t *client, bson_t *test)
1596
1591
bson_free (env_cryptSharedLibPath );
1597
1592
}
1598
1593
1599
- if (bson_iter_init_find (& iter , & opts , "keyExpirationMS" )) {
1594
+ if (bson_iter_init_find (& iter , opts , "keyExpirationMS" )) {
1600
1595
BSON_ASSERT (BSON_ITER_HOLDS_INT (& iter ));
1601
1596
const int expiration = bson_iter_as_int64 (& iter );
1602
1597
BSON_ASSERT (expiration > 0 );
@@ -1769,7 +1764,12 @@ run_json_general_test (const json_test_config_t *config)
1769
1764
MONGOC_WARNING ("Error in killAllSessions: %s" , error .message );
1770
1765
}
1771
1766
1772
- set_auto_encryption_opts (client , & test );
1767
+ if (bson_has_field (& test , "clientOptions.autoEncryptOpts" )) {
1768
+ bson_t opts ;
1769
+ bson_lookup_doc (& test , "clientOptions.autoEncryptOpts" , & opts );
1770
+ set_auto_encryption_opts (client , & opts );
1771
+ }
1772
+
1773
1773
/* Drop and recreate test database/collection if necessary. */
1774
1774
if (!test_framework_is_mongohouse ()) {
1775
1775
// mongohouse test user is not authorized to run `drop`.
0 commit comments