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
@@ -22,7 +22,7 @@ describe Mongo::Operation::RemoveUser do
22
22
  context 'when user removal was successful' do
23
23
 
24
24
  let!(:response) do
25
- operation.execute(root_authorized_primary)
25
+ operation.execute(root_authorized_primary, client: nil)
26
26
  end
27
27
 
28
28
  it 'removes the user from the database' do
@@ -33,12 +33,12 @@ describe Mongo::Operation::RemoveUser do
33
33
  context 'when removal was not successful' do
34
34
 
35
35
  before do
36
- operation.execute(root_authorized_primary)
36
+ operation.execute(root_authorized_primary, client: nil)
37
37
  end
38
38
 
39
39
  it 'raises an exception' do
40
40
  expect {
41
- operation.execute(root_authorized_primary)
41
+ operation.execute(root_authorized_primary, client: nil)
42
42
  }.to raise_error(Mongo::Error::OperationFailure)
43
43
  end
44
44
  end
@@ -98,7 +98,7 @@ describe Mongo::Operation::Update do
98
98
  end
99
99
 
100
100
  it 'updates the document' do
101
- op.bulk_execute(authorized_primary)
101
+ op.bulk_execute(authorized_primary, client: nil)
102
102
  expect(authorized_collection.find(field: 'blah').count).to eq(1)
103
103
  end
104
104
  end
@@ -122,7 +122,7 @@ describe Mongo::Operation::Update do
122
122
  end
123
123
 
124
124
  it 'updates the documents' do
125
- op.bulk_execute(authorized_primary)
125
+ op.bulk_execute(authorized_primary, client: nil)
126
126
  expect(authorized_collection.find(field: 'blah').count).to eq(2)
127
127
  end
128
128
  end
@@ -154,7 +154,7 @@ describe Mongo::Operation::Update do
154
154
  context 'when write concern is acknowledged' do
155
155
 
156
156
  it 'aborts after first error' do
157
- failing_update.bulk_execute(authorized_primary)
157
+ failing_update.bulk_execute(authorized_primary, client: nil)
158
158
  expect(authorized_collection.find(other: 'blah').count).to eq(0)
159
159
  end
160
160
  end
@@ -166,7 +166,7 @@ describe Mongo::Operation::Update do
166
166
  end
167
167
 
168
168
  it 'aborts after first error' do
169
- failing_update.bulk_execute(authorized_primary)
169
+ failing_update.bulk_execute(authorized_primary, client: nil)
170
170
  expect(authorized_collection.find(other: 'blah').count).to eq(0)
171
171
  end
172
172
  end
@@ -199,7 +199,7 @@ describe Mongo::Operation::Update do
199
199
  context 'when write concern is acknowledged' do
200
200
 
201
201
  it 'does not abort after first error' do
202
- failing_update.bulk_execute(authorized_primary)
202
+ failing_update.bulk_execute(authorized_primary, client: nil)
203
203
  expect(authorized_collection.find(other: 'blah').count).to eq(1)
204
204
  end
205
205
  end
@@ -211,7 +211,7 @@ describe Mongo::Operation::Update do
211
211
  end
212
212
 
213
213
  it 'does not abort after first error' do
214
- failing_update.bulk_execute(authorized_primary)
214
+ failing_update.bulk_execute(authorized_primary, client: nil)
215
215
  expect(authorized_collection.find(other: 'blah').count).to eq(1)
216
216
  end
217
217
  end
@@ -108,12 +108,7 @@ describe Mongo::Operation::Update::OpMsg do
108
108
  end
109
109
 
110
110
  let(:expected_payload_1) do
111
- {
112
- type: 1,
113
- payload: { identifier: 'updates',
114
- sequence: updates
115
- }
116
- }
111
+ Mongo::Protocol::Msg::Section1.new('updates', updates)
117
112
  end
118
113
 
119
114
  let(:session) do
@@ -150,6 +145,8 @@ describe Mongo::Operation::Update::OpMsg do
150
145
  end
151
146
 
152
147
  context 'when an implicit session is created and the topology is then updated and the server does not support sessions' do
148
+ # Mocks on features are incompatible with linting
149
+ skip_if_linting
153
150
 
