mongo 2.11.6 → 2.12.0.rc0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +2 -2
  3. data.tar.gz.sig +0 -0
  4. data/CONTRIBUTING.md +1 -1
  5. data/lib/mongo.rb +3 -0
  6. data/lib/mongo/address.rb +13 -2
  7. data/lib/mongo/auth.rb +1 -0
  8. data/lib/mongo/auth/credential_cache.rb +51 -0
  9. data/lib/mongo/auth/scram/conversation.rb +20 -16
  10. data/lib/mongo/auth/user.rb +0 -8
  11. data/lib/mongo/auth/user/view.rb +4 -4
  12. data/lib/mongo/background_thread.rb +1 -1
  13. data/lib/mongo/bulk_write.rb +5 -5
  14. data/lib/mongo/client.rb +126 -11
  15. data/lib/mongo/client_encryption.rb +103 -0
  16. data/lib/mongo/cluster.rb +2 -2
  17. data/lib/mongo/cluster/reapers/cursor_reaper.rb +18 -6
  18. data/lib/mongo/cluster/sdam_flow.rb +54 -58
  19. data/lib/mongo/cluster/srv_monitor.rb +1 -1
  20. data/lib/mongo/collection.rb +3 -3
  21. data/lib/mongo/collection/view.rb +1 -1
  22. data/lib/mongo/collection/view/aggregation.rb +1 -1
  23. data/lib/mongo/collection/view/change_stream.rb +12 -3
  24. data/lib/mongo/collection/view/iterable.rb +14 -5
  25. data/lib/mongo/collection/view/map_reduce.rb +2 -2
  26. data/lib/mongo/collection/view/readable.rb +7 -9
  27. data/lib/mongo/collection/view/writable.rb +7 -7
  28. data/lib/mongo/crypt.rb +33 -0
  29. data/lib/mongo/crypt/auto_decryption_context.rb +42 -0
  30. data/lib/mongo/crypt/auto_encrypter.rb +169 -0
  31. data/lib/mongo/crypt/auto_encryption_context.rb +44 -0
  32. data/lib/mongo/crypt/binary.rb +155 -0
  33. data/lib/mongo/crypt/binding.rb +1162 -0
  34. data/lib/mongo/crypt/context.rb +135 -0
  35. data/lib/mongo/crypt/data_key_context.rb +162 -0
  36. data/lib/mongo/crypt/encryption_io.rb +283 -0
  37. data/lib/mongo/crypt/explicit_decryption_context.rb +40 -0
  38. data/lib/mongo/crypt/explicit_encrypter.rb +117 -0
  39. data/lib/mongo/crypt/explicit_encryption_context.rb +89 -0
  40. data/lib/mongo/crypt/handle.rb +293 -0
  41. data/lib/mongo/crypt/hooks.rb +90 -0
  42. data/lib/mongo/crypt/kms_context.rb +67 -0
  43. data/lib/mongo/crypt/status.rb +131 -0
  44. data/lib/mongo/cursor.rb +64 -32
  45. data/lib/mongo/database.rb +13 -6
  46. data/lib/mongo/database/view.rb +13 -4
  47. data/lib/mongo/dbref.rb +9 -2
  48. data/lib/mongo/error.rb +5 -1
  49. data/lib/mongo/error/crypt_error.rb +31 -0
  50. data/lib/mongo/error/{failed_stringprep_validation.rb → failed_string_prep_validation.rb} +0 -0
  51. data/lib/mongo/error/invalid_cursor_operation.rb +27 -0
  52. data/lib/mongo/error/kms_error.rb +22 -0
  53. data/lib/mongo/error/max_bson_size.rb +14 -3
  54. data/lib/mongo/error/mongocryptd_spawn_error.rb +22 -0
  55. data/lib/mongo/error/no_server_available.rb +8 -3
  56. data/lib/mongo/error/operation_failure.rb +1 -0
  57. data/lib/mongo/grid/file.rb +0 -5
  58. data/lib/mongo/grid/file/chunk.rb +0 -2
  59. data/lib/mongo/grid/file/info.rb +2 -1
  60. data/lib/mongo/grid/fs_bucket.rb +13 -15
  61. data/lib/mongo/grid/stream/write.rb +3 -9
  62. data/lib/mongo/index/view.rb +3 -3
  63. data/lib/mongo/monitoring/event/command_started.rb +6 -1
  64. data/lib/mongo/operation/collections_info.rb +6 -3
  65. data/lib/mongo/operation/delete/op_msg.rb +1 -1
  66. data/lib/mongo/operation/find/op_msg.rb +4 -1
  67. data/lib/mongo/operation/get_more/op_msg.rb +4 -1
  68. data/lib/mongo/operation/insert/command.rb +2 -2
  69. data/lib/mongo/operation/insert/legacy.rb +2 -2
  70. data/lib/mongo/operation/insert/op_msg.rb +3 -3
  71. data/lib/mongo/operation/result.rb +36 -27
  72. data/lib/mongo/operation/shared/executable.rb +10 -8
  73. data/lib/mongo/operation/shared/executable_no_validate.rb +2 -2
  74. data/lib/mongo/operation/shared/op_msg_or_command.rb +2 -2
  75. data/lib/mongo/operation/shared/op_msg_or_find_command.rb +2 -2
  76. data/lib/mongo/operation/shared/op_msg_or_list_indexes_command.rb +2 -2
  77. data/lib/mongo/operation/shared/write.rb +17 -10
  78. data/lib/mongo/operation/update/op_msg.rb +1 -1
  79. data/lib/mongo/protocol/compressed.rb +6 -5
  80. data/lib/mongo/protocol/insert.rb +3 -1
  81. data/lib/mongo/protocol/message.rb +72 -8
  82. data/lib/mongo/protocol/msg.rb +191 -37
  83. data/lib/mongo/protocol/query.rb +7 -9
  84. data/lib/mongo/protocol/serializers.rb +6 -2
  85. data/lib/mongo/server.rb +10 -4
  86. data/lib/mongo/server/connection.rb +20 -9
  87. data/lib/mongo/server/connection_base.rb +81 -12
  88. data/lib/mongo/server/connection_common.rb +61 -0
  89. data/lib/mongo/server/connection_pool.rb +37 -1
  90. data/lib/mongo/server/description.rb +9 -11
  91. data/lib/mongo/server/monitor.rb +2 -0
  92. data/lib/mongo/server/monitor/connection.rb +3 -18
  93. data/lib/mongo/server/pending_connection.rb +2 -1
  94. data/lib/mongo/session.rb +2 -2
  95. data/lib/mongo/session/session_pool.rb +8 -3
  96. data/lib/mongo/socket.rb +29 -16
  97. data/lib/mongo/socket/ssl.rb +23 -8
  98. data/lib/mongo/socket/tcp.rb +12 -3
  99. data/lib/mongo/timeout.rb +49 -0
  100. data/lib/mongo/uri.rb +30 -1
  101. data/lib/mongo/version.rb +1 -1
  102. data/mongo.gemspec +1 -1
  103. data/spec/README.md +134 -7
  104. data/spec/integration/auth_spec.rb +53 -0
  105. data/spec/integration/{client_options_spec.rb → client_authentication_options_spec.rb} +10 -10
  106. data/spec/integration/client_construction_spec.rb +76 -1
  107. data/spec/integration/client_side_encryption/auto_encryption_bulk_writes_spec.rb +351 -0
  108. data/spec/integration/client_side_encryption/auto_encryption_command_monitoring_spec.rb +301 -0
  109. data/spec/integration/client_side_encryption/auto_encryption_mongocryptd_spawn_spec.rb +71 -0
  110. data/spec/integration/client_side_encryption/auto_encryption_old_wire_version_spec.rb +76 -0
  111. data/spec/integration/client_side_encryption/auto_encryption_reconnect_spec.rb +216 -0
  112. data/spec/integration/client_side_encryption/auto_encryption_spec.rb +600 -0
  113. data/spec/integration/client_side_encryption/bson_size_limit_spec.rb +183 -0
  114. data/spec/integration/client_side_encryption/bypass_mongocryptd_spawn_spec.rb +74 -0
  115. data/spec/integration/client_side_encryption/client_close_spec.rb +59 -0
  116. data/spec/integration/client_side_encryption/corpus_spec.rb +228 -0
  117. data/spec/integration/client_side_encryption/custom_endpoint_spec.rb +132 -0
  118. data/spec/integration/client_side_encryption/data_key_spec.rb +163 -0
  119. data/spec/integration/client_side_encryption/explicit_encryption_spec.rb +114 -0
  120. data/spec/integration/client_side_encryption/external_key_vault_spec.rb +137 -0
  121. data/spec/integration/client_side_encryption/views_spec.rb +42 -0
  122. data/spec/integration/client_update_spec.rb +120 -0
  123. data/spec/integration/command_monitoring_spec.rb +3 -1
  124. data/spec/integration/command_spec.rb +44 -10
  125. data/spec/integration/connection_spec.rb +57 -0
  126. data/spec/integration/reconnect_spec.rb +7 -6
  127. data/spec/integration/size_limit_spec.rb +94 -0
  128. data/spec/integration/srv_monitoring_spec.rb +14 -6
  129. data/spec/lite_spec_helper.rb +31 -22
  130. data/spec/mongo/auth/cr_spec.rb +8 -0
  131. data/spec/mongo/auth/ldap_spec.rb +5 -1
  132. data/spec/mongo/auth/scram/conversation_spec.rb +5 -6
  133. data/spec/mongo/auth/scram/negotiation_spec.rb +74 -75
  134. data/spec/mongo/auth/scram_spec.rb +45 -35
  135. data/spec/mongo/auth/x509_spec.rb +5 -1
  136. data/spec/mongo/client_construction_spec.rb +206 -3
  137. data/spec/mongo/client_encryption_spec.rb +408 -0
  138. data/spec/mongo/cluster/cursor_reaper_spec.rb +12 -8
  139. data/spec/mongo/cluster/socket_reaper_spec.rb +14 -3
  140. data/spec/mongo/collection/view/aggregation_spec.rb +0 -2
  141. data/spec/mongo/collection/view/change_stream_spec.rb +7 -7
  142. data/spec/mongo/collection/view/map_reduce_spec.rb +3 -3
  143. data/spec/mongo/collection/view_spec.rb +1 -1
  144. data/spec/mongo/collection_spec.rb +4 -33
  145. data/spec/mongo/crypt/auto_decryption_context_spec.rb +90 -0
  146. data/spec/mongo/crypt/auto_encrypter_spec.rb +182 -0
  147. data/spec/mongo/crypt/auto_encryption_context_spec.rb +107 -0
  148. data/spec/mongo/crypt/binary_spec.rb +115 -0
  149. data/spec/mongo/crypt/binding/binary_spec.rb +56 -0
  150. data/spec/mongo/crypt/binding/context_spec.rb +257 -0
  151. data/spec/mongo/crypt/binding/helpers_spec.rb +46 -0
  152. data/spec/mongo/crypt/binding/mongocrypt_spec.rb +144 -0
  153. data/spec/mongo/crypt/binding/status_spec.rb +99 -0
  154. data/spec/mongo/crypt/binding/version_spec.rb +22 -0
  155. data/spec/mongo/crypt/binding_unloaded_spec.rb +20 -0
  156. data/spec/mongo/crypt/data_key_context_spec.rb +213 -0
  157. data/spec/mongo/crypt/encryption_io_spec.rb +136 -0
  158. data/spec/mongo/crypt/explicit_decryption_context_spec.rb +72 -0
  159. data/spec/mongo/crypt/explicit_encryption_context_spec.rb +170 -0
  160. data/spec/mongo/crypt/handle_spec.rb +198 -0
  161. data/spec/mongo/crypt/helpers/mongo_crypt_spec_helper.rb +108 -0
  162. data/spec/mongo/crypt/status_spec.rb +152 -0
  163. data/spec/mongo/cursor_spec.rb +24 -4
  164. data/spec/mongo/database_spec.rb +20 -0
  165. data/spec/mongo/error/crypt_error_spec.rb +26 -0
  166. data/spec/mongo/error/max_bson_size_spec.rb +35 -0
  167. data/spec/mongo/error/no_server_available_spec.rb +11 -1
  168. data/spec/mongo/error/operation_failure_spec.rb +6 -6
  169. data/spec/mongo/operation/aggregate_spec.rb +1 -1
  170. data/spec/mongo/operation/collections_info_spec.rb +1 -1
  171. data/spec/mongo/operation/command_spec.rb +3 -3
  172. data/spec/mongo/operation/create_index_spec.rb +3 -3
  173. data/spec/mongo/operation/create_user_spec.rb +3 -3
  174. data/spec/mongo/operation/delete/bulk_spec.rb +6 -6
  175. data/spec/mongo/operation/delete/op_msg_spec.rb +1 -6
  176. data/spec/mongo/operation/delete_spec.rb +7 -7
  177. data/spec/mongo/operation/drop_index_spec.rb +2 -2
  178. data/spec/mongo/operation/find/legacy_spec.rb +1 -1
  179. data/spec/mongo/operation/get_more_spec.rb +1 -1
  180. data/spec/mongo/operation/indexes_spec.rb +1 -1
  181. data/spec/mongo/operation/insert/bulk_spec.rb +7 -7
  182. data/spec/mongo/operation/insert/op_msg_spec.rb +3 -6
  183. data/spec/mongo/operation/insert_spec.rb +12 -12
  184. data/spec/mongo/operation/map_reduce_spec.rb +2 -2
  185. data/spec/mongo/operation/remove_user_spec.rb +3 -3
  186. data/spec/mongo/operation/update/bulk_spec.rb +6 -6
  187. data/spec/mongo/operation/update/op_msg_spec.rb +3 -6
  188. data/spec/mongo/operation/update_spec.rb +7 -7
  189. data/spec/mongo/operation/update_user_spec.rb +1 -1
  190. data/spec/mongo/protocol/compressed_spec.rb +2 -3
  191. data/spec/mongo/protocol/delete_spec.rb +9 -8
  192. data/spec/mongo/protocol/get_more_spec.rb +9 -8
  193. data/spec/mongo/protocol/insert_spec.rb +9 -8
  194. data/spec/mongo/protocol/kill_cursors_spec.rb +6 -5
  195. data/spec/mongo/protocol/msg_spec.rb +57 -53
  196. data/spec/mongo/protocol/query_spec.rb +12 -12
  197. data/spec/mongo/protocol/registry_spec.rb +1 -1
  198. data/spec/mongo/protocol/reply_spec.rb +1 -1
  199. data/spec/mongo/protocol/update_spec.rb +10 -9
  200. data/spec/mongo/server/connection_pool_spec.rb +1 -1
  201. data/spec/mongo/server/connection_spec.rb +28 -7
  202. data/spec/mongo/socket_spec.rb +1 -1
  203. data/spec/mongo/timeout_spec.rb +85 -0
  204. data/spec/mongo/uri/srv_protocol_spec.rb +2 -2
  205. data/spec/mongo/uri_spec.rb +52 -5
  206. data/spec/mongo/write_concern_spec.rb +13 -1
  207. data/spec/{support → runners}/auth.rb +14 -1
  208. data/spec/{support → runners}/change_streams.rb +1 -1
  209. data/spec/{support → runners}/change_streams/operation.rb +0 -0
  210. data/spec/{support → runners}/cmap.rb +1 -1
  211. data/spec/{support → runners}/cmap/verifier.rb +0 -0
  212. data/spec/{support → runners}/command_monitoring.rb +0 -0
  213. data/spec/runners/connection_string.rb +358 -4
  214. data/spec/{support → runners}/crud.rb +9 -9
  215. data/spec/{support → runners}/crud/context.rb +0 -0
  216. data/spec/{support → runners}/crud/operation.rb +7 -3
  217. data/spec/{support → runners}/crud/outcome.rb +0 -0
  218. data/spec/{support → runners}/crud/requirement.rb +1 -1
  219. data/spec/{support → runners}/crud/spec.rb +12 -1
  220. data/spec/{support → runners}/crud/test.rb +0 -0
  221. data/spec/{support → runners}/crud/test_base.rb +0 -0
  222. data/spec/{support → runners}/crud/verifier.rb +10 -12
  223. data/spec/{support → runners}/gridfs.rb +0 -0
  224. data/spec/{support → runners}/sdam_monitoring.rb +0 -0
  225. data/spec/{support → runners}/server_discovery_and_monitoring.rb +0 -0
  226. data/spec/{support → runners}/server_selection.rb +0 -0
  227. data/spec/{support → runners}/server_selection_rtt.rb +0 -0
  228. data/spec/{support → runners}/transactions.rb +4 -4
  229. data/spec/{support → runners}/transactions/context.rb +0 -0
  230. data/spec/{support → runners}/transactions/operation.rb +0 -0
  231. data/spec/{support → runners}/transactions/spec.rb +0 -0
  232. data/spec/{support → runners}/transactions/test.rb +37 -5
  233. data/spec/spec_helper.rb +0 -5
  234. data/spec/spec_tests/auth_spec.rb +3 -3
  235. data/spec/spec_tests/client_side_encryption_spec.rb +13 -0
  236. data/spec/spec_tests/connection_string_spec.rb +1 -1
  237. data/spec/spec_tests/data/auth/connection-string.yml +13 -0
  238. data/spec/spec_tests/data/client_side_encryption/aggregate.yml +134 -0
  239. data/spec/spec_tests/data/client_side_encryption/badQueries.yml +526 -0
  240. data/spec/spec_tests/data/client_side_encryption/badSchema.yml +73 -0
  241. data/spec/spec_tests/data/client_side_encryption/basic.yml +116 -0
  242. data/spec/spec_tests/data/client_side_encryption/bulk.yml +85 -0
  243. data/spec/spec_tests/data/client_side_encryption/bypassAutoEncryption.yml +100 -0
  244. data/spec/spec_tests/data/client_side_encryption/bypassedCommand.yml +42 -0
  245. data/spec/spec_tests/data/client_side_encryption/count.yml +61 -0
  246. data/spec/spec_tests/data/client_side_encryption/countDocuments.yml +59 -0
  247. data/spec/spec_tests/data/client_side_encryption/delete.yml +105 -0
  248. data/spec/spec_tests/data/client_side_encryption/distinct.yml +73 -0
  249. data/spec/spec_tests/data/client_side_encryption/explain.yml +64 -0
  250. data/spec/spec_tests/data/client_side_encryption/find.yml +119 -0
  251. data/spec/spec_tests/data/client_side_encryption/findOneAndDelete.yml +57 -0
  252. data/spec/spec_tests/data/client_side_encryption/findOneAndReplace.yml +57 -0
  253. data/spec/spec_tests/data/client_side_encryption/findOneAndUpdate.yml +57 -0
  254. data/spec/spec_tests/data/client_side_encryption/getMore.yml +68 -0
  255. data/spec/spec_tests/data/client_side_encryption/insert.yml +102 -0
  256. data/spec/spec_tests/data/client_side_encryption/keyAltName.yml +71 -0
  257. data/spec/spec_tests/data/client_side_encryption/localKMS.yml +54 -0
  258. data/spec/spec_tests/data/client_side_encryption/localSchema.yml +72 -0
  259. data/spec/spec_tests/data/client_side_encryption/malformedCiphertext.yml +69 -0
  260. data/spec/spec_tests/data/client_side_encryption/maxWireVersion.yml +20 -0
  261. data/spec/spec_tests/data/client_side_encryption/missingKey.yml +49 -0
  262. data/spec/spec_tests/data/client_side_encryption/replaceOne.yml +61 -0
  263. data/spec/spec_tests/data/client_side_encryption/types.yml +527 -0
  264. data/spec/spec_tests/data/client_side_encryption/unsupportedCommand.yml +25 -0
  265. data/spec/spec_tests/data/client_side_encryption/updateMany.yml +77 -0
  266. data/spec/spec_tests/data/client_side_encryption/updateOne.yml +168 -0
  267. data/spec/spec_tests/data/read_write_concern/connection-string/write-concern.yml +1 -4
  268. data/spec/spec_tests/data/retryable_writes/insertOne-serverErrors.yml +21 -0
  269. data/spec/spec_tests/data/sdam/rs/incompatible_ghost.yml +2 -4
  270. data/spec/spec_tests/data/sdam/rs/incompatible_other.yml +1 -1
  271. data/spec/spec_tests/data/sdam/rs/primary_mismatched_me_not_removed.yml +73 -0
  272. data/spec/spec_tests/data/sdam/rs/primary_to_no_primary_mismatched_me.yml +1 -2
  273. data/spec/spec_tests/data/sdam/rs/repeated.yml +101 -0
  274. data/spec/spec_tests/data/sdam/rs/{primary_address_change.yml → ruby_primary_address_change.yml} +2 -0
  275. data/spec/spec_tests/data/sdam/rs/{secondary_wrong_set_name_with_primary_second.yml → ruby_secondary_wrong_set_name_with_primary_second.yml} +0 -0
  276. data/spec/spec_tests/data/sdam/sharded/ruby_discovered_single_mongos.yml +27 -0
  277. data/spec/spec_tests/data/sdam/sharded/{primary_address_change.yml → ruby_primary_different_address.yml} +1 -1
  278. data/spec/spec_tests/data/sdam/sharded/{primary_mismatched_me.yml → ruby_primary_mismatched_me.yml} +1 -1
  279. data/spec/spec_tests/data/sdam/single/{primary_address_change.yml → ruby_primary_different_address.yml} +1 -1
  280. data/spec/spec_tests/data/sdam/single/{primary_mismatched_me.yml → ruby_primary_mismatched_me.yml} +1 -1
  281. data/spec/spec_tests/data/sdam_monitoring/{replica_set_with_primary_change.yml → replica_set_primary_address_change.yml} +27 -5
  282. data/spec/spec_tests/data/sdam_monitoring/replica_set_with_me_mismatch.yml +26 -74
  283. data/spec/spec_tests/data/sdam_monitoring/replica_set_with_removal.yml +20 -16
  284. data/spec/spec_tests/data/sdam_monitoring/standalone_suppress_equal_description_changes.yml +73 -0
  285. data/spec/spec_tests/data/transactions/pin-mongos.yml +2 -3
  286. data/spec/spec_tests/data/uri_options/auth-options.yml +10 -0
  287. data/spec/spec_tests/data/uri_options/tls-options.yml +75 -4
  288. data/spec/spec_tests/read_write_concern_connection_string_spec.rb +1 -1
  289. data/spec/spec_tests/uri_options_spec.rb +6 -8
  290. data/spec/stress/connection_pool_timing_spec.rb +6 -3
  291. data/spec/support/certificates/README.md +4 -0
  292. data/spec/support/certificates/server-second-level-bundle.pem +77 -77
  293. data/spec/support/certificates/server-second-level.crt +52 -52
  294. data/spec/support/certificates/server-second-level.key +25 -25
  295. data/spec/support/certificates/server-second-level.pem +77 -77
  296. data/spec/support/client_registry.rb +19 -3
  297. data/spec/support/cluster_config.rb +9 -1
  298. data/spec/support/common_shortcuts.rb +12 -0
  299. data/spec/support/constraints.rb +16 -0
  300. data/spec/support/crypt.rb +140 -0
  301. data/spec/support/crypt/corpus/corpus-key-aws.json +33 -0
  302. data/spec/support/crypt/corpus/corpus-key-local.json +31 -0
  303. data/spec/support/crypt/corpus/corpus-schema.json +2057 -0
  304. data/spec/support/crypt/corpus/corpus.json +3657 -0
  305. data/spec/support/crypt/corpus/corpus_encrypted.json +4152 -0
  306. data/spec/support/crypt/data_keys/key_document_aws.json +34 -0
  307. data/spec/support/crypt/data_keys/key_document_local.json +31 -0
  308. data/spec/support/crypt/external/external-key.json +31 -0
  309. data/spec/support/crypt/external/external-schema.json +19 -0
  310. data/spec/support/crypt/limits/limits-doc.json +102 -0
  311. data/spec/support/crypt/limits/limits-key.json +31 -0
  312. data/spec/support/crypt/limits/limits-schema.json +1405 -0
  313. data/spec/support/crypt/schema_maps/schema_map_aws.json +17 -0
  314. data/spec/support/crypt/schema_maps/schema_map_aws_key_alt_names.json +12 -0
  315. data/spec/support/crypt/schema_maps/schema_map_local.json +18 -0
  316. data/spec/support/crypt/schema_maps/schema_map_local_key_alt_names.json +12 -0
  317. data/spec/support/lite_constraints.rb +17 -1
  318. data/spec/support/matchers.rb +19 -0
  319. data/spec/support/shared/protocol.rb +2 -0
  320. data/spec/support/spec_config.rb +43 -13
  321. data/spec/support/utils.rb +132 -10
  322. metadata +277 -81
  323. metadata.gz.sig +0 -0
  324. data/spec/integration/grid_fs_bucket_spec.rb +0 -48
  325. data/spec/integration/zlib_compression_spec.rb +0 -25
  326. data/spec/spec_tests/data/sdam/sharded/single_mongos.yml +0 -33
  327. data/spec/support/connection_string.rb +0 -354
