mongo 2.11.6 → 2.12.0.rc0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +2 -2
- data.tar.gz.sig +0 -0
- data/CONTRIBUTING.md +1 -1
- data/lib/mongo.rb +3 -0
- data/lib/mongo/address.rb +13 -2
- data/lib/mongo/auth.rb +1 -0
- data/lib/mongo/auth/credential_cache.rb +51 -0
- data/lib/mongo/auth/scram/conversation.rb +20 -16
- data/lib/mongo/auth/user.rb +0 -8
- data/lib/mongo/auth/user/view.rb +4 -4
- data/lib/mongo/background_thread.rb +1 -1
- data/lib/mongo/bulk_write.rb +5 -5
- data/lib/mongo/client.rb +126 -11
- data/lib/mongo/client_encryption.rb +103 -0
- data/lib/mongo/cluster.rb +2 -2
- data/lib/mongo/cluster/reapers/cursor_reaper.rb +18 -6
- data/lib/mongo/cluster/sdam_flow.rb +54 -58
- data/lib/mongo/cluster/srv_monitor.rb +1 -1
- data/lib/mongo/collection.rb +3 -3
- data/lib/mongo/collection/view.rb +1 -1
- data/lib/mongo/collection/view/aggregation.rb +1 -1
- data/lib/mongo/collection/view/change_stream.rb +12 -3
- data/lib/mongo/collection/view/iterable.rb +14 -5
- data/lib/mongo/collection/view/map_reduce.rb +2 -2
- data/lib/mongo/collection/view/readable.rb +7 -9
- data/lib/mongo/collection/view/writable.rb +7 -7
- data/lib/mongo/crypt.rb +33 -0
- data/lib/mongo/crypt/auto_decryption_context.rb +42 -0
- data/lib/mongo/crypt/auto_encrypter.rb +169 -0
- data/lib/mongo/crypt/auto_encryption_context.rb +44 -0
- data/lib/mongo/crypt/binary.rb +155 -0
- data/lib/mongo/crypt/binding.rb +1162 -0
- data/lib/mongo/crypt/context.rb +135 -0
- data/lib/mongo/crypt/data_key_context.rb +162 -0
- data/lib/mongo/crypt/encryption_io.rb +283 -0
- data/lib/mongo/crypt/explicit_decryption_context.rb +40 -0
- data/lib/mongo/crypt/explicit_encrypter.rb +117 -0
- data/lib/mongo/crypt/explicit_encryption_context.rb +89 -0
- data/lib/mongo/crypt/handle.rb +293 -0
- data/lib/mongo/crypt/hooks.rb +90 -0
- data/lib/mongo/crypt/kms_context.rb +67 -0
- data/lib/mongo/crypt/status.rb +131 -0
- data/lib/mongo/cursor.rb +64 -32
- data/lib/mongo/database.rb +13 -6
- data/lib/mongo/database/view.rb +13 -4
- data/lib/mongo/dbref.rb +9 -2
- data/lib/mongo/error.rb +5 -1
- data/lib/mongo/error/crypt_error.rb +31 -0
- data/lib/mongo/error/{failed_stringprep_validation.rb → failed_string_prep_validation.rb} +0 -0
- data/lib/mongo/error/invalid_cursor_operation.rb +27 -0
- data/lib/mongo/error/kms_error.rb +22 -0
- data/lib/mongo/error/max_bson_size.rb +14 -3
- data/lib/mongo/error/mongocryptd_spawn_error.rb +22 -0
- data/lib/mongo/error/no_server_available.rb +8 -3
- data/lib/mongo/error/operation_failure.rb +1 -0
- data/lib/mongo/grid/file.rb +0 -5
- data/lib/mongo/grid/file/chunk.rb +0 -2
- data/lib/mongo/grid/file/info.rb +2 -1
- data/lib/mongo/grid/fs_bucket.rb +13 -15
- data/lib/mongo/grid/stream/write.rb +3 -9
- data/lib/mongo/index/view.rb +3 -3
- data/lib/mongo/monitoring/event/command_started.rb +6 -1
- data/lib/mongo/operation/collections_info.rb +6 -3
- data/lib/mongo/operation/delete/op_msg.rb +1 -1
- data/lib/mongo/operation/find/op_msg.rb +4 -1
- data/lib/mongo/operation/get_more/op_msg.rb +4 -1
- data/lib/mongo/operation/insert/command.rb +2 -2
- data/lib/mongo/operation/insert/legacy.rb +2 -2
- data/lib/mongo/operation/insert/op_msg.rb +3 -3
- data/lib/mongo/operation/result.rb +36 -27
- data/lib/mongo/operation/shared/executable.rb +10 -8
- data/lib/mongo/operation/shared/executable_no_validate.rb +2 -2
- data/lib/mongo/operation/shared/op_msg_or_command.rb +2 -2
- data/lib/mongo/operation/shared/op_msg_or_find_command.rb +2 -2
- data/lib/mongo/operation/shared/op_msg_or_list_indexes_command.rb +2 -2
- data/lib/mongo/operation/shared/write.rb +17 -10
- data/lib/mongo/operation/update/op_msg.rb +1 -1
- data/lib/mongo/protocol/compressed.rb +6 -5
- data/lib/mongo/protocol/insert.rb +3 -1
- data/lib/mongo/protocol/message.rb +72 -8
- data/lib/mongo/protocol/msg.rb +191 -37
- data/lib/mongo/protocol/query.rb +7 -9
- data/lib/mongo/protocol/serializers.rb +6 -2
- data/lib/mongo/server.rb +10 -4
- data/lib/mongo/server/connection.rb +20 -9
- data/lib/mongo/server/connection_base.rb +81 -12
- data/lib/mongo/server/connection_common.rb +61 -0
- data/lib/mongo/server/connection_pool.rb +37 -1
- data/lib/mongo/server/description.rb +9 -11
- data/lib/mongo/server/monitor.rb +2 -0
- data/lib/mongo/server/monitor/connection.rb +3 -18
- data/lib/mongo/server/pending_connection.rb +2 -1
- data/lib/mongo/session.rb +2 -2
- data/lib/mongo/session/session_pool.rb +8 -3
- data/lib/mongo/socket.rb +29 -16
- data/lib/mongo/socket/ssl.rb +23 -8
- data/lib/mongo/socket/tcp.rb +12 -3
- data/lib/mongo/timeout.rb +49 -0
- data/lib/mongo/uri.rb +30 -1
- data/lib/mongo/version.rb +1 -1
- data/mongo.gemspec +1 -1
- data/spec/README.md +134 -7
- data/spec/integration/auth_spec.rb +53 -0
- data/spec/integration/{client_options_spec.rb → client_authentication_options_spec.rb} +10 -10
- data/spec/integration/client_construction_spec.rb +76 -1
- data/spec/integration/client_side_encryption/auto_encryption_bulk_writes_spec.rb +351 -0
- data/spec/integration/client_side_encryption/auto_encryption_command_monitoring_spec.rb +301 -0
- data/spec/integration/client_side_encryption/auto_encryption_mongocryptd_spawn_spec.rb +71 -0
- data/spec/integration/client_side_encryption/auto_encryption_old_wire_version_spec.rb +76 -0
- data/spec/integration/client_side_encryption/auto_encryption_reconnect_spec.rb +216 -0
- data/spec/integration/client_side_encryption/auto_encryption_spec.rb +600 -0
- data/spec/integration/client_side_encryption/bson_size_limit_spec.rb +183 -0
- data/spec/integration/client_side_encryption/bypass_mongocryptd_spawn_spec.rb +74 -0
- data/spec/integration/client_side_encryption/client_close_spec.rb +59 -0
- data/spec/integration/client_side_encryption/corpus_spec.rb +228 -0
- data/spec/integration/client_side_encryption/custom_endpoint_spec.rb +132 -0
- data/spec/integration/client_side_encryption/data_key_spec.rb +163 -0
- data/spec/integration/client_side_encryption/explicit_encryption_spec.rb +114 -0
- data/spec/integration/client_side_encryption/external_key_vault_spec.rb +137 -0
- data/spec/integration/client_side_encryption/views_spec.rb +42 -0
- data/spec/integration/client_update_spec.rb +120 -0
- data/spec/integration/command_monitoring_spec.rb +3 -1
- data/spec/integration/command_spec.rb +44 -10
- data/spec/integration/connection_spec.rb +57 -0
- data/spec/integration/reconnect_spec.rb +7 -6
- data/spec/integration/size_limit_spec.rb +94 -0
- data/spec/integration/srv_monitoring_spec.rb +14 -6
- data/spec/lite_spec_helper.rb +31 -22
- data/spec/mongo/auth/cr_spec.rb +8 -0
- data/spec/mongo/auth/ldap_spec.rb +5 -1
- data/spec/mongo/auth/scram/conversation_spec.rb +5 -6
- data/spec/mongo/auth/scram/negotiation_spec.rb +74 -75
- data/spec/mongo/auth/scram_spec.rb +45 -35
- data/spec/mongo/auth/x509_spec.rb +5 -1
- data/spec/mongo/client_construction_spec.rb +206 -3
- data/spec/mongo/client_encryption_spec.rb +408 -0
- data/spec/mongo/cluster/cursor_reaper_spec.rb +12 -8
- data/spec/mongo/cluster/socket_reaper_spec.rb +14 -3
- data/spec/mongo/collection/view/aggregation_spec.rb +0 -2
- data/spec/mongo/collection/view/change_stream_spec.rb +7 -7
- data/spec/mongo/collection/view/map_reduce_spec.rb +3 -3
- data/spec/mongo/collection/view_spec.rb +1 -1
- data/spec/mongo/collection_spec.rb +4 -33
- data/spec/mongo/crypt/auto_decryption_context_spec.rb +90 -0
- data/spec/mongo/crypt/auto_encrypter_spec.rb +182 -0
- data/spec/mongo/crypt/auto_encryption_context_spec.rb +107 -0
- data/spec/mongo/crypt/binary_spec.rb +115 -0
- data/spec/mongo/crypt/binding/binary_spec.rb +56 -0
- data/spec/mongo/crypt/binding/context_spec.rb +257 -0
- data/spec/mongo/crypt/binding/helpers_spec.rb +46 -0
- data/spec/mongo/crypt/binding/mongocrypt_spec.rb +144 -0
- data/spec/mongo/crypt/binding/status_spec.rb +99 -0
- data/spec/mongo/crypt/binding/version_spec.rb +22 -0
- data/spec/mongo/crypt/binding_unloaded_spec.rb +20 -0
- data/spec/mongo/crypt/data_key_context_spec.rb +213 -0
- data/spec/mongo/crypt/encryption_io_spec.rb +136 -0
- data/spec/mongo/crypt/explicit_decryption_context_spec.rb +72 -0
- data/spec/mongo/crypt/explicit_encryption_context_spec.rb +170 -0
- data/spec/mongo/crypt/handle_spec.rb +198 -0
- data/spec/mongo/crypt/helpers/mongo_crypt_spec_helper.rb +108 -0
- data/spec/mongo/crypt/status_spec.rb +152 -0
- data/spec/mongo/cursor_spec.rb +24 -4
- data/spec/mongo/database_spec.rb +20 -0
- data/spec/mongo/error/crypt_error_spec.rb +26 -0
- data/spec/mongo/error/max_bson_size_spec.rb +35 -0
- data/spec/mongo/error/no_server_available_spec.rb +11 -1
- data/spec/mongo/error/operation_failure_spec.rb +6 -6
- data/spec/mongo/operation/aggregate_spec.rb +1 -1
- data/spec/mongo/operation/collections_info_spec.rb +1 -1
- data/spec/mongo/operation/command_spec.rb +3 -3
- data/spec/mongo/operation/create_index_spec.rb +3 -3
- data/spec/mongo/operation/create_user_spec.rb +3 -3
- data/spec/mongo/operation/delete/bulk_spec.rb +6 -6
- data/spec/mongo/operation/delete/op_msg_spec.rb +1 -6
- data/spec/mongo/operation/delete_spec.rb +7 -7
- data/spec/mongo/operation/drop_index_spec.rb +2 -2
- data/spec/mongo/operation/find/legacy_spec.rb +1 -1
- data/spec/mongo/operation/get_more_spec.rb +1 -1
- data/spec/mongo/operation/indexes_spec.rb +1 -1
- data/spec/mongo/operation/insert/bulk_spec.rb +7 -7
- data/spec/mongo/operation/insert/op_msg_spec.rb +3 -6
- data/spec/mongo/operation/insert_spec.rb +12 -12
- data/spec/mongo/operation/map_reduce_spec.rb +2 -2
- data/spec/mongo/operation/remove_user_spec.rb +3 -3
- data/spec/mongo/operation/update/bulk_spec.rb +6 -6
- data/spec/mongo/operation/update/op_msg_spec.rb +3 -6
- data/spec/mongo/operation/update_spec.rb +7 -7
- data/spec/mongo/operation/update_user_spec.rb +1 -1
- data/spec/mongo/protocol/compressed_spec.rb +2 -3
- data/spec/mongo/protocol/delete_spec.rb +9 -8
- data/spec/mongo/protocol/get_more_spec.rb +9 -8
- data/spec/mongo/protocol/insert_spec.rb +9 -8
- data/spec/mongo/protocol/kill_cursors_spec.rb +6 -5
- data/spec/mongo/protocol/msg_spec.rb +57 -53
- data/spec/mongo/protocol/query_spec.rb +12 -12
- data/spec/mongo/protocol/registry_spec.rb +1 -1
- data/spec/mongo/protocol/reply_spec.rb +1 -1
- data/spec/mongo/protocol/update_spec.rb +10 -9
- data/spec/mongo/server/connection_pool_spec.rb +1 -1
- data/spec/mongo/server/connection_spec.rb +28 -7
- data/spec/mongo/socket_spec.rb +1 -1
- data/spec/mongo/timeout_spec.rb +85 -0
- data/spec/mongo/uri/srv_protocol_spec.rb +2 -2
- data/spec/mongo/uri_spec.rb +52 -5
- data/spec/mongo/write_concern_spec.rb +13 -1
- data/spec/{support → runners}/auth.rb +14 -1
- data/spec/{support → runners}/change_streams.rb +1 -1
- data/spec/{support → runners}/change_streams/operation.rb +0 -0
- data/spec/{support → runners}/cmap.rb +1 -1
- data/spec/{support → runners}/cmap/verifier.rb +0 -0
- data/spec/{support → runners}/command_monitoring.rb +0 -0
- data/spec/runners/connection_string.rb +358 -4
- data/spec/{support → runners}/crud.rb +9 -9
- data/spec/{support → runners}/crud/context.rb +0 -0
- data/spec/{support → runners}/crud/operation.rb +7 -3
- data/spec/{support → runners}/crud/outcome.rb +0 -0
- data/spec/{support → runners}/crud/requirement.rb +1 -1
- data/spec/{support → runners}/crud/spec.rb +12 -1
- data/spec/{support → runners}/crud/test.rb +0 -0
- data/spec/{support → runners}/crud/test_base.rb +0 -0
- data/spec/{support → runners}/crud/verifier.rb +10 -12
- data/spec/{support → runners}/gridfs.rb +0 -0
- data/spec/{support → runners}/sdam_monitoring.rb +0 -0
- data/spec/{support → runners}/server_discovery_and_monitoring.rb +0 -0
- data/spec/{support → runners}/server_selection.rb +0 -0
- data/spec/{support → runners}/server_selection_rtt.rb +0 -0
- data/spec/{support → runners}/transactions.rb +4 -4
- data/spec/{support → runners}/transactions/context.rb +0 -0
- data/spec/{support → runners}/transactions/operation.rb +0 -0
- data/spec/{support → runners}/transactions/spec.rb +0 -0
- data/spec/{support → runners}/transactions/test.rb +37 -5
- data/spec/spec_helper.rb +0 -5
- data/spec/spec_tests/auth_spec.rb +3 -3
- data/spec/spec_tests/client_side_encryption_spec.rb +13 -0
- data/spec/spec_tests/connection_string_spec.rb +1 -1
- data/spec/spec_tests/data/auth/connection-string.yml +13 -0
- data/spec/spec_tests/data/client_side_encryption/aggregate.yml +134 -0
- data/spec/spec_tests/data/client_side_encryption/badQueries.yml +526 -0
- data/spec/spec_tests/data/client_side_encryption/badSchema.yml +73 -0
- data/spec/spec_tests/data/client_side_encryption/basic.yml +116 -0
- data/spec/spec_tests/data/client_side_encryption/bulk.yml +85 -0
- data/spec/spec_tests/data/client_side_encryption/bypassAutoEncryption.yml +100 -0
- data/spec/spec_tests/data/client_side_encryption/bypassedCommand.yml +42 -0
- data/spec/spec_tests/data/client_side_encryption/count.yml +61 -0
- data/spec/spec_tests/data/client_side_encryption/countDocuments.yml +59 -0
- data/spec/spec_tests/data/client_side_encryption/delete.yml +105 -0
- data/spec/spec_tests/data/client_side_encryption/distinct.yml +73 -0
- data/spec/spec_tests/data/client_side_encryption/explain.yml +64 -0
- data/spec/spec_tests/data/client_side_encryption/find.yml +119 -0
- data/spec/spec_tests/data/client_side_encryption/findOneAndDelete.yml +57 -0
- data/spec/spec_tests/data/client_side_encryption/findOneAndReplace.yml +57 -0
- data/spec/spec_tests/data/client_side_encryption/findOneAndUpdate.yml +57 -0
- data/spec/spec_tests/data/client_side_encryption/getMore.yml +68 -0
- data/spec/spec_tests/data/client_side_encryption/insert.yml +102 -0
- data/spec/spec_tests/data/client_side_encryption/keyAltName.yml +71 -0
- data/spec/spec_tests/data/client_side_encryption/localKMS.yml +54 -0
- data/spec/spec_tests/data/client_side_encryption/localSchema.yml +72 -0
- data/spec/spec_tests/data/client_side_encryption/malformedCiphertext.yml +69 -0
- data/spec/spec_tests/data/client_side_encryption/maxWireVersion.yml +20 -0
- data/spec/spec_tests/data/client_side_encryption/missingKey.yml +49 -0
- data/spec/spec_tests/data/client_side_encryption/replaceOne.yml +61 -0
- data/spec/spec_tests/data/client_side_encryption/types.yml +527 -0
- data/spec/spec_tests/data/client_side_encryption/unsupportedCommand.yml +25 -0
- data/spec/spec_tests/data/client_side_encryption/updateMany.yml +77 -0
- data/spec/spec_tests/data/client_side_encryption/updateOne.yml +168 -0
- data/spec/spec_tests/data/read_write_concern/connection-string/write-concern.yml +1 -4
- data/spec/spec_tests/data/retryable_writes/insertOne-serverErrors.yml +21 -0
- data/spec/spec_tests/data/sdam/rs/incompatible_ghost.yml +2 -4
- data/spec/spec_tests/data/sdam/rs/incompatible_other.yml +1 -1
- data/spec/spec_tests/data/sdam/rs/primary_mismatched_me_not_removed.yml +73 -0
- data/spec/spec_tests/data/sdam/rs/primary_to_no_primary_mismatched_me.yml +1 -2
- data/spec/spec_tests/data/sdam/rs/repeated.yml +101 -0
- data/spec/spec_tests/data/sdam/rs/{primary_address_change.yml → ruby_primary_address_change.yml} +2 -0
- 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
- data/spec/spec_tests/data/sdam/sharded/ruby_discovered_single_mongos.yml +27 -0
- data/spec/spec_tests/data/sdam/sharded/{primary_address_change.yml → ruby_primary_different_address.yml} +1 -1
- data/spec/spec_tests/data/sdam/sharded/{primary_mismatched_me.yml → ruby_primary_mismatched_me.yml} +1 -1
- data/spec/spec_tests/data/sdam/single/{primary_address_change.yml → ruby_primary_different_address.yml} +1 -1
- data/spec/spec_tests/data/sdam/single/{primary_mismatched_me.yml → ruby_primary_mismatched_me.yml} +1 -1
- data/spec/spec_tests/data/sdam_monitoring/{replica_set_with_primary_change.yml → replica_set_primary_address_change.yml} +27 -5
- data/spec/spec_tests/data/sdam_monitoring/replica_set_with_me_mismatch.yml +26 -74
- data/spec/spec_tests/data/sdam_monitoring/replica_set_with_removal.yml +20 -16
- data/spec/spec_tests/data/sdam_monitoring/standalone_suppress_equal_description_changes.yml +73 -0
- data/spec/spec_tests/data/transactions/pin-mongos.yml +2 -3
- data/spec/spec_tests/data/uri_options/auth-options.yml +10 -0
- data/spec/spec_tests/data/uri_options/tls-options.yml +75 -4
- data/spec/spec_tests/read_write_concern_connection_string_spec.rb +1 -1
- data/spec/spec_tests/uri_options_spec.rb +6 -8
- data/spec/stress/connection_pool_timing_spec.rb +6 -3
- data/spec/support/certificates/README.md +4 -0
- data/spec/support/certificates/server-second-level-bundle.pem +77 -77
- data/spec/support/certificates/server-second-level.crt +52 -52
- data/spec/support/certificates/server-second-level.key +25 -25
- data/spec/support/certificates/server-second-level.pem +77 -77
- data/spec/support/client_registry.rb +19 -3
- data/spec/support/cluster_config.rb +9 -1
- data/spec/support/common_shortcuts.rb +12 -0
- data/spec/support/constraints.rb +16 -0
- data/spec/support/crypt.rb +140 -0
- data/spec/support/crypt/corpus/corpus-key-aws.json +33 -0
- data/spec/support/crypt/corpus/corpus-key-local.json +31 -0
- data/spec/support/crypt/corpus/corpus-schema.json +2057 -0
- data/spec/support/crypt/corpus/corpus.json +3657 -0
- data/spec/support/crypt/corpus/corpus_encrypted.json +4152 -0
- data/spec/support/crypt/data_keys/key_document_aws.json +34 -0
- data/spec/support/crypt/data_keys/key_document_local.json +31 -0
- data/spec/support/crypt/external/external-key.json +31 -0
- data/spec/support/crypt/external/external-schema.json +19 -0
- data/spec/support/crypt/limits/limits-doc.json +102 -0
- data/spec/support/crypt/limits/limits-key.json +31 -0
- data/spec/support/crypt/limits/limits-schema.json +1405 -0
- data/spec/support/crypt/schema_maps/schema_map_aws.json +17 -0
- data/spec/support/crypt/schema_maps/schema_map_aws_key_alt_names.json +12 -0
- data/spec/support/crypt/schema_maps/schema_map_local.json +18 -0
- data/spec/support/crypt/schema_maps/schema_map_local_key_alt_names.json +12 -0
- data/spec/support/lite_constraints.rb +17 -1
- data/spec/support/matchers.rb +19 -0
- data/spec/support/shared/protocol.rb +2 -0
- data/spec/support/spec_config.rb +43 -13
- data/spec/support/utils.rb +132 -10
- metadata +277 -81
- metadata.gz.sig +0 -0
- data/spec/integration/grid_fs_bucket_spec.rb +0 -48
- data/spec/integration/zlib_compression_spec.rb +0 -25
- data/spec/spec_tests/data/sdam/sharded/single_mongos.yml +0 -33
- 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 '
|
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,
|
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 '
|
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(:
|
8
|
-
let(:ns) { "#{db}.#{
|
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,
|
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,
|
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',
|
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,
|
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,
|
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 '
|
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(:
|
8
|
-
let(:ns) { "#{db}.#{
|
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,
|
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,
|
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',
|
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,
|
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,
|
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 '
|
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(:
|
8
|
-
let(:ns) { "#{db}.#{
|
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,
|
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,
|
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',
|
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,
|
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,
|
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 '
|
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(:
|
9
|
+
let(:collection_name) { 'protocol-test' }
|
9
10
|
let(:database) { SpecConfig.instance.test_db }
|
10
11
|
let(:message) do
|
11
|
-
described_class.new(
|
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(
|
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(
|
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(:
|
10
|
-
let(:
|
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,
|
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
|
23
|
-
expect(message.sections[0]).to eq(type: 0, payload:
|
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
|
63
|
-
let(:
|
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
|
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,
|
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,
|
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
|
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,
|
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(:
|
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(
|
212
|
+
expect(payload_bytes).to be_bson(main_document)
|
209
213
|
end
|
210
214
|
end
|
211
215
|
|
212
|
-
context 'when
|
216
|
+
context 'when sequences are provided' do
|
213
217
|
|
214
|
-
let(:
|
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
|
229
|
-
|
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
|
275
|
+
context 'when a payload of type 1 is specified' do
|
270
276
|
|
271
277
|
let(:section) do
|
272
|
-
{
|
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(:
|
304
|
+
let(:sequences) do
|
301
305
|
[ section1, section2 ]
|
302
306
|
end
|
303
307
|
|
304
308
|
let(:section1) do
|
305
|
-
{
|
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
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
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[
|
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
|
-
{
|
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(
|
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(:
|
391
|
+
let(:sequences) do
|
387
392
|
[ section ]
|
388
393
|
end
|
389
394
|
|
390
395
|
let(:section) do
|
391
|
-
|
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(:
|
412
|
+
let(:sequences) do
|
408
413
|
[ section ]
|
409
414
|
end
|
410
415
|
|
411
416
|
let(:section) do
|
412
|
-
|
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(
|
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
|
-
|
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
|
-
{
|
466
|
-
payload: { identifier: 'documents',
|
467
|
-
sequence: [ { a: 1 } ] } }
|
470
|
+
Mongo::Protocol::Msg::Section1.new('documents', [ { a: 1 } ])
|
468
471
|
end
|
469
472
|
|
470
|
-
let(:
|
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(:
|
480
|
+
let(:sequences) do
|
478
481
|
[ section ]
|
479
482
|
end
|
480
483
|
|
481
484
|
let(:expected_command_doc) do
|
482
485
|
{
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
+
'insert' => 'foo',
|
487
|
+
'documents' => [{ 'a' => 1 }],
|
488
|
+
'ordered' => true,
|
489
|
+
'$db' => SpecConfig.instance.test_db,
|
486
490
|
}
|
487
491
|
end
|
488
492
|
|