154
151
  let(:expected_global_args) do
155
152
  global_args.dup.tap do |args|
@@ -100,7 +100,7 @@ describe Mongo::Operation::Update do
100
100
  end
101
101
 
102
102
  let(:result) do
103
- update.execute(authorized_primary)
103
+ update.execute(authorized_primary, client: nil)
104
104
  end
105
105
 
106
106
  it 'updates the document' do
@@ -128,7 +128,7 @@ describe Mongo::Operation::Update do
128
128
 
129
129
  it 'raises an exception' do
130
130
  expect {
131
- update.execute(authorized_primary)
131
+ update.execute(authorized_primary, client: nil)
132
132
  }.to raise_error(Mongo::Error::OperationFailure)
133
133
  end
134
134
  end
@@ -152,7 +152,7 @@ describe Mongo::Operation::Update do
152
152
  end
153
153
 
154
154
  let(:result) do
155
- update.execute(authorized_primary)
155
+ update.execute(authorized_primary, client: nil)
156
156
  end
157
157
 
158
158
  it 'updates the documents' do
@@ -180,7 +180,7 @@ describe Mongo::Operation::Update do
180
180
 
181
181
  it 'raises an exception' do
182
182
  expect {
183
- update.execute(authorized_primary)
183
+ update.execute(authorized_primary, client: nil)
184
184
  }.to raise_error(Mongo::Error::OperationFailure)
185
185
  end
186
186
  end
@@ -193,7 +193,7 @@ describe Mongo::Operation::Update do
193
193
 
194
194
  it 'raises an error' do
195
195
  expect {
196
- update.execute(authorized_primary)
196
+ update.execute(authorized_primary, client: nil)
197
197
  }.to raise_error(Mongo::Error::MaxBSONSize)
198
198
  end
199
199
  end
@@ -205,7 +205,7 @@ describe Mongo::Operation::Update do
205
205
  end
206
206
 
207
207
  let(:result) do
208
- update.execute(authorized_primary)
208
+ update.execute(authorized_primary, client: nil)
209
209
  end
210
210
 
211
211
  it 'inserts the document' do
@@ -243,7 +243,7 @@ describe Mongo::Operation::Update do
243
243
  end
244
244
 
245
245
  let(:result) do
246
- update.execute(authorized_primary)
246
+ update.execute(authorized_primary, client: nil)
247
247
  end
248
248
 
249
249
  before do
@@ -35,7 +35,7 @@ describe Mongo::Operation::UpdateUser do
35
35
  context 'when user update was successful' do
36
36
 
37
37
  let!(:response) do
38
- operation.execute(root_authorized_primary)
38
+ operation.execute(root_authorized_primary, client: nil)
39
39
  end
40
40
 
41
41
  it 'updates the user in the database' do
@@ -1,8 +1,8 @@
1
- require 'spec_helper'
1
+ require 'lite_spec_helper'
2
2
 
3
3
  describe Mongo::Protocol::Compressed do
4
4
 
5
- let(:original_message) { Mongo::Protocol::Query.new(SpecConfig.instance.test_db, TEST_COLL, { ping: 1 }) }
5
+ let(:original_message) { Mongo::Protocol::Query.new(SpecConfig.instance.test_db, 'protocol-test', { ping: 1 }) }
6
6
  let(:compressor) { 'zlib' }
7
7
  let(:level) { nil }
8
8
 
@@ -53,7 +53,6 @@ describe Mongo::Protocol::Compressed do
53
53
  end
54
54
 
55
55
  context 'when the original message is not replyable' do
56
- min_server_fcv '3.6'
57
56
 
58
57
  let(:original_message) do
59
58
  Mongo::Protocol::Msg.new([:more_to_come], {}, { ping: 1 })
@@ -1,16 +1,17 @@
1
- require 'spec_helper'
1
+ require 'lite_spec_helper'
2
+ require 'support/shared/protocol'
2
3
 
3
4
  describe Mongo::Protocol::Delete do
4
5
 
5
6
  let(:opcode) { 2006 }
6
7
  let(:db) { SpecConfig.instance.test_db }