@@ -0,0 +1,17 @@
1
+ {
2
+ "properties": {
3
+ "ssn": {
4
+ "encrypt": {
5
+ "keyId": [{
6
+ "$binary": {
7
+ "base64": "AWSAAAAAAAAAAAAAAAAAAA==",
8
+ "subType": "04"
9
+ }
10
+ }],
11
+ "bsonType": "string",
12
+ "algorithm": "AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic"
13
+ }
14
+ }
15
+ },
16
+ "bsonType": "object"
17
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "properties": {
3
+ "ssn": {
4
+ "encrypt": {
5
+ "keyId": "/altname",
6
+ "bsonType": "string",
7
+ "algorithm": "AEAD_AES_256_CBC_HMAC_SHA_512-Random"
8
+ }
9
+ }
10
+ },
11
+ "bsonType": "object"
12
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "properties": {
3
+ "ssn": {
4
+ "encrypt": {
5
+ "keyId": [{
6
+ "$binary": {
7
+ "base64": "LOCALAAAAAAAAAAAAAAAAA==",
8
+ "subType": "04"
9
+
10
+ }
11
+ }],
12
+ "bsonType": "string",
13
+ "algorithm": "AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic"
14
+ }
15
+ }
16
+ },
17
+ "bsonType": "object"
18
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "properties": {
3
+ "ssn": {
4
+ "encrypt": {
5
+ "keyId": "/altname",
6
+ "bsonType": "string",
7
+ "algorithm": "AEAD_AES_256_CBC_HMAC_SHA_512-Random"
8
+ }
9
+ }
10
+ },
11
+ "bsonType": "object"
12
+ }
@@ -47,7 +47,7 @@ module LiteConstraints
47
47
 
