Skip to content

Commit aa5ad82

Browse files
committed
Fix check for whether crypt shared lib is available
Also add unit tests for isMongocryptdSpawningDisabled helper method JAVA-4739
1 parent 102a5ae commit aa5ad82

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

driver-core/src/main/com/mongodb/internal/capi/MongoCryptHelper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ private static BsonDocument toBsonDocument(final Map<String, Object> optionsMap)
140140

141141
public static boolean isMongocryptdSpawningDisabled(@Nullable final String cryptSharedLibVersion,
142142
final AutoEncryptionSettings settings) {
143-
boolean cryptSharedLibIsAvailable = cryptSharedLibVersion != null && cryptSharedLibVersion.isEmpty();
143+
boolean cryptSharedLibIsAvailable = cryptSharedLibVersion != null && !cryptSharedLibVersion.isEmpty();
144144
boolean cryptSharedLibRequired = (boolean) settings.getExtraOptions().getOrDefault("cryptSharedLibRequired", false);
145145
return settings.isBypassAutoEncryption() || settings.isBypassQueryAnalysis() || cryptSharedLibRequired || cryptSharedLibIsAvailable;
146146
}

driver-core/src/test/functional/com/mongodb/internal/capi/MongoCryptHelperTest.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,17 @@
2727
import java.util.HashMap;
2828
import java.util.Map;
2929

30+
import static com.mongodb.internal.capi.MongoCryptHelper.isMongocryptdSpawningDisabled;
3031
import static com.mongodb.internal.capi.MongoCryptHelper.validateRewrapManyDataKeyOptions;
3132
import static java.util.Collections.emptyList;
3233
import static java.util.Collections.emptyMap;
3334
import static java.util.Collections.singletonList;
35+
import static java.util.Collections.singletonMap;
3436
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
3537
import static org.junit.jupiter.api.Assertions.assertEquals;
38+
import static org.junit.jupiter.api.Assertions.assertFalse;
3639
import static org.junit.jupiter.api.Assertions.assertThrows;
40+
import static org.junit.jupiter.api.Assertions.assertTrue;
3741

3842
public class MongoCryptHelperTest {
3943

@@ -104,6 +108,29 @@ public void validateRewrapManyDataKeyOptionsTest() {
104108
assertThrows(MongoClientException.class, () -> validateRewrapManyDataKeyOptions(new RewrapManyDataKeyOptions().masterKey(new BsonDocument())));
105109
}
106110

111+
@Test
112+
public void isMongocryptdSpawningDisabledTest() {
113+
assertTrue(isMongocryptdSpawningDisabled(null,
114+
initializeAutoEncryptionSettingsBuilder().bypassAutoEncryption(true).build()));
115+
assertTrue(isMongocryptdSpawningDisabled(null,
116+
initializeAutoEncryptionSettingsBuilder().bypassQueryAnalysis(true).build()));
117+
assertTrue(isMongocryptdSpawningDisabled(null,
118+
initializeAutoEncryptionSettingsBuilder().extraOptions(singletonMap("cryptSharedLibRequired", true)).build()));
119+
assertTrue(isMongocryptdSpawningDisabled("/path/to/shared/lib.so",
120+
initializeAutoEncryptionSettingsBuilder().build()));
121+
assertFalse(isMongocryptdSpawningDisabled(null,
122+
initializeAutoEncryptionSettingsBuilder().build()));
123+
assertFalse(isMongocryptdSpawningDisabled("",
124+
initializeAutoEncryptionSettingsBuilder().build()));
125+
}
126+
127+
private static AutoEncryptionSettings.Builder initializeAutoEncryptionSettingsBuilder() {
128+
AutoEncryptionSettings.Builder builder = AutoEncryptionSettings.builder()
129+
.keyVaultNamespace("test.vault")
130+
.kmsProviders(singletonMap("local", singletonMap("key", new byte[96])));
131+
return builder;
132+
}
133+
107134
void assertMongoCryptOptions(final MongoCryptOptions expected, final MongoCryptOptions actual) {
108135
assertEquals(expected.getAwsKmsProviderOptions(), actual.getAwsKmsProviderOptions(), "AwsKmsProviderOptions not equal");
109136
assertEquals(expected.getEncryptedFieldsMap(), actual.getEncryptedFieldsMap(), "EncryptedFieldsMap not equal");

0 commit comments

Comments
 (0)