7
- let(:coll) { TEST_COLL }
8
- let(:ns) { "#{db}.#{coll}" }
8
+ let(:collection_name) { 'protocol-test' }
9
+ let(:ns) { "#{db}.#{collection_name}" }
9
10
  let(:selector) { { :name => 'Tyler' } }
10
11
  let(:options) { Hash.new }
11
12
 
12
13
  let(:message) do
13
- described_class.new(db, coll, selector, options)
14
+ described_class.new(db, collection_name, selector, options)
14
15
  end
15
16
 
16
17
  describe '#initialize' do
@@ -41,7 +42,7 @@ describe Mongo::Protocol::Delete do
41
42
 
42
43
  context 'when the fields are equal' do
43
44
  let(:other) do
44
- described_class.new(db, coll, selector, options)
45
+ described_class.new(db, collection_name, selector, options)
45
46
  end
46
47
 
47
48
  it 'returns true' do
@@ -51,7 +52,7 @@ describe Mongo::Protocol::Delete do
51
52
 
52
53
  context 'when the database is not equal' do
53
54
  let(:other) do
54
- described_class.new('tyler', coll, selector, options)
55
+ described_class.new('tyler', collection_name, selector, options)
55
56
  end
56
57
 
57
58
  it 'returns false' do
@@ -71,7 +72,7 @@ describe Mongo::Protocol::Delete do
71
72
 
72
73
  context 'when the selector is not equal' do
73
74
  let(:other) do
74
- described_class.new(db, coll, { :a => 1 }, options)
75
+ described_class.new(db, collection_name, { :a => 1 }, options)
75
76
  end
76
77
 
77
78
  it 'returns false' do
@@ -81,7 +82,7 @@ describe Mongo::Protocol::Delete do
81
82
 
82
83
  context 'when the options are not equal' do
83
84
  let(:other) do
84
- described_class.new(db, coll, selector, :flags => [:single_remove])
85
+ described_class.new(db, collection_name, selector, :flags => [:single_remove])
85
86
  end
86
87
 
87
88
  it 'returns false' do
@@ -1,16 +1,17 @@
1
- require 'spec_helper'
1
+ require 'lite_spec_helper'
2
+ require 'support/shared/protocol'
2
3
 
3
4
  describe Mongo::Protocol::GetMore do
4
5
 
5
6
  let(:opcode) { 2005 }
6
7
  let(:db) { SpecConfig.instance.test_db }
7
- let(:coll) { TEST_COLL }
8
- let(:ns) { "#{db}.#{coll}" }
8
+ let(:collection_name) { 'protocol-test' }
9
+ let(:ns) { "#{db}.#{collection_name}" }
9
10
  let(:limit) { 25 }
10
11
  let(:cursor_id) { 12345 }
11
12
 
12
13
  let(:message) do
13
- described_class.new(db, coll, limit, cursor_id)
14
+ described_class.new(db, collection_name, limit, cursor_id)
14
15
  end
15
16
 
16
17
  describe '#initialize' do
@@ -34,7 +35,7 @@ describe Mongo::Protocol::GetMore do
34
35
 
35
36
  context 'when the fields are equal' do
36
37
  let(:other) do
37
- described_class.new(db, coll, limit, cursor_id)
38
+ described_class.new(db, collection_name, limit, cursor_id)
38
39
  end
39
40
 
40
41
  it 'returns true' do
@@ -44,7 +45,7 @@ describe Mongo::Protocol::GetMore do
44
45
 
45
46
  context 'when the database is not equal' do
46
47
  let(:other) do
47
- described_class.new('tyler', coll, limit, cursor_id)
48
+ described_class.new('tyler', collection_name, limit, cursor_id)
48
49
  end
49
50
 
50
51
  it 'returns false' do
@@ -64,7 +65,7 @@ describe Mongo::Protocol::GetMore do
64
65
 
65
66
  context 'when the limit is not equal' do
66
67
  let(:other) do
67
- described_class.new(db, coll, 123, cursor_id)
68
+ described_class.new(db, collection_name, 123, cursor_id)
68
69
  end
69
70
 
70
71
  it 'returns false' do
@@ -74,7 +75,7 @@ describe Mongo::Protocol::GetMore do
74
75
 