48
48
  def require_mongo_kerberos
49
49
  before(:all) do
50
- skip 'KERBEROS_REQUIRED env var not specified' unless ENV['KERBEROS_REQUIRED']
50
+ skip 'KERBEROS env var not specified' unless ENV['KERBEROS']
51
51
  require 'mongo_kerberos'
52
52
  end
53
53
  end
@@ -60,6 +60,22 @@ module LiteConstraints
60
60
  end
61
61
  end
62
62
 
63
+ def require_libmongocrypt
64
+ before(:all) do
65
+ unless ENV['LIBMONGOCRYPT_PATH']
66
+ skip 'Test requires path to libmongocrypt to be specified in LIBMONGOCRYPT_PATH env variable'
67
+ end
68
+ end
69
+ end
70
+
71
+ def require_no_libmongocrypt
72
+ before(:all) do
73
+ if ENV['LIBMONGOCRYPT_PATH']
74
+ skip 'Test requires libmongocrypt to not be configured'
75
+ end
76
+ end
77
+ end
78
+
63
79
  # Some tests will fail if linting is enabled:
64
80
  # 1. Tests that pass invalid options to client, etc. which the linter
65
81
  # rejects.
@@ -35,3 +35,22 @@ RSpec::Matchers.define :be_bson_sequence do |array|
35
35
  actual == array.map(&:to_bson).join
36
36
  end
37
37
  end
38
+
39
+ RSpec::Matchers.define :be_ciphertext do
40
+ match do |object|
41
+ object.is_a?(BSON::Binary) && object.type == :ciphertext
42
+ end
43
+ end
44
+
45
+
46
+ RSpec::Matchers.define :match_with_type do |event|
47
+ match do |actual|
48
+ Utils.match_with_type?(event, actual)
49
+ end
50
+ end
51
+
52
+ RSpec::Matchers.define :be_uuid do
53
+ match do |object|
54
+ object.is_a?(BSON::Binary) && object.type == :uuid
55
+ end
56
+ end
@@ -1,4 +1,6 @@
1
1
  shared_examples 'message with a header' do
2
+ let(:collection_name) { 'test' }
3
+
2
4
  describe 'header' do
3
5
  describe 'length' do
4
6
  let(:field) { bytes.to_s[0..3] }
@@ -1,4 +1,5 @@
1
1
  require 'singleton'
2
+ require 'pathname'
2
3
 
3
4
  class SpecConfig
4
5
  include Singleton
@@ -13,7 +14,7 @@ class SpecConfig
13
14
  if @uri_options[:replica_set]
14
15
  @addresses = @mongodb_uri.servers
15
16
  @connect_options = { connect: :replica_set, replica_set: @uri_options[:replica_set] }
16
- elsif @uri_options[:connect] == :sharded || ENV['TOPOLOGY'] == 'sharded_cluster'
17
+ elsif @uri_options[:connect] == :sharded || ENV['TOPOLOGY'] == 'sharded-cluster'
17
18
  @addresses = @mongodb_uri.servers
18
19
  @connect_options = { connect: :sharded }
19
20
  elsif @uri_options[:connect] == :direct
@@ -133,11 +134,7 @@ class SpecConfig
133
134
 
134
135
  # What compressor to use, if any.
135
136
  def compressors
136
- if ENV['COMPRESSOR'].nil? || ENV['COMPRESSOR'].empty?
137
- nil
138
- else
139
- [ENV['COMPRESSOR']]
140
- end
137
+ uri_options[:compressors]
141
138
  end
142
139
 
143
140
  def retry_reads
@@ -189,7 +186,7 @@ class SpecConfig
189
186
  end
190
187
 
191
188
  def auth_source
192
- @uri_options && uri_options[:auth_source]
189
+ uri_options[:auth_source]
193
190
  end
194
191
 
195
192
  def connect_replica_set?
@@ -311,20 +308,43 @@ EOT
311
308
  'ruby-driver'.freeze
312
309
  end
313
310
 
311
+ # AWS IAM user access key id
312
+ def fle_aws_key
313
+ ENV['MONGO_RUBY_DRIVER_AWS_KEY']
314
+ end
315
+
316
+ # AWS IAM user secret access key
317
+ def fle_aws_secret
318
+ ENV['MONGO_RUBY_DRIVER_AWS_SECRET']
319
+ end
320
+
321
+ # Region of AWS customer master key
322
+ def fle_aws_region
323
+ ENV['MONGO_RUBY_DRIVER_AWS_REGION']
324
+ end
325
+
326
+ # Amazon resource name (ARN) of AWS customer master key
327
+ def fle_aws_arn
328
+ ENV['MONGO_RUBY_DRIVER_AWS_ARN']
329
+ end
330
+
314
331
  # Option hashes
315
332
 
316
333
  def auth_options
317
334
  if x509_auth?
318
335
  {
319
- auth_mech: @uri_options[:auth_mech],
336
+ auth_mech: uri_options[:auth_mech],
320
337
  auth_source: '$external',
321
338
  }
322
339
  else
323
340
  {
324
341
  user: user,
325
342
  password: password,
326
- auth_source: auth_source,
327
- }
343
+ }.tap do |options|
344
+ if auth_source
345
+ options[:auth_source] = auth_source
346
+ end
347
+ end
328
348
  end
329
349
  end
330
350
 
@@ -356,10 +376,19 @@ EOT
356
376
 
357
377
  # Base test options.
358
378
  def base_test_options
