mongo 2.11.6 → 2.12.0.rc0

Sign up to get free protection for your applications and to get access to all the features.
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