75
76
  context 'when the cursor id is not equal' do
76
77
  let(:other) do
77
- described_class.new(db, coll, limit, 7777)
78
+ described_class.new(db, collection_name, limit, 7777)
78
79
  end
79
80
 
80
81
  it 'returns false' do
@@ -1,18 +1,19 @@
1
- require 'spec_helper'
1
+ require 'lite_spec_helper'
2
+ require 'support/shared/protocol'
2
3
 
3
4
  describe Mongo::Protocol::Insert do
4
5
 
5
6
  let(:opcode) { 2002 }
6
7
  let(:db) { SpecConfig.instance.test_db }
7
- let(:coll) { TEST_COLL }
8
- let(:ns) { "#{db}.#{coll}" }
8
+ let(:collection_name) { 'protocol-test' }
9
+ let(:ns) { "#{db}.#{collection_name}" }
9
10
  let(:doc1) { { :name => 'Tyler' } }
10
11
  let(:doc2) { { :name => 'Brandon' } }
11
12
  let(:docs) { [doc1, doc2] }
12
13
  let(:options) { Hash.new }
13
14
 
14
15
  let(:message) do
15
- described_class.new(db, coll, docs, options)
16
+ described_class.new(db, collection_name, docs, options)
16
17
  end
17
18
 
18
19
  describe '#initialize' do
@@ -43,7 +44,7 @@ describe Mongo::Protocol::Insert do
43
44
 
44
45
  context 'when the fields are equal' do
45
46
  let(:other) do
46
- described_class.new(db, coll, docs, options)
47
+ described_class.new(db, collection_name, docs, options)
47
48
  end
48
49
 
49
50
  it 'returns true' do
@@ -53,7 +54,7 @@ describe Mongo::Protocol::Insert do
53
54
 
54
55
  context 'when the database is not equal' do
55
56
  let(:other) do
56
- described_class.new('tyler', coll, docs, options)
57
+ described_class.new('tyler', collection_name, docs, options)
57
58
  end
58
59
 
59
60
  it 'returns false' do
@@ -73,7 +74,7 @@ describe Mongo::Protocol::Insert do
73
74
 
74
75
  context 'when the documents are not equal' do
75
76
  let(:other) do
76
- described_class.new(db, coll, docs[1..1], options)
77
+ described_class.new(db, collection_name, docs[1..1], options)
77
78
  end
78
79
 
79
80
  it 'returns false' do
@@ -83,7 +84,7 @@ describe Mongo::Protocol::Insert do
83
84
 
84
85
  context 'when the options are not equal' do
85
86
  let(:other) do
86
- described_class.new(db, coll, docs, :flags => [:continue_on_error])
87
+ described_class.new(db, collection_name, docs, :flags => [:continue_on_error])
87
88
  end
88
89
 
89
90
  it 'returns false' do
@@ -1,14 +1,15 @@
1
- require 'spec_helper'
1
+ require 'lite_spec_helper'
2
+ require 'support/shared/protocol'
2
3
 
3
4
  describe Mongo::Protocol::KillCursors do
4
5
 
5
6
  let(:opcode) { 2007 }
6
7
  let(:cursor_ids) { [123, 456, 789] }
7
8
  let(:id_count) { cursor_ids.size }
8
- let(:collection) { TEST_COLL }
9
+ let(:collection_name) { 'protocol-test' }
9
10
  let(:database) { SpecConfig.instance.test_db }
10
11
  let(:message) do
11
- described_class.new(collection, database, cursor_ids)
12
+ described_class.new(collection_name, database, cursor_ids)
12
13
  end
13
14
 
14
15
  describe '#initialize' do
@@ -28,7 +29,7 @@ describe Mongo::Protocol::KillCursors do
28
29
 
29
30
  context 'when the cursor ids are equal' do
30
31
  let(:other) do
31
- described_class.new(collection, database, cursor_ids)
32
+ described_class.new(collection_name, database, cursor_ids)
32
33
  end
33
34
 
34
35
  it 'returns true' do
@@ -38,7 +39,7 @@ describe Mongo::Protocol::KillCursors do
38
39
 