359
- uri_options = @uri_options || {}
360
379
  {
361
- max_pool_size: 1,
380
+ # Automatic encryption tests require a minimum of three connections:
381
+ # - The driver checks out a connection to build a command.
382
+ # - It may need to encrypt the command, which could require a query to
383
+ # the key vault collection triggered by libmongocrypt.
384
+ # - If the key vault client has auto encryption options, it will also
385
+ # attempt to encrypt this query, resulting in a third connection.
386
+ # In the worst case using FLE may end up tripling the number of
387
+ # connections that the driver uses at any one time.
388
+ max_pool_size: 3,
389
+
362
390
  heartbeat_frequency: 20,
391
+
363
392
  # The test suite seems to perform a number of operations
364
393
  # requiring server selection. Hence a timeout of 1 here,
365
394
  # together with e.g. a misconfigured replica set,
@@ -367,6 +396,7 @@ EOT
367
396
  # failing.
368
397
  # Server selection timeout of 1 is insufficient for evergreen.
369
398
  server_selection_timeout: uri_options[:server_selection_timeout] || (ssl? ? 4.01 : 2.01),
399
+
370
400
  wait_queue_timeout: 2,
371
401
  connect_timeout: 3,
372
402
  max_idle_time: 5
@@ -428,7 +458,7 @@ EOT
428
458
  end
429
459
 
430
460
  def x509_auth?
431
- @uri_options[:auth_mech] == :mongodb_x509
461
+ uri_options[:auth_mech] == :mongodb_x509
432
462
  end
433
463
 
434
464
  # When we use x.509 authentication, omit all of the users we normally create
@@ -1,5 +1,6 @@
1
- module Utils
1
+ require 'base64'
2
2
 
3
+ module Utils
3
4
  # Converts a 'camelCase' string or symbol to a :under_score symbol.
4
5
  def underscore(str)
5
6
  str = str.to_s
@@ -85,12 +86,50 @@ module Utils
85
86
  def convert_client_options(spec_test_options)
86
87
  uri = Mongo::URI.new('mongodb://localhost')
87
88
  spec_test_options.reduce({}) do |opts, (name, value)|
88
- uri.send(:add_uri_option, name, value.to_s, opts)
89
+ if name == 'autoEncryptOpts'
90
+ opts.merge!(
91
+ auto_encryption_options: convert_auto_encryption_client_options(value)
92
+ )
93
+ else
94
+ uri.send(:add_uri_option, name, value.to_s, opts)
95
+ end
96
+
89
97
  opts
90
98
  end
91
99
  end
92
100
  module_function :convert_client_options
93
101
 
102
+ private def convert_auto_encryption_client_options(opts)
103
+ auto_encrypt_opts = Utils.snakeize_hash(opts)
104
+
105
+ if opts['kmsProviders']['aws']
106
+ # The tests require that AWS credentials be filled in by the driver.
107
+ auto_encrypt_opts[:kms_providers][:aws] = {
108
+ access_key_id: SpecConfig.instance.fle_aws_key,
109
+ secret_access_key: SpecConfig.instance.fle_aws_secret,
110
+ }
111
+ end
112
+
113
+ if opts['kmsProviders']['local']
114
+ auto_encrypt_opts[:kms_providers][:local] = {
115
+ key: BSON::ExtJSON.parse_obj(opts['kmsProviders']['local']['key']).data
116
+ }
117
+ end
118
+
119
+ if opts['keyVaultNamespace']
120
+ auto_encrypt_opts[:key_vault_namespace] = opts['keyVaultNamespace']
121
+ else
122
+ auto_encrypt_opts[:key_vault_namespace] = 'admin.datakeys'
123
+ end
124
+
125
+ if opts['schemaMap']
126
+ auto_encrypt_opts[:schema_map] = BSON::ExtJSON.parse_obj(opts['schemaMap'])
127
+ end
128
+
129
+ auto_encrypt_opts
130
+ end
131
+ module_function :convert_auto_encryption_client_options
132
+
94
133
  def order_hash(hash)
95
134
  Hash[hash.to_a.sort]
96
135
  end
@@ -102,13 +141,6 @@ module Utils
102
141
  events = events.map do |e|
103
142
  command = e.command.dup
104
143
 
105
- # Convert txnNumber field from a BSON integer to an extended JSON int64
106
- if command['txnNumber']
107
- command['txnNumber'] = {
108
- '$numberLong' => int64_value(command['txnNumber']).to_s
109
- }
110
- end
111
-
112
144
  # Fake $code for map/reduce commands
113
145
  %w(map reduce).each do |key|
114
146
  if command[key].is_a?(String)
@@ -135,7 +167,7 @@ module Utils
135
167
  end
136
168
 
137
169
  # The spec tests use 42 as a placeholder value for any getMore cursorId.
138
- command['getMore'] = { '$numberLong' => '42' } if command['getMore']
170
+ command['getMore'] = command['getMore'].class.new(42) if command['getMore']
139
171
 
140
172
  # Remove fields if empty
141
173
  #command.delete('filter') if command['filter'] && command['filter'].empty?
@@ -227,4 +259,94 @@ module Utils
227
259
  end
228
260
  end
229
261
  module_function :int64_value
262
+
263
+ URI_OPTION_MAP = {
264
+ app_name: 'appName',
265
+ auth_mech: 'authMechanism',
266
+ auth_source: 'authsource',
267
+ replica_set: 'replicaSet',
268
+ ssl_ca_cert: 'tlsCAFile',
269
+ ssl_cert: 'tlsCertificateKeyFile',
270
+ ssl_key: 'tlsCertificateKeyFile',
271
+ }.freeze
272
+
273
+ module_function def create_mongodb_uri(address_strs, **opts)
274
+ creds = if opts[:username]
275
+ "#{opts[:username]}:#{opts[:password]}@"
276
+ else
277
+ ''
278
+ end
279
+ uri = "mongodb://#{creds}#{address_strs.join(',')}/"
280
+ if opts[:database]
281
+ uri << opts[:database]
282
+ end
283
+ if uri_options = opts[:uri_options]
284
+ uri << '?'
285
+
286
+ uri_options.each do |k, v|
287
+ uri << '&'
288
+
289
+ write_k = URI_OPTION_MAP[k] || k
290
+
291
+ if k == :compressors
292
+ write_v = v.join(',')
293
+ elsif k == :auth_mech
294
+ if v
295
+ write_v = Mongo::URI::AUTH_MECH_MAP.key(v)
296
+ unless write_v
297
+ raise "Unhandled auth mech value: #{v}"
298
+ end
299
+ else
300
+ next
301
+ end
302
+ else
303
+ write_v = v
304
+ end
305
+
306
+ uri << "#{write_k}=#{write_v}"
307
+ end
308
+ end
309
+
310
+ uri
311
+ end
312
+
313
+ # Client-Side encryption tests introduce the $$type syntax for determining
314
+ # equality in command started events. The $$type key specifies which type of
315
+ # BSON object is expected in the result. If the $$type key is present, only
316
+ # check the class of the result.
317
+ def match_with_type?(expected, actual)
318
+ if expected.is_a?(Hash) && expected.key?('$$type')
319
+ case expected['$$type']
320
+ when 'binData'
321
+ expected_class = BSON::Binary
322
+ expected_key = '$binary'
323
+ when 'long'
324
+ expected_class = BSON::Int64
325
+ expected_key = '$numberLong'
326
+ else
327
+ raise "Tests do not currently support matching against $$type #{v['$$type']}"
328
+ end
329
+
330
+ actual.is_a?(expected_class) || actual.key?(expected_key)
331
+ elsif expected.is_a?(Hash) && actual.is_a?(Hash)
332
+ same_keys = (expected.keys - actual.keys).empty?
333
+
334
+ same_values = expected.keys.all? do |key|
335
+ match_with_type?(expected[key], actual[key])
336
+ end
337
+
338
+ same_keys && same_values
339
+ elsif expected.is_a?(Array) && actual.is_a?(Array)
340
+ same_length = expected.length == actual.length
341
+
342
+ same_values = expected.map.with_index do |_, idx|
343
+ match_with_type?(expected[idx], actual[idx])
344
+ end.all?
345
+
346
+ same_length && same_values
347
+ else
348
+ return expected == actual
349
+ end
350
+ end
351
+ module_function :match_with_type?
230
352
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongo
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.11.6
4
+ version: 2.12.0.rc0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tyler Brock
@@ -31,7 +31,7 @@ cert_chain:
31
31
  gpvfPNWMwyBDlHaNS3GfO6cRRxBOvEG05GUCsvtTY4Bpe8yjE64wg1ymb47LMOnv
32
32
  Qb1lGORmf/opg45mluKUYl7pQNZHD0d3
33
33
  -----END CERTIFICATE-----
34
- date: 2020-10-09 00:00:00.000000000 Z
34
+ date: 2020-03-13 00:00:00.000000000 Z
35
35
  dependencies:
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: bson
@@ -39,7 +39,7 @@ dependencies:
39
39
  requirements:
40
40
  - - ">="
41
41
  - !ruby/object:Gem::Version
42
- version: 4.4.2
42
+ version: 4.8.2
43
43
  - - "<"
44
44
  - !ruby/object:Gem::Version
45
45
  version: 5.0.0
@@ -49,7 +49,7 @@ dependencies:
49
49
  requirements:
50
50
  - - ">="
51
51
  - !ruby/object:Gem::Version
52
- version: 4.4.2
52
+ version: 4.8.2
53
53
  - - "<"
54
54
  - !ruby/object:Gem::Version
55
55
  version: 5.0.0
@@ -75,6 +75,7 @@ files:
75
75
  - lib/mongo/auth.rb
76
76
  - lib/mongo/auth/cr.rb
77
77
  - lib/mongo/auth/cr/conversation.rb
78
+ - lib/mongo/auth/credential_cache.rb
78
79
  - lib/mongo/auth/ldap.rb
79
80
  - lib/mongo/auth/ldap/conversation.rb
80
81
  - lib/mongo/auth/roles.rb
@@ -100,6 +101,7 @@ files:
100
101
  - lib/mongo/bulk_write/unordered_combiner.rb
101
102
  - lib/mongo/bulk_write/validatable.rb
102
103
  - lib/mongo/client.rb
104
+ - lib/mongo/client_encryption.rb
103
105
  - lib/mongo/cluster.rb
104
106
  - lib/mongo/cluster/periodic_executor.rb
105
107
  - lib/mongo/cluster/reapers/cursor_reaper.rb
@@ -133,6 +135,22 @@ files:
133
135
  - lib/mongo/collection/view/map_reduce.rb
134
136
  - lib/mongo/collection/view/readable.rb
135
137
  - lib/mongo/collection/view/writable.rb
138
+ - lib/mongo/crypt.rb
139
+ - lib/mongo/crypt/auto_decryption_context.rb
140
+ - lib/mongo/crypt/auto_encrypter.rb
141
+ - lib/mongo/crypt/auto_encryption_context.rb
142
+ - lib/mongo/crypt/binary.rb
143
+ - lib/mongo/crypt/binding.rb
144
+ - lib/mongo/crypt/context.rb
145
+ - lib/mongo/crypt/data_key_context.rb
146
+ - lib/mongo/crypt/encryption_io.rb
147
+ - lib/mongo/crypt/explicit_decryption_context.rb
148
+ - lib/mongo/crypt/explicit_encrypter.rb
149
+ - lib/mongo/crypt/explicit_encryption_context.rb
150
+ - lib/mongo/crypt/handle.rb
151
+ - lib/mongo/crypt/hooks.rb
152
+ - lib/mongo/crypt/kms_context.rb
153
+ - lib/mongo/crypt/status.rb
136
154
  - lib/mongo/cursor.rb
137
155
  - lib/mongo/cursor/builder.rb
138
156
  - lib/mongo/cursor/builder/get_more_command.rb
@@ -148,8 +166,9 @@ files:
148
166
  - lib/mongo/error/change_stream_resumable.rb
149
167
  - lib/mongo/error/closed_stream.rb
150
168
  - lib/mongo/error/connection_check_out_timeout.rb
169
+ - lib/mongo/error/crypt_error.rb
151
170
  - lib/mongo/error/extra_file_chunk.rb
152
- - lib/mongo/error/failed_stringprep_validation.rb
171
+ - lib/mongo/error/failed_string_prep_validation.rb
153
172
  - lib/mongo/error/file_not_found.rb
154
173
  - lib/mongo/error/handshake_error.rb
155
174
  - lib/mongo/error/insufficient_iteration_count.rb
@@ -158,6 +177,7 @@ files:
158
177
  - lib/mongo/error/invalid_bulk_operation.rb
159
178
  - lib/mongo/error/invalid_bulk_operation_type.rb
160
179
  - lib/mongo/error/invalid_collection_name.rb
180
+ - lib/mongo/error/invalid_cursor_operation.rb
161
181
  - lib/mongo/error/invalid_database_name.rb
162
182
  - lib/mongo/error/invalid_document.rb
163
183
  - lib/mongo/error/invalid_file.rb
@@ -174,6 +194,7 @@ files:
174
194
  - lib/mongo/error/invalid_update_document.rb
175
195
  - lib/mongo/error/invalid_uri.rb
176
196
  - lib/mongo/error/invalid_write_concern.rb
197
+ - lib/mongo/error/kms_error.rb
177
198
  - lib/mongo/error/lint_error.rb
178
199
  - lib/mongo/error/max_bson_size.rb
179
200
  - lib/mongo/error/max_message_size.rb
@@ -181,6 +202,7 @@ files:
181
202
  - lib/mongo/error/missing_file_chunk.rb
182
203
  - lib/mongo/error/missing_password.rb
183
204
  - lib/mongo/error/missing_resume_token.rb
205
+ - lib/mongo/error/mongocryptd_spawn_error.rb
184
206
  - lib/mongo/error/multi_index_drop.rb
185
207
  - lib/mongo/error/need_primary_server.rb
186
208
  - lib/mongo/error/no_server_available.rb
@@ -406,6 +428,7 @@ files:
406
428
  - lib/mongo/server/connectable.rb
407
429
  - lib/mongo/server/connection.rb
408
430
  - lib/mongo/server/connection_base.rb
431
+ - lib/mongo/server/connection_common.rb
409
432
  - lib/mongo/server/connection_pool.rb
410
433
  - lib/mongo/server/connection_pool/populator.rb
411
434
  - lib/mongo/server/context.rb
@@ -435,6 +458,7 @@ files:
435
458
  - lib/mongo/srv/resolver.rb
436
459
  - lib/mongo/srv/result.rb
437
460
  - lib/mongo/srv/warning_result.rb
461
+ - lib/mongo/timeout.rb
438
462
  - lib/mongo/uri.rb
439
463
  - lib/mongo/uri/srv_protocol.rb
440
464
  - lib/mongo/version.rb
@@ -453,10 +477,26 @@ files:
453
477
  - spec/integration/bulk_insert_spec.rb
454
478
  - spec/integration/change_stream_examples_spec.rb
455
479
  - spec/integration/change_stream_spec.rb
480
+ - spec/integration/client_authentication_options_spec.rb
456
481
  - spec/integration/client_connectivity_spec.rb
457
482
  - spec/integration/client_construction_spec.rb
458
- - spec/integration/client_options_spec.rb
483
+ - spec/integration/client_side_encryption/auto_encryption_bulk_writes_spec.rb
484
+ - spec/integration/client_side_encryption/auto_encryption_command_monitoring_spec.rb
485
+ - spec/integration/client_side_encryption/auto_encryption_mongocryptd_spawn_spec.rb
486
+ - spec/integration/client_side_encryption/auto_encryption_old_wire_version_spec.rb
487
+ - spec/integration/client_side_encryption/auto_encryption_reconnect_spec.rb
488
+ - spec/integration/client_side_encryption/auto_encryption_spec.rb
489
+ - spec/integration/client_side_encryption/bson_size_limit_spec.rb
490
+ - spec/integration/client_side_encryption/bypass_mongocryptd_spawn_spec.rb
491
+ - spec/integration/client_side_encryption/client_close_spec.rb
492
+ - spec/integration/client_side_encryption/corpus_spec.rb
493
+ - spec/integration/client_side_encryption/custom_endpoint_spec.rb
494
+ - spec/integration/client_side_encryption/data_key_spec.rb
495
+ - spec/integration/client_side_encryption/explicit_encryption_spec.rb
496
+ - spec/integration/client_side_encryption/external_key_vault_spec.rb
497
+ - spec/integration/client_side_encryption/views_spec.rb
459
498
  - spec/integration/client_spec.rb
499
+ - spec/integration/client_update_spec.rb
460
500
  - spec/integration/command_monitoring_spec.rb
461
501
  - spec/integration/command_spec.rb
462
502
  - spec/integration/connect_single_rs_name_spec.rb
@@ -467,7 +507,6 @@ files:
467
507
  - spec/integration/docs_examples_spec.rb
468
508
  - spec/integration/error_detection_spec.rb
469
509
  - spec/integration/get_more_spec.rb
470
- - spec/integration/grid_fs_bucket_spec.rb
471
510
  - spec/integration/heartbeat_events_spec.rb
472
511
  - spec/integration/mmapv1_spec.rb
473
512
  - spec/integration/mongos_pinning_spec.rb
@@ -485,12 +524,12 @@ files:
485
524
  - spec/integration/server_selector_spec.rb
486
525
  - spec/integration/server_spec.rb
487
526
  - spec/integration/shell_examples_spec.rb
527
+ - spec/integration/size_limit_spec.rb
488
528
  - spec/integration/srv_monitoring_spec.rb
489
529
  - spec/integration/ssl_uri_options_spec.rb
490
530
  - spec/integration/step_down_spec.rb
491
531
  - spec/integration/time_zone_querying_spec.rb
492
532
  - spec/integration/transactions_examples_spec.rb
493
- - spec/integration/zlib_compression_spec.rb
494
533
  - spec/lite_spec_helper.rb
495
534
  - spec/mongo/address/ipv4_spec.rb
496
535
  - spec/mongo/address/ipv6_spec.rb
@@ -517,6 +556,7 @@ files:
517
556
  - spec/mongo/bulk_write/unordered_combiner_spec.rb
518
557
  - spec/mongo/bulk_write_spec.rb
519
558
  - spec/mongo/client_construction_spec.rb
559
+ - spec/mongo/client_encryption_spec.rb
520
560
  - spec/mongo/client_spec.rb
521
561
  - spec/mongo/cluster/cursor_reaper_spec.rb
522
562
  - spec/mongo/cluster/periodic_executor_spec.rb
@@ -542,12 +582,32 @@ files:
542
582
  - spec/mongo/collection/view/writable_spec.rb
543
583
  - spec/mongo/collection/view_spec.rb
544
584
  - spec/mongo/collection_spec.rb
585
+ - spec/mongo/crypt/auto_decryption_context_spec.rb
586
+ - spec/mongo/crypt/auto_encrypter_spec.rb
587
+ - spec/mongo/crypt/auto_encryption_context_spec.rb
588
+ - spec/mongo/crypt/binary_spec.rb
589
+ - spec/mongo/crypt/binding/binary_spec.rb
590
+ - spec/mongo/crypt/binding/context_spec.rb
591
+ - spec/mongo/crypt/binding/helpers_spec.rb
592
+ - spec/mongo/crypt/binding/mongocrypt_spec.rb
593
+ - spec/mongo/crypt/binding/status_spec.rb
594
+ - spec/mongo/crypt/binding/version_spec.rb
595
+ - spec/mongo/crypt/binding_unloaded_spec.rb
596
+ - spec/mongo/crypt/data_key_context_spec.rb
597
+ - spec/mongo/crypt/encryption_io_spec.rb
598
+ - spec/mongo/crypt/explicit_decryption_context_spec.rb
599
+ - spec/mongo/crypt/explicit_encryption_context_spec.rb
600
+ - spec/mongo/crypt/handle_spec.rb
601
+ - spec/mongo/crypt/helpers/mongo_crypt_spec_helper.rb
602
+ - spec/mongo/crypt/status_spec.rb
545
603
  - spec/mongo/cursor/builder/get_more_command_spec.rb
546
604
  - spec/mongo/cursor/builder/op_get_more_spec.rb
547
605
  - spec/mongo/cursor/builder/op_kill_cursors_spec.rb
548
606
  - spec/mongo/cursor_spec.rb
549
607
  - spec/mongo/database_spec.rb
550
608
  - spec/mongo/dbref_spec.rb
609
+ - spec/mongo/error/crypt_error_spec.rb
610
+ - spec/mongo/error/max_bson_size_spec.rb
551
611
  - spec/mongo/error/no_server_available_spec.rb
552
612
  - spec/mongo/error/operation_failure_spec.rb
553
613
  - spec/mongo/error/parser_spec.rb
@@ -660,18 +720,45 @@ files:
660
720
  - spec/mongo/socket_spec.rb
661
721
  - spec/mongo/srv/monitor_spec.rb
662
722
  - spec/mongo/srv/result_spec.rb
723
+ - spec/mongo/timeout_spec.rb
663
724
  - spec/mongo/uri/srv_protocol_spec.rb
664
725
  - spec/mongo/uri_option_parsing_spec.rb
665
726
  - spec/mongo/uri_spec.rb
666
727
  - spec/mongo/write_concern/acknowledged_spec.rb
667
728
  - spec/mongo/write_concern/unacknowledged_spec.rb
668
729
  - spec/mongo/write_concern_spec.rb
730
+ - spec/runners/auth.rb
731
+ - spec/runners/change_streams.rb
732
+ - spec/runners/change_streams/operation.rb
733
+ - spec/runners/cmap.rb
734
+ - spec/runners/cmap/verifier.rb
735
+ - spec/runners/command_monitoring.rb
669
736
  - spec/runners/connection_string.rb
737
+ - spec/runners/crud.rb
738
+ - spec/runners/crud/context.rb
739
+ - spec/runners/crud/operation.rb
740
+ - spec/runners/crud/outcome.rb
741
+ - spec/runners/crud/requirement.rb
742
+ - spec/runners/crud/spec.rb
743
+ - spec/runners/crud/test.rb
744
+ - spec/runners/crud/test_base.rb
745
+ - spec/runners/crud/verifier.rb
746
+ - spec/runners/gridfs.rb
670
747
  - spec/runners/read_write_concern_document.rb
671
748
  - spec/runners/sdam/verifier.rb
749
+ - spec/runners/sdam_monitoring.rb
750
+ - spec/runners/server_discovery_and_monitoring.rb
751
+ - spec/runners/server_selection.rb
752
+ - spec/runners/server_selection_rtt.rb
753
+ - spec/runners/transactions.rb
754
+ - spec/runners/transactions/context.rb
755
+ - spec/runners/transactions/operation.rb
756
+ - spec/runners/transactions/spec.rb
757
+ - spec/runners/transactions/test.rb
672
758
  - spec/spec_helper.rb
673
759
  - spec/spec_tests/auth_spec.rb
674
760
  - spec/spec_tests/change_streams_spec.rb
761
+ - spec/spec_tests/client_side_encryption_spec.rb
675
762
  - spec/spec_tests/cmap_spec.rb
676
763
  - spec/spec_tests/command_monitoring_spec.rb
677
764
  - spec/spec_tests/connection_string_spec.rb
@@ -679,6 +766,35 @@ files:
679
766
  - spec/spec_tests/data/auth/connection-string.yml
680
767
  - spec/spec_tests/data/change_streams/change-streams-errors.yml
681
768
  - spec/spec_tests/data/change_streams/change-streams.yml
769
+ - spec/spec_tests/data/client_side_encryption/aggregate.yml
770
+ - spec/spec_tests/data/client_side_encryption/badQueries.yml
771
+ - spec/spec_tests/data/client_side_encryption/badSchema.yml
772
+ - spec/spec_tests/data/client_side_encryption/basic.yml
773
+ - spec/spec_tests/data/client_side_encryption/bulk.yml
774
+ - spec/spec_tests/data/client_side_encryption/bypassAutoEncryption.yml
775
+ - spec/spec_tests/data/client_side_encryption/bypassedCommand.yml
776
+ - spec/spec_tests/data/client_side_encryption/count.yml
777
+ - spec/spec_tests/data/client_side_encryption/countDocuments.yml
778
+ - spec/spec_tests/data/client_side_encryption/delete.yml
779
+ - spec/spec_tests/data/client_side_encryption/distinct.yml
780
+ - spec/spec_tests/data/client_side_encryption/explain.yml
781
+ - spec/spec_tests/data/client_side_encryption/find.yml
782
+ - spec/spec_tests/data/client_side_encryption/findOneAndDelete.yml
783
+ - spec/spec_tests/data/client_side_encryption/findOneAndReplace.yml
784
+ - spec/spec_tests/data/client_side_encryption/findOneAndUpdate.yml
785
+ - spec/spec_tests/data/client_side_encryption/getMore.yml
786
+ - spec/spec_tests/data/client_side_encryption/insert.yml
787
+ - spec/spec_tests/data/client_side_encryption/keyAltName.yml
788
+ - spec/spec_tests/data/client_side_encryption/localKMS.yml
789
+ - spec/spec_tests/data/client_side_encryption/localSchema.yml
790
+ - spec/spec_tests/data/client_side_encryption/malformedCiphertext.yml
791
+ - spec/spec_tests/data/client_side_encryption/maxWireVersion.yml
792
+ - spec/spec_tests/data/client_side_encryption/missingKey.yml
793
+ - spec/spec_tests/data/client_side_encryption/replaceOne.yml
794
+ - spec/spec_tests/data/client_side_encryption/types.yml
795
+ - spec/spec_tests/data/client_side_encryption/unsupportedCommand.yml
796
+ - spec/spec_tests/data/client_side_encryption/updateMany.yml
797
+ - spec/spec_tests/data/client_side_encryption/updateOne.yml
682
798
  - spec/spec_tests/data/cmap/connection-must-have-id.yml
683
799
  - spec/spec_tests/data/cmap/connection-must-order-ids.yml
684
800
  - spec/spec_tests/data/cmap/pool-checkin-destroy-closed.yml
@@ -913,7 +1029,6 @@ files:
913
1029
  - spec/spec_tests/data/sdam/rs/normalize_case.yml
914
1030
  - spec/spec_tests/data/sdam/rs/normalize_case_me.yml
915
1031
  - spec/spec_tests/data/sdam/rs/null_election_id.yml
916
- - spec/spec_tests/data/sdam/rs/primary_address_change.yml
917
1032
  - spec/spec_tests/data/sdam/rs/primary_becomes_ghost.yml
918
1033
  - spec/spec_tests/data/sdam/rs/primary_becomes_mongos.yml
919
1034
  - spec/spec_tests/data/sdam/rs/primary_becomes_standalone.yml
@@ -923,17 +1038,20 @@ files:
923
1038
  - spec/spec_tests/data/sdam/rs/primary_disconnect_setversion.yml
924
1039
  - spec/spec_tests/data/sdam/rs/primary_hint_from_secondary_with_mismatched_me.yml
925
1040
  - spec/spec_tests/data/sdam/rs/primary_mismatched_me.yml
1041
+ - spec/spec_tests/data/sdam/rs/primary_mismatched_me_not_removed.yml
926
1042
  - spec/spec_tests/data/sdam/rs/primary_reports_new_member.yml
927
1043
  - spec/spec_tests/data/sdam/rs/primary_to_no_primary_mismatched_me.yml
928
1044
  - spec/spec_tests/data/sdam/rs/primary_wrong_set_name.yml
1045
+ - spec/spec_tests/data/sdam/rs/repeated.yml
929
1046
  - spec/spec_tests/data/sdam/rs/response_from_removed.yml
930
1047
  - spec/spec_tests/data/sdam/rs/rsother_discovered.yml
1048
+ - spec/spec_tests/data/sdam/rs/ruby_primary_address_change.yml
1049
+ - spec/spec_tests/data/sdam/rs/ruby_secondary_wrong_set_name_with_primary_second.yml
931
1050
  - spec/spec_tests/data/sdam/rs/sec_not_auth.yml
932
1051
  - spec/spec_tests/data/sdam/rs/secondary_ignore_ok_0.yml
933
1052
  - spec/spec_tests/data/sdam/rs/secondary_mismatched_me.yml
934
1053
  - spec/spec_tests/data/sdam/rs/secondary_wrong_set_name.yml
935
1054
  - spec/spec_tests/data/sdam/rs/secondary_wrong_set_name_with_primary.yml
936
- - spec/spec_tests/data/sdam/rs/secondary_wrong_set_name_with_primary_second.yml
937
1055
  - spec/spec_tests/data/sdam/rs/setversion_without_electionid.yml
938
1056
  - spec/spec_tests/data/sdam/rs/stepdown_change_set_name.yml
939
1057
  - spec/spec_tests/data/sdam/rs/too_new.yml
@@ -947,9 +1065,9 @@ files:
947
1065
  - spec/spec_tests/data/sdam/sharded/multiple_mongoses.yml
948
1066
  - spec/spec_tests/data/sdam/sharded/non_mongos_removed.yml
949
1067
  - spec/spec_tests/data/sdam/sharded/normalize_uri_case.yml
950
- - spec/spec_tests/data/sdam/sharded/primary_address_change.yml
951
- - spec/spec_tests/data/sdam/sharded/primary_mismatched_me.yml
952
- - spec/spec_tests/data/sdam/sharded/single_mongos.yml
1068
+ - spec/spec_tests/data/sdam/sharded/ruby_discovered_single_mongos.yml
1069
+ - spec/spec_tests/data/sdam/sharded/ruby_primary_different_address.yml
1070
+ - spec/spec_tests/data/sdam/sharded/ruby_primary_mismatched_me.yml
953
1071
  - spec/spec_tests/data/sdam/sharded/too_new.yml
954
1072
  - spec/spec_tests/data/sdam/sharded/too_old.yml
955
1073
  - spec/spec_tests/data/sdam/single/compatible.yml
@@ -962,8 +1080,8 @@ files:
962
1080
  - spec/spec_tests/data/sdam/single/direct_connection_standalone.yml
963
1081
  - spec/spec_tests/data/sdam/single/ls_timeout_standalone.yml
964
1082
  - spec/spec_tests/data/sdam/single/not_ok_response.yml
965
- - spec/spec_tests/data/sdam/single/primary_address_change.yml
966
- - spec/spec_tests/data/sdam/single/primary_mismatched_me.yml
1083
+ - spec/spec_tests/data/sdam/single/ruby_primary_different_address.yml
1084
+ - spec/spec_tests/data/sdam/single/ruby_primary_mismatched_me.yml
967
1085
  - spec/spec_tests/data/sdam/single/standalone_removed.yml
968
1086
  - spec/spec_tests/data/sdam/single/too_new.yml
969
1087
  - spec/spec_tests/data/sdam/single/too_old.yml
@@ -971,17 +1089,18 @@ files:
971
1089
  - spec/spec_tests/data/sdam_monitoring/discovered_standalone.yml
972
1090
  - spec/spec_tests/data/sdam_monitoring/replica_set_other_chain.yml
973
1091
  - spec/spec_tests/data/sdam_monitoring/replica_set_other_change.yml
1092
+ - spec/spec_tests/data/sdam_monitoring/replica_set_primary_address_change.yml
974
1093
  - spec/spec_tests/data/sdam_monitoring/replica_set_with_me_mismatch.yml
975
1094
  - spec/spec_tests/data/sdam_monitoring/replica_set_with_no_primary.yml
976
1095
  - spec/spec_tests/data/sdam_monitoring/replica_set_with_primary.yml
977
1096
  - spec/spec_tests/data/sdam_monitoring/replica_set_with_primary_and_secondary.yml
978
- - spec/spec_tests/data/sdam_monitoring/replica_set_with_primary_change.yml
979
1097
  - spec/spec_tests/data/sdam_monitoring/replica_set_with_primary_removal.yml
980
1098
  - spec/spec_tests/data/sdam_monitoring/replica_set_with_removal.yml
981
1099
  - spec/spec_tests/data/sdam_monitoring/replica_set_with_second_seed_removal.yml
982
1100
  - spec/spec_tests/data/sdam_monitoring/required_replica_set.yml
983
1101
  - spec/spec_tests/data/sdam_monitoring/standalone.yml
984
1102
  - spec/spec_tests/data/sdam_monitoring/standalone_repeated.yml
1103
+ - spec/spec_tests/data/sdam_monitoring/standalone_suppress_equal_description_changes.yml
985
1104
  - spec/spec_tests/data/sdam_monitoring/standalone_to_rs_with_me_mismatch.yml
986
1105
  - spec/spec_tests/data/server_selection/ReplicaSetNoPrimary/read/Nearest.yml
987
1106
  - spec/spec_tests/data/server_selection/ReplicaSetNoPrimary/read/Nearest_multiple.yml
@@ -1082,7 +1201,6 @@ files:
1082
1201
  - spec/spec_tests/uri_options_spec.rb
1083
1202
  - spec/stress/connection_pool_stress_spec.rb
1084
1203
  - spec/stress/connection_pool_timing_spec.rb
1085
- - spec/support/auth.rb
1086
1204
  - spec/support/authorization.rb
1087
1205
  - spec/support/background_thread_registry.rb
1088
1206
  - spec/support/certificates/README.md
@@ -1109,30 +1227,31 @@ files:
1109
1227
  - spec/support/certificates/server-second-level.key
1110
1228
  - spec/support/certificates/server-second-level.pem
1111
1229
  - spec/support/certificates/server.pem
1112
- - spec/support/change_streams.rb
1113
- - spec/support/change_streams/operation.rb
1114
1230
  - spec/support/client_registry.rb
1115
1231
  - spec/support/client_registry_macros.rb
1116
1232
  - spec/support/cluster_config.rb
1117
1233
  - spec/support/cluster_tools.rb
1118
- - spec/support/cmap.rb
1119
- - spec/support/cmap/verifier.rb
1120
- - spec/support/command_monitoring.rb
1121
1234
  - spec/support/common_shortcuts.rb
1122
- - spec/support/connection_string.rb
1123
1235
  - spec/support/constraints.rb
1124
- - spec/support/crud.rb
1125
- - spec/support/crud/context.rb
1126
- - spec/support/crud/operation.rb
1127
- - spec/support/crud/outcome.rb
1128
- - spec/support/crud/requirement.rb
1129
- - spec/support/crud/spec.rb
1130
- - spec/support/crud/test.rb
1131
- - spec/support/crud/test_base.rb
1132
- - spec/support/crud/verifier.rb
1236
+ - spec/support/crypt.rb
1237
+ - spec/support/crypt/corpus/corpus-key-aws.json
1238
+ - spec/support/crypt/corpus/corpus-key-local.json
1239
+ - spec/support/crypt/corpus/corpus-schema.json
1240
+ - spec/support/crypt/corpus/corpus.json
1241
+ - spec/support/crypt/corpus/corpus_encrypted.json
1242
+ - spec/support/crypt/data_keys/key_document_aws.json
1243
+ - spec/support/crypt/data_keys/key_document_local.json
1244
+ - spec/support/crypt/external/external-key.json
1245
+ - spec/support/crypt/external/external-schema.json
1246
+ - spec/support/crypt/limits/limits-doc.json
1247
+ - spec/support/crypt/limits/limits-key.json
1248
+ - spec/support/crypt/limits/limits-schema.json
1249
+ - spec/support/crypt/schema_maps/schema_map_aws.json
1250
+ - spec/support/crypt/schema_maps/schema_map_aws_key_alt_names.json
1251
+ - spec/support/crypt/schema_maps/schema_map_local.json
1252
+ - spec/support/crypt/schema_maps/schema_map_local_key_alt_names.json
1133
1253
  - spec/support/dns.rb
1134
1254
  - spec/support/event_subscriber.rb
1135
- - spec/support/gridfs.rb
1136
1255
  - spec/support/json_ext_formatter.rb
1137
1256
  - spec/support/lite_constraints.rb
1138
1257
  - spec/support/local_resource_registry.rb
@@ -1140,20 +1259,11 @@ files:
1140
1259
  - spec/support/monitoring_ext.rb
1141
1260
  - spec/support/primary_socket.rb
1142
1261
  - spec/support/sdam_formatter_integration.rb
1143
- - spec/support/sdam_monitoring.rb
1144
- - spec/support/server_discovery_and_monitoring.rb
1145
- - spec/support/server_selection.rb
1146
- - spec/support/server_selection_rtt.rb
1147
1262
  - spec/support/shared/protocol.rb
1148
1263
  - spec/support/shared/server_selector.rb
1149
1264
  - spec/support/shared/session.rb
1150
1265
  - spec/support/spec_config.rb
1151
1266
  - spec/support/spec_setup.rb
1152
- - spec/support/transactions.rb
1153
- - spec/support/transactions/context.rb
1154
- - spec/support/transactions/operation.rb
1155
- - spec/support/transactions/spec.rb
1156
- - spec/support/transactions/test.rb
1157
1267
  - spec/support/utils.rb
1158
1268
  homepage: https://docs.mongodb.com/ruby-driver/
1159
1269
  licenses:
@@ -1176,9 +1286,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
1176
1286
  version: '2.3'
1177
1287
  required_rubygems_version: !ruby/object:Gem::Requirement
1178
1288
  requirements:
1179
- - - ">="
1289
+ - - ">"
1180
1290
  - !ruby/object:Gem::Version
1181
- version: '0'
1291
+ version: 1.3.1
1182
1292
  requirements: []
1183
1293
  rubygems_version: 3.1.2
1184
1294
  signing_key:
@@ -1197,6 +1307,7 @@ test_files:
1197
1307
  - spec/integration/crud_spec.rb
1198
1308
  - spec/integration/cursor_reaping_spec.rb
1199
1309
  - spec/integration/connection_pool_populator_spec.rb
1310
+ - spec/integration/size_limit_spec.rb
1200
1311
  - spec/integration/change_stream_spec.rb
1201
1312
  - spec/integration/bulk_insert_spec.rb
1202
1313
  - spec/integration/bson_symbol_spec.rb
@@ -1205,13 +1316,26 @@ test_files:
1205
1316
  - spec/integration/retryable_writes_errors_spec.rb
1206
1317
  - spec/integration/retryable_writes_spec.rb
1207
1318
  - spec/integration/mmapv1_spec.rb
1319
+ - spec/integration/client_side_encryption/explicit_encryption_spec.rb
1320
+ - spec/integration/client_side_encryption/data_key_spec.rb
1321
+ - spec/integration/client_side_encryption/corpus_spec.rb
1322
+ - spec/integration/client_side_encryption/client_close_spec.rb
1323
+ - spec/integration/client_side_encryption/custom_endpoint_spec.rb
1324
+ - spec/integration/client_side_encryption/auto_encryption_command_monitoring_spec.rb
1325
+ - spec/integration/client_side_encryption/bson_size_limit_spec.rb
1326
+ - spec/integration/client_side_encryption/external_key_vault_spec.rb
1327
+ - spec/integration/client_side_encryption/auto_encryption_old_wire_version_spec.rb
1328
+ - spec/integration/client_side_encryption/bypass_mongocryptd_spawn_spec.rb
1329
+ - spec/integration/client_side_encryption/auto_encryption_bulk_writes_spec.rb
1330
+ - spec/integration/client_side_encryption/auto_encryption_reconnect_spec.rb
1331
+ - spec/integration/client_side_encryption/auto_encryption_mongocryptd_spawn_spec.rb
1332
+ - spec/integration/client_side_encryption/auto_encryption_spec.rb
1333
+ - spec/integration/client_side_encryption/views_spec.rb
1208
1334
  - spec/integration/mongos_pinning_spec.rb
1209
1335
  - spec/integration/heartbeat_events_spec.rb
1210
1336
  - spec/integration/sdam_error_handling_spec.rb
1211
1337
  - spec/integration/retryable_errors_spec.rb
1212
1338
  - spec/integration/command_spec.rb
1213
- - spec/integration/grid_fs_bucket_spec.rb
1214
- - spec/integration/client_options_spec.rb
1215
1339
  - spec/integration/get_more_spec.rb
1216
1340
  - spec/integration/shell_examples_spec.rb
1217
1341
  - spec/integration/client_construction_spec.rb
@@ -1219,34 +1343,46 @@ test_files:
1219
1343
  - spec/integration/transactions_examples_spec.rb
1220
1344
  - spec/integration/change_stream_examples_spec.rb
1221
1345
  - spec/integration/connection_spec.rb
1346
+ - spec/integration/client_authentication_options_spec.rb
1222
1347
  - spec/integration/command_monitoring_spec.rb
1223
1348
  - spec/integration/ssl_uri_options_spec.rb
1224
1349
  - spec/integration/step_down_spec.rb
1225
1350
  - spec/integration/client_connectivity_spec.rb
1351
+ - spec/integration/client_update_spec.rb
1226
1352
  - spec/integration/server_monitor_spec.rb
1227
1353
  - spec/integration/srv_monitoring_spec.rb
1228
1354
  - spec/integration/server_description_spec.rb
1229
1355
  - spec/integration/auth_spec.rb
1230
1356
  - spec/integration/server_selector_spec.rb
1231
- - spec/integration/zlib_compression_spec.rb
1232
1357
  - spec/lite_spec_helper.rb
1233
1358
  - spec/README.md
1234
1359
  - spec/enterprise_auth/kerberos_spec.rb
1235
1360
  - spec/USERS.md
1236
1361
  - spec/support/client_registry_macros.rb
1237
- - spec/support/crud.rb
1238
1362
  - spec/support/common_shortcuts.rb
1239
- - spec/support/gridfs.rb
1240
- - spec/support/change_streams/operation.rb
1241
1363
  - spec/support/constraints.rb
1242
1364
  - spec/support/matchers.rb
1243
1365
  - spec/support/background_thread_registry.rb
1244
1366
  - spec/support/monitoring_ext.rb
1245
1367
  - spec/support/client_registry.rb
1246
1368
  - spec/support/lite_constraints.rb
1247
- - spec/support/server_selection_rtt.rb
1369
+ - spec/support/crypt/corpus/corpus-key-local.json
1370
+ - spec/support/crypt/corpus/corpus.json
1371
+ - spec/support/crypt/corpus/corpus-key-aws.json
1372
+ - spec/support/crypt/corpus/corpus-schema.json
1373
+ - spec/support/crypt/corpus/corpus_encrypted.json
1374
+ - spec/support/crypt/schema_maps/schema_map_local.json
1375
+ - spec/support/crypt/schema_maps/schema_map_aws_key_alt_names.json
1376
+ - spec/support/crypt/schema_maps/schema_map_aws.json
1377
+ - spec/support/crypt/schema_maps/schema_map_local_key_alt_names.json
1378
+ - spec/support/crypt/limits/limits-doc.json
1379
+ - spec/support/crypt/limits/limits-key.json
1380
+ - spec/support/crypt/limits/limits-schema.json
1381
+ - spec/support/crypt/data_keys/key_document_local.json
1382
+ - spec/support/crypt/data_keys/key_document_aws.json
1383
+ - spec/support/crypt/external/external-schema.json
1384
+ - spec/support/crypt/external/external-key.json
1248
1385
  - spec/support/json_ext_formatter.rb
1249
- - spec/support/cmap/verifier.rb
1250
1386
  - spec/support/sdam_formatter_integration.rb
1251
1387
  - spec/support/primary_socket.rb
1252
1388
  - spec/support/shared/server_selector.rb
@@ -1279,32 +1415,12 @@ test_files:
1279
1415
  - spec/support/utils.rb
1280
1416
  - spec/support/authorization.rb
1281
1417
  - spec/support/spec_config.rb
1282
- - spec/support/transactions/context.rb
1283
- - spec/support/transactions/spec.rb
1284
- - spec/support/transactions/operation.rb
1285
- - spec/support/transactions/test.rb
1286
- - spec/support/sdam_monitoring.rb
1287
1418
  - spec/support/spec_setup.rb
1288
- - spec/support/server_discovery_and_monitoring.rb
1289
- - spec/support/transactions.rb
1290
- - spec/support/crud/verifier.rb
1291
- - spec/support/crud/test_base.rb
1292
- - spec/support/crud/context.rb
1293
- - spec/support/crud/spec.rb
1294
- - spec/support/crud/outcome.rb
1295
- - spec/support/crud/operation.rb
1296
- - spec/support/crud/test.rb
1297
- - spec/support/crud/requirement.rb
1298
- - spec/support/connection_string.rb
1299
- - spec/support/change_streams.rb
1300
1419
  - spec/support/cluster_tools.rb
1301
- - spec/support/server_selection.rb
1302
- - spec/support/cmap.rb
1303
- - spec/support/command_monitoring.rb
1304
1420
  - spec/support/dns.rb
1305
- - spec/support/auth.rb
1306
1421
  - spec/support/local_resource_registry.rb
1307
1422
  - spec/support/event_subscriber.rb
1423
+ - spec/support/crypt.rb
1308
1424
  - spec/support/cluster_config.rb
1309
1425
  - spec/mongo/operation/read_preference_spec.rb
1310
1426
  - spec/mongo/operation/collections_info_spec.rb
@@ -1389,6 +1505,24 @@ test_files:
1389
1505
  - spec/mongo/auth/x509_spec.rb
1390
1506
  - spec/mongo/auth/stringprep/profiles/sasl_spec.rb
1391
1507
  - spec/mongo/database_spec.rb
1508
+ - spec/mongo/crypt/encryption_io_spec.rb
1509
+ - spec/mongo/crypt/auto_decryption_context_spec.rb
1510
+ - spec/mongo/crypt/data_key_context_spec.rb
1511
+ - spec/mongo/crypt/auto_encryption_context_spec.rb
1512
+ - spec/mongo/crypt/binding_unloaded_spec.rb
1513
+ - spec/mongo/crypt/binding/mongocrypt_spec.rb
1514
+ - spec/mongo/crypt/binding/context_spec.rb
1515
+ - spec/mongo/crypt/binding/version_spec.rb
1516
+ - spec/mongo/crypt/binding/helpers_spec.rb
1517
+ - spec/mongo/crypt/binding/binary_spec.rb
1518
+ - spec/mongo/crypt/binding/status_spec.rb
1519
+ - spec/mongo/crypt/binary_spec.rb
1520
+ - spec/mongo/crypt/status_spec.rb
1521
+ - spec/mongo/crypt/handle_spec.rb
1522
+ - spec/mongo/crypt/explicit_decryption_context_spec.rb
1523
+ - spec/mongo/crypt/auto_encrypter_spec.rb
1524
+ - spec/mongo/crypt/helpers/mongo_crypt_spec_helper.rb
1525
+ - spec/mongo/crypt/explicit_encryption_context_spec.rb
1392
1526
  - spec/mongo/socket_spec.rb
1393
1527
  - spec/mongo/id_spec.rb
1394
1528
  - spec/mongo/bson_spec.rb
@@ -1405,6 +1539,7 @@ test_files:
1405
1539
  - spec/mongo/server/connection_auth_spec.rb
1406
1540
  - spec/mongo/server/description_query_methods_spec.rb
1407
1541
  - spec/mongo/dbref_spec.rb
1542
+ - spec/mongo/client_encryption_spec.rb
1408
1543
  - spec/mongo/protocol/compressed_spec.rb
1409
1544
  - spec/mongo/protocol/delete_spec.rb
1410
1545
  - spec/mongo/protocol/msg_spec.rb
@@ -1415,6 +1550,7 @@ test_files:
1415
1550
  - spec/mongo/protocol/insert_spec.rb
1416
1551
  - spec/mongo/protocol/query_spec.rb
1417
1552
  - spec/mongo/protocol/kill_cursors_spec.rb
1553
+ - spec/mongo/timeout_spec.rb
1418
1554
  - spec/mongo/session_transaction_spec.rb
1419
1555
  - spec/mongo/uri_option_parsing_spec.rb
1420
1556
  - spec/mongo/write_concern_spec.rb
@@ -1458,6 +1594,8 @@ test_files:
1458
1594
  - spec/mongo/uri/srv_protocol_spec.rb
1459
1595
  - spec/mongo/error/no_server_available_spec.rb
1460
1596
  - spec/mongo/error/parser_spec.rb
1597
+ - spec/mongo/error/max_bson_size_spec.rb
1598
+ - spec/mongo/error/crypt_error_spec.rb
1461
1599
  - spec/mongo/error/operation_failure_spec.rb
1462
1600
  - spec/mongo/event/subscriber_spec.rb
1463
1601
  - spec/mongo/event/publisher_spec.rb
@@ -1480,9 +1618,34 @@ test_files:
1480
1618
  - spec/mongo/session/session_pool_spec.rb
1481
1619
  - spec/mongo/session/server_session_spec.rb
1482
1620
  - spec/mongo/retryable_spec.rb
1621
+ - spec/runners/crud.rb
1622
+ - spec/runners/gridfs.rb
1623
+ - spec/runners/change_streams/operation.rb
1483
1624
  - spec/runners/read_write_concern_document.rb
1625
+ - spec/runners/server_selection_rtt.rb
1626
+ - spec/runners/cmap/verifier.rb
1627
+ - spec/runners/transactions/context.rb
1628
+ - spec/runners/transactions/spec.rb
1629
+ - spec/runners/transactions/operation.rb
1630
+ - spec/runners/transactions/test.rb
1631
+ - spec/runners/sdam_monitoring.rb
1632
+ - spec/runners/server_discovery_and_monitoring.rb
1633
+ - spec/runners/transactions.rb
1484
1634
  - spec/runners/sdam/verifier.rb
1635
+ - spec/runners/crud/verifier.rb
1636
+ - spec/runners/crud/test_base.rb
1637
+ - spec/runners/crud/context.rb
1638
+ - spec/runners/crud/spec.rb
1639
+ - spec/runners/crud/outcome.rb
1640
+ - spec/runners/crud/operation.rb
1641
+ - spec/runners/crud/test.rb
1642
+ - spec/runners/crud/requirement.rb
1485
1643
  - spec/runners/connection_string.rb
1644
+ - spec/runners/change_streams.rb
1645
+ - spec/runners/server_selection.rb
1646
+ - spec/runners/cmap.rb
1647
+ - spec/runners/command_monitoring.rb
1648
+ - spec/runners/auth.rb
1486
1649
  - spec/atlas/operations_spec.rb
1487
1650
  - spec/atlas/atlas_connectivity_spec.rb
1488
1651
  - spec/spec_tests/dns_seedlist_discovery_spec.rb
@@ -1498,11 +1661,13 @@ test_files:
1498
1661
  - spec/spec_tests/cmap_spec.rb
1499
1662
  - spec/spec_tests/read_write_concern_connection_string_spec.rb
1500
1663
  - spec/spec_tests/retryable_writes_spec.rb
1664
+ - spec/spec_tests/client_side_encryption_spec.rb
1501
1665
  - spec/spec_tests/max_staleness_spec.rb
1502
1666
  - spec/spec_tests/sdam_monitoring_spec.rb
1503
1667
  - spec/spec_tests/connection_string_spec.rb
1504
1668
  - spec/spec_tests/command_monitoring_spec.rb
1505
1669
  - spec/spec_tests/data/sdam_monitoring/replica_set_with_second_seed_removal.yml
1670
+ - spec/spec_tests/data/sdam_monitoring/standalone_suppress_equal_description_changes.yml
1506
1671
  - spec/spec_tests/data/sdam_monitoring/replica_set_other_change.yml
1507
1672
  - spec/spec_tests/data/sdam_monitoring/replica_set_with_primary_removal.yml
1508
1673
  - spec/spec_tests/data/sdam_monitoring/replica_set_with_no_primary.yml
@@ -1512,7 +1677,7 @@ test_files:
1512
1677
  - spec/spec_tests/data/sdam_monitoring/replica_set_other_chain.yml
1513
1678
  - spec/spec_tests/data/sdam_monitoring/replica_set_with_primary_and_secondary.yml
1514
1679
  - spec/spec_tests/data/sdam_monitoring/standalone_repeated.yml
1515
- - spec/spec_tests/data/sdam_monitoring/replica_set_with_primary_change.yml
1680
+ - spec/spec_tests/data/sdam_monitoring/replica_set_primary_address_change.yml
1516
1681
  - spec/spec_tests/data/sdam_monitoring/replica_set_with_removal.yml
1517
1682
  - spec/spec_tests/data/sdam_monitoring/required_replica_set.yml
1518
1683
  - spec/spec_tests/data/sdam_monitoring/replica_set_with_me_mismatch.yml
@@ -1674,6 +1839,35 @@ test_files:
1674
1839
  - spec/spec_tests/data/cmap/pool-close-destroy-conns.yml
1675
1840
  - spec/spec_tests/data/cmap/pool-checkout-connection.yml
1676
1841
  - spec/spec_tests/data/cmap/pool-create-max-size.yml
1842
+ - spec/spec_tests/data/client_side_encryption/types.yml
1843
+ - spec/spec_tests/data/client_side_encryption/keyAltName.yml
1844
+ - spec/spec_tests/data/client_side_encryption/unsupportedCommand.yml
1845
+ - spec/spec_tests/data/client_side_encryption/bypassedCommand.yml
1846
+ - spec/spec_tests/data/client_side_encryption/missingKey.yml
1847
+ - spec/spec_tests/data/client_side_encryption/updateOne.yml
1848
+ - spec/spec_tests/data/client_side_encryption/findOneAndDelete.yml
1849
+ - spec/spec_tests/data/client_side_encryption/basic.yml
1850
+ - spec/spec_tests/data/client_side_encryption/aggregate.yml
1851
+ - spec/spec_tests/data/client_side_encryption/maxWireVersion.yml
1852
+ - spec/spec_tests/data/client_side_encryption/badSchema.yml
1853
+ - spec/spec_tests/data/client_side_encryption/find.yml
1854
+ - spec/spec_tests/data/client_side_encryption/replaceOne.yml
1855
+ - spec/spec_tests/data/client_side_encryption/count.yml
1856
+ - spec/spec_tests/data/client_side_encryption/localSchema.yml
1857
+ - spec/spec_tests/data/client_side_encryption/malformedCiphertext.yml
1858
+ - spec/spec_tests/data/client_side_encryption/getMore.yml
1859
+ - spec/spec_tests/data/client_side_encryption/delete.yml
1860
+ - spec/spec_tests/data/client_side_encryption/localKMS.yml
1861
+ - spec/spec_tests/data/client_side_encryption/bulk.yml
1862
+ - spec/spec_tests/data/client_side_encryption/findOneAndUpdate.yml
1863
+ - spec/spec_tests/data/client_side_encryption/badQueries.yml
1864
+ - spec/spec_tests/data/client_side_encryption/updateMany.yml
1865
+ - spec/spec_tests/data/client_side_encryption/insert.yml
1866
+ - spec/spec_tests/data/client_side_encryption/explain.yml
1867
+ - spec/spec_tests/data/client_side_encryption/findOneAndReplace.yml
1868
+ - spec/spec_tests/data/client_side_encryption/distinct.yml
1869
+ - spec/spec_tests/data/client_side_encryption/bypassAutoEncryption.yml
1870
+ - spec/spec_tests/data/client_side_encryption/countDocuments.yml
1677
1871
  - spec/spec_tests/data/transactions/causal-consistency.yml
1678
1872
  - spec/spec_tests/data/transactions/write-concern.yml
1679
1873
  - spec/spec_tests/data/transactions/mongos-recovery-token.yml
@@ -1738,13 +1932,13 @@ test_files:
1738
1932
  - spec/spec_tests/data/gridfs/download_by_name.yml
1739
1933
  - spec/spec_tests/data/gridfs/delete.yml
1740
1934
  - spec/spec_tests/data/gridfs/download.yml
1741
- - spec/spec_tests/data/sdam/sharded/single_mongos.yml
1742
- - spec/spec_tests/data/sdam/sharded/primary_mismatched_me.yml
1935
+ - spec/spec_tests/data/sdam/sharded/ruby_discovered_single_mongos.yml
1936
+ - spec/spec_tests/data/sdam/sharded/ruby_primary_different_address.yml
1743
1937
  - spec/spec_tests/data/sdam/sharded/ls_timeout_mongos.yml
1744
1938
  - spec/spec_tests/data/sdam/sharded/non_mongos_removed.yml
1745
1939
  - spec/spec_tests/data/sdam/sharded/too_new.yml
1746
1940
  - spec/spec_tests/data/sdam/sharded/normalize_uri_case.yml
1747
- - spec/spec_tests/data/sdam/sharded/primary_address_change.yml
1941
+ - spec/spec_tests/data/sdam/sharded/ruby_primary_mismatched_me.yml
1748
1942
  - spec/spec_tests/data/sdam/sharded/too_old.yml
1749
1943
  - spec/spec_tests/data/sdam/sharded/multiple_mongoses.yml
1750
1944
  - spec/spec_tests/data/sdam/sharded/mongos_disconnect.yml
@@ -1754,14 +1948,14 @@ test_files:
1754
1948
  - spec/spec_tests/data/sdam/single/ls_timeout_standalone.yml
1755
1949
  - spec/spec_tests/data/sdam/single/standalone_removed.yml
1756
1950
  - spec/spec_tests/data/sdam/single/direct_connection_slave.yml
1951
+ - spec/spec_tests/data/sdam/single/ruby_primary_different_address.yml
1757
1952
  - spec/spec_tests/data/sdam/single/direct_connection_rssecondary.yml
1758
- - spec/spec_tests/data/sdam/single/primary_mismatched_me.yml
1759
1953
  - spec/spec_tests/data/sdam/single/unavailable_seed.yml
1760
1954
  - spec/spec_tests/data/sdam/single/direct_connection_rsprimary.yml
1761
1955
  - spec/spec_tests/data/sdam/single/too_new.yml
1762
1956
  - spec/spec_tests/data/sdam/single/direct_connection_external_ip.yml
1763
1957
  - spec/spec_tests/data/sdam/single/not_ok_response.yml
1764
- - spec/spec_tests/data/sdam/single/primary_address_change.yml
1958
+ - spec/spec_tests/data/sdam/single/ruby_primary_mismatched_me.yml
1765
1959
  - spec/spec_tests/data/sdam/single/too_old.yml
1766
1960
  - spec/spec_tests/data/sdam/single/direct_connection_mongos.yml
1767
1961
  - spec/spec_tests/data/sdam/single/compatible.yml
@@ -1777,6 +1971,7 @@ test_files:
1777
1971
  - spec/spec_tests/data/sdam/rs/secondary_mismatched_me.yml
1778
1972
  - spec/spec_tests/data/sdam/rs/primary_wrong_set_name.yml
1779
1973
  - spec/spec_tests/data/sdam/rs/discover_primary.yml
1974
+ - spec/spec_tests/data/sdam/rs/ruby_primary_address_change.yml
1780
1975
  - spec/spec_tests/data/sdam/rs/discover_passives.yml
1781
1976
  - spec/spec_tests/data/sdam/rs/primary_mismatched_me.yml
1782
1977
  - spec/spec_tests/data/sdam/rs/normalize_case.yml
@@ -1784,11 +1979,11 @@ test_files:
1784
1979
  - spec/spec_tests/data/sdam/rs/discovery.yml
1785
1980
  - spec/spec_tests/data/sdam/rs/ghost_discovered.yml
1786
1981
  - spec/spec_tests/data/sdam/rs/equal_electionids.yml
1982
+ - spec/spec_tests/data/sdam/rs/primary_mismatched_me_not_removed.yml
1787
1983
  - spec/spec_tests/data/sdam/rs/hosts_differ_from_seeds.yml
1788
1984
  - spec/spec_tests/data/sdam/rs/primary_disconnect.yml
1789
1985
  - spec/spec_tests/data/sdam/rs/rsother_discovered.yml
1790
1986
  - spec/spec_tests/data/sdam/rs/discover_secondary.yml
1791
- - spec/spec_tests/data/sdam/rs/primary_address_change.yml
1792
1987
  - spec/spec_tests/data/sdam/rs/stepdown_change_set_name.yml
1793
1988
  - spec/spec_tests/data/sdam/rs/secondary_wrong_set_name.yml
1794
1989
  - spec/spec_tests/data/sdam/rs/ls_timeout.yml
@@ -1800,10 +1995,11 @@ test_files:
1800
1995
  - spec/spec_tests/data/sdam/rs/compatible_unknown.yml
1801
1996
  - spec/spec_tests/data/sdam/rs/too_old.yml
1802
1997
  - spec/spec_tests/data/sdam/rs/primary_becomes_standalone.yml
1998
+ - spec/spec_tests/data/sdam/rs/repeated.yml
1803
1999
  - spec/spec_tests/data/sdam/rs/sec_not_auth.yml
1804
2000
  - spec/spec_tests/data/sdam/rs/incompatible_arbiter.yml
2001
+ - spec/spec_tests/data/sdam/rs/ruby_secondary_wrong_set_name_with_primary_second.yml
1805
2002
  - spec/spec_tests/data/sdam/rs/new_primary_wrong_set_name.yml
1806
- - spec/spec_tests/data/sdam/rs/secondary_wrong_set_name_with_primary_second.yml
1807
2003
  - spec/spec_tests/data/sdam/rs/primary_disconnect_electionid.yml
1808
2004
  - spec/spec_tests/data/sdam/rs/primary_to_no_primary_mismatched_me.yml
1809
2005
  - spec/spec_tests/data/sdam/rs/primary_disconnect_setversion.yml