39
40
  context 'when the cursor ids are not equal' do
40
41
  let(:other) do
41
- described_class.new(collection, database, [123, 456])
42
+ described_class.new(collection_name, database, [123, 456])
42
43
  end
43
44
 
44
45
  it 'returns false' do
@@ -6,11 +6,11 @@ describe Mongo::Protocol::Msg do
6
6
  let(:opcode) { 2013 }
7
7
  let(:flags) { [] }
8
8
  let(:options) { {} }
9
- let(:global_args) { { '$db' => SpecConfig.instance.test_db, ping: 1 } }
10
- let(:sections) { [ ] }
9
+ let(:main_document) { { '$db' => SpecConfig.instance.test_db, ping: 1 } }
10
+ let(:sequences) { [ ] }
11
11
 
12
12
  let(:message) do
13
- described_class.new(flags, options, global_args, *sections)
13
+ described_class.new(flags, options, main_document, *sequences)
14
14
  end
15
15
 
16
16
  let(:deserialized) do
@@ -19,8 +19,8 @@ describe Mongo::Protocol::Msg do
19
19
 
20
20
  describe '#initialize' do
21
21
 
22
- it 'adds the global_args to the sections' do
23
- expect(message.sections[0]).to eq(type: 0, payload: global_args)
22
+ it 'adds the main_document to the sections' do
23
+ expect(message.sections[0]).to eq(type: 0, payload: main_document)
24
24
  end
25
25
 
26
26
  context 'when flag bits are provided' do
@@ -59,13 +59,13 @@ describe Mongo::Protocol::Msg do
59
59
  end
60
60
  end
61
61
 
62
- context 'with user-provided and driver-generated keys in global_args' do
63
- let(:global_args) do
62
+ context 'with user-provided and driver-generated keys in main_document' do
63
+ let(:main_document) do
64
64
  { 'ping' => 1, 'lsid' => '__lsid__', 'a' => 'b', '$clusterTime' => '__ct__',
65
65
  'signature' => '__signature__', 'd' => 'f'}
66
66
  end
67
67
 
68
- it 'reorders global_args for better logging' do
68
+ it 'reorders main_document for better logging' do
69
69
  expect(message.payload[:command].keys).to eq(%w(ping a d lsid $clusterTime signature))
70
70
  end
71
71
  end
@@ -78,7 +78,7 @@ describe Mongo::Protocol::Msg do
78
78
  context 'when the fields are equal' do
79
79
 
80
80
  let(:other) do
81
- described_class.new(flags, options, global_args)
81
+ described_class.new(flags, options, main_document)
82
82
  end
83
83
 
84
84
  it 'returns true' do
@@ -89,7 +89,7 @@ describe Mongo::Protocol::Msg do
89
89
  context 'when the flags are not equal' do
90
90
 
91
91
  let(:other) do
92
- described_class.new([:more_to_come], options, global_args)
92
+ described_class.new([:more_to_come], options, main_document)
93
93
  end
94
94
 
95
95
  it 'returns false' do
@@ -97,10 +97,14 @@ describe Mongo::Protocol::Msg do
97
97
  end
98
98
  end
99
99
 
100
- context 'when the global_args are not equal' do
100
+ context 'when the main_document are not equal' do
101
+
102
+ let(:other_main_document) do
103
+ { '$db'=> SpecConfig.instance.test_db, ismaster: 1 }
104
+ end
101
105
 
102
106
  let(:other) do
103
- described_class.new(flags, nil, { '$db'=> SpecConfig.instance.test_db, ismaster: 1 })
107
+ described_class.new(flags, nil, other_main_document)
104
108
  end
105
109
 
106
110
  it 'returns false' do
@@ -158,7 +162,7 @@ describe Mongo::Protocol::Msg do
158
162
  let(:flag_bytes) { bytes.to_s[16..19] }
159
163
  let(:payload_type) { bytes.to_s[20] }
160
164
  let(:payload_bytes) { bytes.to_s[21..-1] }
161
- let(:global_args) { { ping: 1 } }
165
+ let(:main_document) { { ping: 1 } }
162
166
 
163
167
  include_examples 'message with a header'
164
168
 
@@ -205,13 +209,13 @@ describe Mongo::Protocol::Msg do
205
209
  end
206
210
 
207
211
  it 'serializes the global arguments' do
208
- expect(payload_bytes).to be_bson(global_args)
212
+ expect(payload_bytes).to be_bson(main_document)
209
213
  end
210
214
  end
211
215
 
212
- context 'when additional sections are provided' do
216
+ context 'when sequences are provided' do
213
217
 
214
- let(:sections) do
218
+ let(:sequences) do
215
219
  [ section ]
216
220
  end
217
221
 
@@ -224,12 +228,13 @@ describe Mongo::Protocol::Msg do
224
228
  end
225
229
 
226
230
  it 'raises an exception' do
227
- expect {
228
- message.serialize
229
- }.to raise_exception(Mongo::Error::UnknownPayloadType)
231
+ expect do
232
+ message
233
+ end.to raise_exception(ArgumentError, /All sequences must be Section1 instances/)
230
234
  end
231
235
  end
232
236
 
237
+ =begin no longer supported
233
238
  context 'when a 0 payload type is specified' do
234
239
 
235
240
  let(:section) do
@@ -265,13 +270,12 @@ describe Mongo::Protocol::Msg do
265
270
  expect(section_bytes).to be_bson(section[:payload])
266
271
  end
267
272
  end
273
+ =end
268
274
 
269
- context 'when a 1 payload type is specified' do
275
+ context 'when a payload of type 1 is specified' do
270
276
 
271
277
  let(:section) do
272
- { type: 1,
273
- payload: { identifier: 'documents',
274
- sequence: [ { a: 1 } ] } }
278
+ Mongo::Protocol::Msg::Section1.new('documents', [ { a: 1 } ])
275
279
  end
276
280
 
277
281
  let(:section_payload_type) { bytes.to_s[36] }
@@ -297,23 +301,23 @@ describe Mongo::Protocol::Msg do
297
301
 
298
302
  context 'when two sections are specified' do
299
303
 
300
- let(:sections) do
304
+ let(:sequences) do
301
305
  [ section1, section2 ]
302
306
  end
303
307
 
304
308
  let(:section1) do
305
- { type: 1,
306
- payload: { identifier: 'documents',
307
- sequence: [ { a: 1 } ] } }
309
+ Mongo::Protocol::Msg::Section1.new('documents', [ { a: 1 } ])
308
310
  end
309
311
 
310
312
  let(:section2) do
311
- { type: 1,
312
- payload: { identifier: 'updates',
313
- sequence: [ {:q => { :bar => 1 },
314
- :u => { :$set => { :bar => 2 } },
315
- :multi => true,
316
- :upsert => false } ] } }
313
+ Mongo::Protocol::Msg::Section1.new('updates', [
314
+ {
315
+ :q => { :bar => 1 },
316
+ :u => { :$set => { :bar => 2 } },
317
+ :multi => true,
318
+ :upsert => false,
319
+ }
320
+ ])
317
321
  end
318
322
 
319
323
  let(:section1_payload_type) { bytes.to_s[36] }
@@ -355,16 +359,16 @@ describe Mongo::Protocol::Msg do
355
359
  end
356
360
 
357
361
  it 'serializes the second section bytes' do
358
- expect(section2_bytes).to be_bson(section2[:payload][:sequence][0])
362
+ expect(section2_bytes).to be_bson(section2.documents[0])
359
363
  end
360
364
  end
361
365
  end
362
366
 
367
+ =begin no longer supported
363
368
  context 'when the sections are mixed types and payload type 1 comes before type 0' do
364
369
 
365
370
  let(:section1) do
366
- { type: 1,
367
- payload: { identifier: 'documents', sequence: [ { 'a' => 1 }]}}
371
+ Mongo::Protocol::Msg::Section1.new('documents', [ { a: 1 } ])
368
372
  end
369
373
 
370
374
  let(:section2) do
@@ -376,19 +380,20 @@ describe Mongo::Protocol::Msg do
376
380
  end
377
381
 
378
382
  it 'serializes all sections' do
379
- expect(deserialized.documents).to eq([ BSON::Document.new(global_args), { 'a' => 1 }, { 'b' => 2 }])
383
+ expect(deserialized.documents).to eq([ BSON::Document.new(main_document), { 'a' => 1 }, { 'b' => 2 }])
380
384
  end
381
385
  end
386
+ =end
382
387
  end
383
388
 
384
389
  context 'when the validating_keys option is true with payload 1' do
385
390
 
386
- let(:sections) do
391
+ let(:sequences) do
387
392
  [ section ]
388
393
  end
389
394
 
390
395
  let(:section) do
391
- { type: 1, payload: { identifier: 'documents', sequence: [ { '$b' => 2 } ] } }
396
+ Mongo::Protocol::Msg::Section1.new('documents', [ { '$b' => 2 } ])
392
397
  end
393
398
 
394
399
  let(:options) do
@@ -404,12 +409,12 @@ describe Mongo::Protocol::Msg do
404
409
 
405
410
  context 'when the validating_keys option is false with payload 1' do
406
411
 
407
- let(:sections) do
412
+ let(:sequences) do
408
413
  [ section ]
409
414
  end
410
415
 
411
416
  let(:section) do
412
- { type: 1, payload: { identifier: 'documents', sequence: [ { '$b' => 2 } ] } }
417
+ Mongo::Protocol::Msg::Section1.new('documents', [ { '$b' => 2 } ])
413
418
  end
414
419
 
415
420
  let(:options) do
@@ -427,7 +432,7 @@ describe Mongo::Protocol::Msg do
427
432
  context 'when the payload type is valid' do
428
433
 
429
434
  it 'deserializes the message' do
430
- expect(deserialized.documents).to eq([ BSON::Document.new(global_args) ])
435
+ expect(deserialized.documents).to eq([ BSON::Document.new(main_document) ])
431
436
  end
432
437
  end
433
438
 
@@ -440,9 +445,9 @@ describe Mongo::Protocol::Msg do
440
445
  end
441
446
 
442
447
  it 'raises an exception' do
443
- expect {
448
+ expect do
444
449
  Mongo::Protocol::Message.deserialize(StringIO.new(invalid_payload_message))
445
- }.to raise_exception(Mongo::Error::UnknownPayloadType)
450
+ end.to raise_exception(Mongo::Error::UnknownPayloadType)
446
451
  end
447
452
  end
448
453
  end
@@ -454,7 +459,7 @@ describe Mongo::Protocol::Msg do
454
459
  it 'creates a payload with the command' do
455
460
  expect(message.payload[:command_name]).to eq('ping')
456
461
  expect(message.payload[:database_name]).to eq(SpecConfig.instance.test_db)
457
- expect(message.payload[:command]).to eq('ping' => 1)
462
+ expect(message.payload[:command]).to eq('ping' => 1, '$db' => SpecConfig.instance.test_db)
458
463
  expect(message.payload[:request_id]).to eq(message.request_id)
459
464
  end
460
465
  end
@@ -462,27 +467,26 @@ describe Mongo::Protocol::Msg do
462
467
  context 'when the contains a payload type 1' do
463
468
 
464
469
  let(:section) do
465
- { type: 1,
466
- payload: { identifier: 'documents',
467
- sequence: [ { a: 1 } ] } }
470
+ Mongo::Protocol::Msg::Section1.new('documents', [ { a: 1 } ])
468
471
  end
469
472
 
470
- let(:global_args) do
473
+ let(:main_document) do
471
474
  { '$db' => SpecConfig.instance.test_db,
472
475
  'insert' => 'foo',
473
476
  'ordered' => true
474
477
  }
475
478
  end
476
479
 
477
- let(:sections) do
480
+ let(:sequences) do
478
481
  [ section ]
479
482
  end
480
483
 
481
484
  let(:expected_command_doc) do
482
485
  {
483
- 'insert' => 'foo',
484
- 'documents' => [{ 'a' => 1 }],
485
- 'ordered' => true
486
+ 'insert' => 'foo',
487
+ 'documents' => [{ 'a' => 1 }],
488
+ 'ordered' => true,
489
+ '$db' => SpecConfig.instance.test_db,
486
490
  }
487
491
  end
488
492