mongo 2.14.1 → 2.15.0.alpha
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 +0 -0
- data/README.md +4 -1
- data/Rakefile +8 -15
- data/lib/mongo/auth/aws/conversation.rb +1 -4
- data/lib/mongo/auth/base.rb +13 -7
- data/lib/mongo/auth/conversation_base.rb +32 -0
- data/lib/mongo/auth/cr/conversation.rb +6 -29
- data/lib/mongo/auth/gssapi/conversation.rb +4 -15
- data/lib/mongo/auth/ldap/conversation.rb +3 -14
- data/lib/mongo/auth/sasl_conversation_base.rb +1 -13
- data/lib/mongo/auth/scram_conversation_base.rb +7 -34
- data/lib/mongo/auth/user/view.rb +16 -9
- data/lib/mongo/auth/x509/conversation.rb +4 -25
- data/lib/mongo/bulk_write.rb +21 -18
- data/lib/mongo/client.rb +82 -6
- data/lib/mongo/cluster/reapers/cursor_reaper.rb +6 -2
- data/lib/mongo/cluster.rb +19 -2
- data/lib/mongo/collection/view/aggregation.rb +1 -1
- data/lib/mongo/collection/view/change_stream.rb +1 -1
- data/lib/mongo/collection/view/iterable.rb +7 -17
- data/lib/mongo/collection/view/map_reduce.rb +2 -2
- data/lib/mongo/collection/view/readable.rb +42 -20
- data/lib/mongo/collection/view/writable.rb +14 -14
- data/lib/mongo/collection.rb +6 -6
- data/lib/mongo/cursor.rb +2 -12
- data/lib/mongo/database/view.rb +1 -1
- data/lib/mongo/database.rb +8 -3
- data/lib/mongo/error/bulk_write_error.rb +17 -3
- data/lib/mongo/error/internal_driver_error.rb +22 -0
- data/lib/mongo/error/operation_failure.rb +21 -2
- data/lib/mongo/error/parser.rb +65 -12
- data/lib/mongo/error/server_api_conflict.rb +23 -0
- data/lib/mongo/error/server_api_not_supported.rb +24 -0
- data/lib/mongo/error/unmet_dependency.rb +21 -0
- data/lib/mongo/error.rb +9 -1
- data/lib/mongo/index/view.rb +21 -11
- data/lib/mongo/monitoring/event/server_heartbeat_failed.rb +27 -16
- data/lib/mongo/monitoring/event/server_heartbeat_succeeded.rb +26 -15
- data/lib/mongo/monitoring.rb +13 -4
- data/lib/mongo/operation/collections_info/command.rb +2 -2
- data/lib/mongo/operation/collections_info.rb +18 -1
- data/lib/mongo/operation/context.rb +99 -0
- data/lib/mongo/operation/indexes.rb +15 -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 +2 -2
- data/lib/mongo/operation/list_collections/result.rb +4 -1
- data/lib/mongo/operation/parallel_scan/command.rb +2 -1
- data/lib/mongo/operation/result.rb +2 -0
- data/lib/mongo/operation/shared/executable.rb +24 -14
- data/lib/mongo/operation/shared/executable_no_validate.rb +2 -2
- data/lib/mongo/operation/shared/op_msg_or_command.rb +1 -7
- data/lib/mongo/operation/shared/op_msg_or_find_command.rb +1 -7
- data/lib/mongo/operation/shared/polymorphic_operation.rb +39 -0
- data/lib/mongo/operation/shared/read_preference_supported.rb +36 -38
- data/lib/mongo/operation/shared/response_handling.rb +23 -23
- data/lib/mongo/operation/shared/sessions_supported.rb +15 -5
- data/lib/mongo/operation/shared/write.rb +8 -18
- data/lib/mongo/operation.rb +2 -2
- data/lib/mongo/protocol/compressed.rb +51 -5
- data/lib/mongo/protocol/message.rb +20 -2
- data/lib/mongo/protocol/msg.rb +38 -13
- data/lib/mongo/protocol/query.rb +11 -11
- data/lib/mongo/query_cache.rb +30 -0
- data/lib/mongo/retryable.rb +1 -1
- data/lib/mongo/server/app_metadata.rb +52 -18
- data/lib/mongo/server/connection.rb +5 -0
- data/lib/mongo/server/connection_base.rb +13 -10
- data/lib/mongo/server/connection_pool.rb +6 -2
- data/lib/mongo/server/description/features.rb +9 -8
- data/lib/mongo/server/description.rb +4 -0
- data/lib/mongo/server/monitor/app_metadata.rb +1 -1
- data/lib/mongo/server/monitor/connection.rb +9 -10
- data/lib/mongo/server/monitor.rb +20 -1
- data/lib/mongo/server/pending_connection.rb +24 -6
- data/lib/mongo/server/push_monitor.rb +11 -1
- data/lib/mongo/server.rb +7 -1
- data/lib/mongo/server_selector/secondary_preferred.rb +7 -2
- data/lib/mongo/session/session_pool.rb +4 -2
- data/lib/mongo/session.rb +2 -2
- data/lib/mongo/socket/ssl.rb +8 -0
- data/lib/mongo/socket.rb +29 -4
- data/lib/mongo/uri/options_mapper.rb +38 -0
- data/lib/mongo/utils.rb +15 -0
- data/lib/mongo/version.rb +1 -1
- data/lib/mongo.rb +23 -0
- data/spec/README.md +24 -1
- data/spec/integration/auth_spec.rb +25 -15
- data/spec/integration/bulk_write_error_message_spec.rb +41 -0
- data/spec/integration/change_stream_spec.rb +4 -4
- data/spec/integration/command_monitoring_spec.rb +2 -2
- data/spec/integration/connection_spec.rb +2 -0
- data/spec/integration/docs_examples_spec.rb +8 -1
- data/spec/integration/fork_reconnect_spec.rb +4 -1
- data/spec/integration/ocsp_verifier_spec.rb +13 -7
- data/spec/integration/operation_failure_code_spec.rb +1 -1
- data/spec/integration/operation_failure_message_spec.rb +90 -0
- data/spec/integration/query_cache_spec.rb +0 -45
- data/spec/integration/reconnect_spec.rb +1 -1
- data/spec/integration/snappy_compression_spec.rb +25 -0
- data/spec/integration/srv_monitoring_spec.rb +1 -1
- data/spec/integration/transactions_examples_spec.rb +6 -0
- data/spec/integration/zlib_compression_spec.rb +1 -1
- data/spec/integration/zstd_compression_spec.rb +26 -0
- data/spec/lite_spec_helper.rb +7 -1
- data/spec/mongo/address_spec.rb +15 -11
- data/spec/mongo/auth/ldap/conversation_spec.rb +1 -1
- data/spec/mongo/auth/ldap_spec.rb +5 -1
- data/spec/mongo/auth/scram_negotiation_spec.rb +1 -1
- data/spec/mongo/auth/scram_spec.rb +1 -1
- data/spec/mongo/auth/x509/conversation_spec.rb +3 -3
- data/spec/mongo/client_construction_spec.rb +207 -33
- data/spec/mongo/client_spec.rb +17 -0
- data/spec/mongo/cluster_spec.rb +1 -0
- data/spec/mongo/collection/view/explainable_spec.rb +1 -1
- data/spec/mongo/collection/view/readable_spec.rb +33 -19
- data/spec/mongo/collection_crud_spec.rb +4357 -0
- data/spec/mongo/collection_ddl_spec.rb +534 -0
- data/spec/mongo/collection_spec.rb +5 -4859
- data/spec/mongo/database_spec.rb +66 -4
- data/spec/mongo/error/bulk_write_error_spec.rb +3 -3
- data/spec/mongo/error/parser_spec.rb +37 -6
- data/spec/mongo/index/view_spec.rb +4 -0
- data/spec/mongo/monitoring/event/server_heartbeat_failed_spec.rb +1 -1
- data/spec/mongo/monitoring/event/server_heartbeat_succeeded_spec.rb +1 -1
- data/spec/mongo/operation/aggregate_spec.rb +2 -1
- data/spec/mongo/operation/collections_info_spec.rb +4 -1
- data/spec/mongo/operation/command_spec.rb +6 -3
- data/spec/mongo/operation/create_index_spec.rb +6 -3
- data/spec/mongo/operation/create_user_spec.rb +6 -3
- data/spec/mongo/operation/delete/bulk_spec.rb +9 -6
- data/spec/mongo/operation/delete_spec.rb +11 -7
- data/spec/mongo/operation/drop_index_spec.rb +6 -2
- data/spec/mongo/operation/find/legacy_spec.rb +3 -1
- data/spec/mongo/operation/get_more_spec.rb +3 -1
- data/spec/mongo/operation/indexes_spec.rb +5 -1
- data/spec/mongo/operation/insert/bulk_spec.rb +10 -7
- data/spec/mongo/operation/insert_spec.rb +15 -12
- data/spec/mongo/operation/map_reduce_spec.rb +5 -2
- data/spec/mongo/operation/read_preference_legacy_spec.rb +19 -9
- data/spec/mongo/operation/read_preference_op_msg_spec.rb +3 -3
- data/spec/mongo/operation/remove_user_spec.rb +6 -3
- data/spec/mongo/operation/result_spec.rb +1 -1
- data/spec/mongo/operation/update/bulk_spec.rb +9 -6
- data/spec/mongo/operation/update_spec.rb +10 -7
- data/spec/mongo/operation/update_user_spec.rb +4 -1
- data/spec/mongo/protocol/compressed_spec.rb +26 -12
- data/spec/mongo/query_cache_middleware_spec.rb +55 -0
- data/spec/mongo/retryable_spec.rb +3 -2
- data/spec/mongo/server/app_metadata_shared.rb +7 -33
- data/spec/mongo/server/app_metadata_spec.rb +2 -0
- data/spec/mongo/server/connection_pool/populator_spec.rb +3 -1
- data/spec/mongo/server/connection_pool_spec.rb +1 -1
- data/spec/mongo/server/connection_spec.rb +24 -17
- data/spec/mongo/server/monitor/connection_spec.rb +17 -7
- data/spec/mongo/server/monitor_spec.rb +9 -1
- data/spec/mongo/server_selector/secondary_preferred_spec.rb +6 -6
- data/spec/mongo/server_spec.rb +15 -2
- data/spec/mongo/socket/ssl_spec.rb +40 -0
- data/spec/mongo/socket_spec.rb +2 -2
- data/spec/mongo/tls_context_hooks_spec.rb +37 -0
- data/spec/runners/connection_string.rb +0 -4
- data/spec/runners/crud/requirement.rb +40 -3
- data/spec/runners/crud/verifier.rb +8 -0
- data/spec/runners/transactions/operation.rb +1 -1
- data/spec/runners/transactions/test.rb +1 -0
- data/spec/runners/unified/assertions.rb +249 -0
- data/spec/runners/unified/change_stream_operations.rb +26 -0
- data/spec/runners/unified/crud_operations.rb +199 -0
- data/spec/runners/unified/ddl_operations.rb +96 -0
- data/spec/runners/unified/entity_map.rb +39 -0
- data/spec/runners/unified/error.rb +25 -0
- data/spec/runners/unified/event_subscriber.rb +91 -0
- data/spec/runners/unified/exceptions.rb +21 -0
- data/spec/runners/unified/grid_fs_operations.rb +55 -0
- data/spec/runners/unified/support_operations.rb +250 -0
- data/spec/runners/unified/test.rb +393 -0
- data/spec/runners/unified/test_group.rb +28 -0
- data/spec/runners/unified/using_hash.rb +31 -0
- data/spec/runners/unified.rb +96 -0
- data/spec/shared/lib/mrss/cluster_config.rb +0 -3
- data/spec/shared/lib/mrss/docker_runner.rb +0 -3
- data/spec/shared/lib/mrss/lite_constraints.rb +0 -16
- data/spec/shared/lib/mrss/server_version_registry.rb +0 -3
- data/spec/shared/lib/mrss/spec_organizer.rb +0 -3
- data/spec/shared/shlib/server.sh +1 -1
- data/spec/spec_helper.rb +4 -1
- data/spec/spec_tests/crud_unified_spec.rb +10 -0
- data/spec/spec_tests/data/change_streams/change-streams.yml +0 -1
- data/spec/spec_tests/data/crud_unified/estimatedDocumentCount.yml +267 -0
- data/spec/spec_tests/data/retryable_reads/estimatedDocumentCount-4.9.yml +60 -0
- data/spec/spec_tests/data/retryable_reads/{estimatedDocumentCount.yml → estimatedDocumentCount-pre4.9.yml} +2 -0
- data/spec/spec_tests/data/retryable_reads/estimatedDocumentCount-serverErrors-4.9.yml +146 -0
- data/spec/spec_tests/data/retryable_reads/{estimatedDocumentCount-serverErrors.yml → estimatedDocumentCount-serverErrors-pre4.9.yml} +2 -0
- data/spec/spec_tests/data/retryable_reads/listIndexNames.yml +1 -1
- data/spec/spec_tests/data/unified/valid-fail/operation-failure.yml +31 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-change-streams.yml +220 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-command-monitoring.yml +102 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-crud.yml +184 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-gridfs.yml +155 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-retryable-reads.yml +193 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-retryable-writes.yml +210 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-sessions.yml +215 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-transactions-convenient-api.yml +235 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-transactions-mongos-pin-auto.yml +169 -0
- data/spec/spec_tests/data/unified/valid-pass/poc-transactions.yml +170 -0
- data/spec/spec_tests/data/uri_options/compression-options.yml +1 -1
- data/spec/spec_tests/data/versioned_api/crud-api-version-1-strict.yml +416 -0
- data/spec/spec_tests/data/versioned_api/crud-api-version-1.yml +409 -0
- data/spec/spec_tests/data/versioned_api/runcommand-helper-no-api-version-declared.yml +67 -0
- data/spec/spec_tests/data/versioned_api/test-commands-deprecation-errors.yml +47 -0
- data/spec/spec_tests/data/versioned_api/test-commands-strict-mode.yml +44 -0
- data/spec/spec_tests/data/versioned_api/transaction-handling.yml +180 -0
- data/spec/spec_tests/unified_spec.rb +15 -0
- data/spec/spec_tests/uri_options_spec.rb +16 -0
- data/spec/spec_tests/versioned_api_spec.rb +10 -0
- data/spec/support/client_registry.rb +4 -8
- data/spec/support/client_registry_macros.rb +4 -4
- data/spec/support/common_shortcuts.rb +15 -1
- data/spec/support/shared/session.rb +2 -2
- data/spec/support/spec_config.rb +42 -11
- data/spec/support/utils.rb +64 -3
- data.tar.gz.sig +0 -0
- metadata +1005 -915
- metadata.gz.sig +0 -0
- data/lib/mongo/operation/shared/collections_info_or_list_collections.rb +0 -58
- data/lib/mongo/operation/shared/op_msg_or_list_indexes_command.rb +0 -47
- data/spec/integration/secondary_reads_spec.rb +0 -102
- data/spec/support/cluster_config.rb +0 -207
data/spec/mongo/database_spec.rb
CHANGED
@@ -95,6 +95,26 @@ describe Mongo::Database do
|
|
95
95
|
expect(collection.server_selector).to eq(Mongo::ServerSelector.get(mode: :secondary))
|
96
96
|
expect(collection.read_preference).to eq(BSON::Document.new(mode: :secondary))
|
97
97
|
end
|
98
|
+
|
99
|
+
context ':server_api option' do
|
100
|
+
|
101
|
+
let(:client) do
|
102
|
+
new_local_client_nmio(['localhost'], server_api: {version: '1'})
|
103
|
+
end
|
104
|
+
|
105
|
+
it 'is not transfered to the collection' do
|
106
|
+
client.options[:server_api].should == {'version' => '1'}
|
107
|
+
collection.options[:server_api].should be nil
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
context 'when providing :server_api option' do
|
113
|
+
it 'is rejected' do
|
114
|
+
lambda do
|
115
|
+
database['foo', server_api: {version: '1'}]
|
116
|
+
end.should raise_error(ArgumentError, 'The :server_api option cannot be specified for collection objects. It can only be specified on Client level')
|
117
|
+
end
|
98
118
|
end
|
99
119
|
end
|
100
120
|
|
@@ -319,21 +339,40 @@ describe Mongo::Database do
|
|
319
339
|
described_class.new(root_authorized_client, 'admin')
|
320
340
|
end
|
321
341
|
|
322
|
-
|
323
|
-
|
342
|
+
shared_examples 'does not include system collections' do
|
343
|
+
it 'does not include system collections' do
|
344
|
+
expect(result.none? { |name| name =~ /(^|\.)system\./ }).to be true
|
345
|
+
end
|
324
346
|
end
|
325
347
|
|
326
|
-
context 'server
|
348
|
+
context 'server 4.7+' do
|
349
|
+
min_server_fcv '4.7'
|
350
|
+
# https://jira.mongodb.org/browse/SERVER-35804
|
351
|
+
require_topology :single, :replica_set
|
352
|
+
|
353
|
+
include_examples 'does not include system collections'
|
354
|
+
|
355
|
+
it 'returns results' do
|
356
|
+
expect(result).to include('acol')
|
357
|
+
end
|
358
|
+
end
|
359
|
+
|
360
|
+
context 'server 3.0-4.5' do
|
327
361
|
min_server_fcv '3.0'
|
362
|
+
max_server_version '4.5'
|
363
|
+
|
364
|
+
include_examples 'does not include system collections'
|
328
365
|
|
329
366
|
it 'returns results' do
|
330
367
|
expect(result).to include('acol')
|
331
368
|
end
|
332
369
|
end
|
333
370
|
|
334
|
-
context 'server 2.6
|
371
|
+
context 'server 2.6' do
|
335
372
|
max_server_version '2.6'
|
336
373
|
|
374
|
+
include_examples 'does not include system collections'
|
375
|
+
|
337
376
|
it 'returns results' do
|
338
377
|
expect(result).to include('admin.acol')
|
339
378
|
end
|
@@ -836,6 +875,29 @@ describe Mongo::Database do
|
|
836
875
|
end
|
837
876
|
end
|
838
877
|
end
|
878
|
+
|
879
|
+
context 'when client server api is not set' do
|
880
|
+
require_no_required_api_version
|
881
|
+
min_server_fcv '4.7'
|
882
|
+
|
883
|
+
it 'passes server api parameters' do
|
884
|
+
lambda do
|
885
|
+
database.command(ping: 1, apiVersion: 'does-not-exist')
|
886
|
+
end.should raise_error(
|
887
|
+
an_instance_of(Mongo::Error::OperationFailure).and having_attributes(code: 322))
|
888
|
+
end
|
889
|
+
end
|
890
|
+
|
891
|
+
context 'when client server api is set' do
|
892
|
+
require_required_api_version
|
893
|
+
min_server_fcv '4.7'
|
894
|
+
|
895
|
+
it 'reports server api conflict' do
|
896
|
+
lambda do
|
897
|
+
database.command(ping: 1, apiVersion: 'does-not-exist')
|
898
|
+
end.should raise_error(Mongo::Error::ServerApiConflict)
|
899
|
+
end
|
900
|
+
end
|
839
901
|
end
|
840
902
|
|
841
903
|
describe '#drop' do
|
@@ -31,19 +31,19 @@ describe Mongo::Error::BulkWriteError do
|
|
31
31
|
|
32
32
|
describe '#message' do
|
33
33
|
it 'is correct' do
|
34
|
-
expect(error.message).to eq("
|
34
|
+
expect(error.message).to eq("Multiple errors: [1]: message1; [2]: message2 (note1, note2)")
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
38
|
describe '#to_s' do
|
39
39
|
it 'is correct' do
|
40
|
-
expect(error.to_s).to eq("
|
40
|
+
expect(error.to_s).to eq("Multiple errors: [1]: message1; [2]: message2 (note1, note2)")
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
44
|
describe '#inspect' do
|
45
45
|
it 'is correct' do
|
46
|
-
expect(error.inspect).to eq("#<Mongo::Error::BulkWriteError:
|
46
|
+
expect(error.inspect).to eq("#<Mongo::Error::BulkWriteError: Multiple errors: [1]: message1; [2]: message2 (note1, note2)>")
|
47
47
|
end
|
48
48
|
end
|
49
49
|
end
|
@@ -25,10 +25,22 @@ describe Mongo::Error::Parser do
|
|
25
25
|
end
|
26
26
|
|
27
27
|
it 'returns the message' do
|
28
|
-
expect(parser.message).to eq('no such command: notacommand
|
28
|
+
expect(parser.message).to eq('[59]: no such command: notacommand')
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
+
context 'when the document contains an errmsg and code name' do
|
33
|
+
|
34
|
+
let(:document) do
|
35
|
+
{ 'errmsg' => 'no such command: notacommand', 'code' => 59, 'codeName' => 'foo' }
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'returns the message' do
|
39
|
+
expect(parser.message).to eq('[59:foo]: no such command: notacommand')
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
=begin
|
32
44
|
context 'when the document contains writeErrors' do
|
33
45
|
|
34
46
|
context 'when only a single error exists' do
|
@@ -38,7 +50,7 @@ describe Mongo::Error::Parser do
|
|
38
50
|
end
|
39
51
|
|
40
52
|
it 'returns the message' do
|
41
|
-
expect(parser.message).to eq('Unknown modifier: $st
|
53
|
+
expect(parser.message).to eq('[9]: Unknown modifier: $st')
|
42
54
|
end
|
43
55
|
end
|
44
56
|
|
@@ -55,11 +67,30 @@ describe Mongo::Error::Parser do
|
|
55
67
|
|
56
68
|
it 'returns the messages concatenated' do
|
57
69
|
expect(parser.message).to eq(
|
58
|
-
'Unknown modifier: $st
|
70
|
+
'Multiple errors: 9: Unknown modifier: $st; 9: Unknown modifier: $bl'
|
71
|
+
)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
context 'when multiple errors with code names exist' do
|
76
|
+
|
77
|
+
let(:document) do
|
78
|
+
{
|
79
|
+
'writeErrors' => [
|
80
|
+
{ 'code' => 9, 'codeName' => 'foo', 'errmsg' => 'Unknown modifier: $st' },
|
81
|
+
{ 'code' => 9, 'codeName' => 'foo', 'errmsg' => 'Unknown modifier: $bl' },
|
82
|
+
]
|
83
|
+
}
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'returns the messages concatenated' do
|
87
|
+
expect(parser.message).to eq(
|
88
|
+
'Multiple errors: [9:foo]: Unknown modifier: $st; [9:foo]: Unknown modifier: $bl'
|
59
89
|
)
|
60
90
|
end
|
61
91
|
end
|
62
92
|
end
|
93
|
+
=end
|
63
94
|
|
64
95
|
context 'when the document contains $err' do
|
65
96
|
|
@@ -68,7 +99,7 @@ describe Mongo::Error::Parser do
|
|
68
99
|
end
|
69
100
|
|
70
101
|
it 'returns the message' do
|
71
|
-
expect(parser.message).to eq('not authorized for query
|
102
|
+
expect(parser.message).to eq('[13]: not authorized for query')
|
72
103
|
end
|
73
104
|
end
|
74
105
|
|
@@ -79,7 +110,7 @@ describe Mongo::Error::Parser do
|
|
79
110
|
end
|
80
111
|
|
81
112
|
it 'returns the message' do
|
82
|
-
expect(parser.message).to eq('not authorized for query
|
113
|
+
expect(parser.message).to eq('[13]: not authorized for query')
|
83
114
|
end
|
84
115
|
end
|
85
116
|
|
@@ -90,7 +121,7 @@ describe Mongo::Error::Parser do
|
|
90
121
|
end
|
91
122
|
|
92
123
|
it 'returns the message' do
|
93
|
-
expect(parser.message).to eq('Not enough data-bearing nodes
|
124
|
+
expect(parser.message).to eq('[100]: Not enough data-bearing nodes')
|
94
125
|
end
|
95
126
|
end
|
96
127
|
end
|
@@ -650,6 +650,8 @@ describe Mongo::Index::View do
|
|
650
650
|
end
|
651
651
|
|
652
652
|
context 'when using bucket option' do
|
653
|
+
# Option is removed in 4.9
|
654
|
+
max_server_version '4.7'
|
653
655
|
|
654
656
|
let(:spec) do
|
655
657
|
{ 'any' => 1 }
|
@@ -756,6 +758,8 @@ describe Mongo::Index::View do
|
|
756
758
|
end
|
757
759
|
|
758
760
|
context 'when using bucket option' do
|
761
|
+
# Option is removed in 4.9
|
762
|
+
max_server_version '4.7'
|
759
763
|
|
760
764
|
let(:spec) do
|
761
765
|
{ 'any' => 1 }
|
@@ -20,7 +20,7 @@ describe Mongo::Monitoring::Event::ServerHeartbeatFailed do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
let(:event) do
|
23
|
-
described_class.new(address, 1, Mongo::Error::SocketError.new('foo'))
|
23
|
+
described_class.new(address, 1, Mongo::Error::SocketError.new('foo'), started_event: nil)
|
24
24
|
end
|
25
25
|
|
26
26
|
describe '#summary' do
|
@@ -19,6 +19,7 @@ describe Mongo::Operation::Aggregate do
|
|
19
19
|
end
|
20
20
|
let(:op) { described_class.new(spec) }
|
21
21
|
|
22
|
+
let(:context) { Mongo::Operation::Context.new }
|
22
23
|
|
23
24
|
describe '#initialize' do
|
24
25
|
|
@@ -64,7 +65,7 @@ describe Mongo::Operation::Aggregate do
|
|
64
65
|
|
65
66
|
it 'raises an exception' do
|
66
67
|
expect {
|
67
|
-
op.execute(authorized_primary,
|
68
|
+
op.execute(authorized_primary, context: context)
|
68
69
|
}.to raise_error(Mongo::Error::OperationFailure)
|
69
70
|
end
|
70
71
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Mongo::Operation::CollectionsInfo do
|
4
|
+
require_no_required_api_version
|
4
5
|
|
5
6
|
let(:spec) do
|
6
7
|
{ selector: { listCollections: 1 },
|
@@ -16,6 +17,8 @@ describe Mongo::Operation::CollectionsInfo do
|
|
16
17
|
described_class.new(spec)
|
17
18
|
end
|
18
19
|
|
20
|
+
let(:context) { Mongo::Operation::Context.new }
|
21
|
+
|
19
22
|
describe '#execute' do
|
20
23
|
|
21
24
|
before do
|
@@ -31,7 +34,7 @@ describe Mongo::Operation::CollectionsInfo do
|
|
31
34
|
end
|
32
35
|
|
33
36
|
let(:info) do
|
34
|
-
docs = op.execute(authorized_primary,
|
37
|
+
docs = op.execute(authorized_primary, context: context).documents
|
35
38
|
docs.collect { |info| info['name'].sub("#{SpecConfig.instance.test_db}.", '') }
|
36
39
|
end
|
37
40
|
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Mongo::Operation::Command do
|
4
|
+
require_no_required_api_version
|
4
5
|
|
5
6
|
let(:selector) { { :ismaster => 1 } }
|
6
7
|
let(:options) { { :limit => -1 } }
|
@@ -12,6 +13,8 @@ describe Mongo::Operation::Command do
|
|
12
13
|
end
|
13
14
|
let(:op) { described_class.new(spec) }
|
14
15
|
|
16
|
+
let(:context) { Mongo::Operation::Context.new }
|
17
|
+
|
15
18
|
describe '#initialize' do
|
16
19
|
|
17
20
|
it 'sets the spec' do
|
@@ -43,7 +46,7 @@ describe Mongo::Operation::Command do
|
|
43
46
|
context 'when the command succeeds' do
|
44
47
|
|
45
48
|
let(:response) do
|
46
|
-
op.execute(authorized_primary,
|
49
|
+
op.execute(authorized_primary, context: context)
|
47
50
|
end
|
48
51
|
|
49
52
|
it 'returns the reponse' do
|
@@ -59,7 +62,7 @@ describe Mongo::Operation::Command do
|
|
59
62
|
|
60
63
|
it 'raises an exception' do
|
61
64
|
expect {
|
62
|
-
op.execute(authorized_primary,
|
65
|
+
op.execute(authorized_primary, context: context)
|
63
66
|
}.to raise_error(Mongo::Error::OperationFailure)
|
64
67
|
end
|
65
68
|
end
|
@@ -72,7 +75,7 @@ describe Mongo::Operation::Command do
|
|
72
75
|
|
73
76
|
it 'raises an error' do
|
74
77
|
expect {
|
75
|
-
op.execute(authorized_primary,
|
78
|
+
op.execute(authorized_primary, context: context)
|
76
79
|
}.to raise_error(Mongo::Error::MaxBSONSize)
|
77
80
|
end
|
78
81
|
end
|
@@ -1,6 +1,9 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Mongo::Operation::CreateIndex do
|
4
|
+
require_no_required_api_version
|
5
|
+
|
6
|
+
let(:context) { Mongo::Operation::Context.new }
|
4
7
|
|
5
8
|
before do
|
6
9
|
authorized_collection.drop
|
@@ -20,7 +23,7 @@ describe Mongo::Operation::CreateIndex do
|
|
20
23
|
end
|
21
24
|
|
22
25
|
let(:response) do
|
23
|
-
operation.execute(authorized_primary,
|
26
|
+
operation.execute(authorized_primary, context: context)
|
24
27
|
end
|
25
28
|
|
26
29
|
it 'returns ok' do
|
@@ -43,12 +46,12 @@ describe Mongo::Operation::CreateIndex do
|
|
43
46
|
end
|
44
47
|
|
45
48
|
before do
|
46
|
-
operation.execute(authorized_primary,
|
49
|
+
operation.execute(authorized_primary, context: context)
|
47
50
|
end
|
48
51
|
|
49
52
|
it 'raises an exception' do
|
50
53
|
expect {
|
51
|
-
second_operation.execute(authorized_primary,
|
54
|
+
second_operation.execute(authorized_primary, context: context)
|
52
55
|
}.to raise_error(Mongo::Error::OperationFailure)
|
53
56
|
end
|
54
57
|
end
|
@@ -1,6 +1,9 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Mongo::Operation::CreateUser do
|
4
|
+
require_no_required_api_version
|
5
|
+
|
6
|
+
let(:context) { Mongo::Operation::Context.new }
|
4
7
|
|
5
8
|
describe '#execute' do
|
6
9
|
|
@@ -26,7 +29,7 @@ describe Mongo::Operation::CreateUser do
|
|
26
29
|
context 'when user creation was successful' do
|
27
30
|
|
28
31
|
let!(:response) do
|
29
|
-
operation.execute(root_authorized_primary,
|
32
|
+
operation.execute(root_authorized_primary, context: context)
|
30
33
|
end
|
31
34
|
|
32
35
|
it 'saves the user in the database' do
|
@@ -38,8 +41,8 @@ describe Mongo::Operation::CreateUser do
|
|
38
41
|
|
39
42
|
it 'raises an exception' do
|
40
43
|
expect {
|
41
|
-
operation.execute(root_authorized_primary,
|
42
|
-
operation.execute(root_authorized_primary,
|
44
|
+
operation.execute(root_authorized_primary, context: context)
|
45
|
+
operation.execute(root_authorized_primary, context: context)
|
43
46
|
}.to raise_error(Mongo::Error::OperationFailure)
|
44
47
|
end
|
45
48
|
end
|
@@ -1,6 +1,9 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Mongo::Operation::Delete do
|
4
|
+
require_no_required_api_version
|
5
|
+
|
6
|
+
let(:context) { Mongo::Operation::Context.new }
|
4
7
|
|
5
8
|
let(:documents) do
|
6
9
|
[ { 'q' => { foo: 1 }, 'limit' => 1 } ]
|
@@ -100,7 +103,7 @@ describe Mongo::Operation::Delete do
|
|
100
103
|
|
101
104
|
it 'deletes the document from the database' do
|
102
105
|
authorized_primary.with_connection do |connection|
|
103
|
-
op.bulk_execute(connection,
|
106
|
+
op.bulk_execute(connection, context: context)
|
104
107
|
end
|
105
108
|
expect(authorized_collection.find.count).to eq(1)
|
106
109
|
end
|
@@ -125,7 +128,7 @@ describe Mongo::Operation::Delete do
|
|
125
128
|
|
126
129
|
it 'deletes the documents from the database' do
|
127
130
|
authorized_primary.with_connection do |connection|
|
128
|
-
op.bulk_execute(connection,
|
131
|
+
op.bulk_execute(connection, context: context)
|
129
132
|
end
|
130
133
|
expect(authorized_collection.find.count).to eq(0)
|
131
134
|
end
|
@@ -162,7 +165,7 @@ describe Mongo::Operation::Delete do
|
|
162
165
|
|
163
166
|
it 'aborts after first error' do
|
164
167
|
authorized_primary.with_connection do |connection|
|
165
|
-
failing_delete.bulk_execute(connection,
|
168
|
+
failing_delete.bulk_execute(connection, context: context)
|
166
169
|
end
|
167
170
|
expect(authorized_collection.find.count).to eq(2)
|
168
171
|
end
|
@@ -176,7 +179,7 @@ describe Mongo::Operation::Delete do
|
|
176
179
|
|
177
180
|
it 'aborts after first error' do
|
178
181
|
authorized_primary.with_connection do |connection|
|
179
|
-
failing_delete.bulk_execute(connection,
|
182
|
+
failing_delete.bulk_execute(connection, context: context)
|
180
183
|
end
|
181
184
|
expect(authorized_collection.find.count).to eq(2)
|
182
185
|
end
|
@@ -214,7 +217,7 @@ describe Mongo::Operation::Delete do
|
|
214
217
|
|
215
218
|
it 'does not abort after first error' do
|
216
219
|
authorized_primary.with_connection do |connection|
|
217
|
-
failing_delete.bulk_execute(connection,
|
220
|
+
failing_delete.bulk_execute(connection, context: context)
|
218
221
|
end
|
219
222
|
expect(authorized_collection.find.count).to eq(1)
|
220
223
|
end
|
@@ -228,7 +231,7 @@ describe Mongo::Operation::Delete do
|
|
228
231
|
|
229
232
|
it 'does not abort after first error' do
|
230
233
|
authorized_primary.with_connection do |connection|
|
231
|
-
failing_delete.bulk_execute(connection,
|
234
|
+
failing_delete.bulk_execute(connection, context: context)
|
232
235
|
end
|
233
236
|
expect(authorized_collection.find.count).to eq(1)
|
234
237
|
end
|
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Mongo::Operation::Delete do
|
4
|
+
require_no_required_api_version
|
5
|
+
|
4
6
|
before do
|
5
7
|
begin
|
6
8
|
authorized_collection.delete_many
|
@@ -30,6 +32,8 @@ describe Mongo::Operation::Delete do
|
|
30
32
|
|
31
33
|
let(:op) { described_class.new(spec) }
|
32
34
|
|
35
|
+
let(:context) { Mongo::Operation::Context.new }
|
36
|
+
|
33
37
|
describe '#initialize' do
|
34
38
|
|
35
39
|
context 'spec' do
|
@@ -103,7 +107,7 @@ describe Mongo::Operation::Delete do
|
|
103
107
|
end
|
104
108
|
|
105
109
|
let(:result) do
|
106
|
-
delete.execute(authorized_primary,
|
110
|
+
delete.execute(authorized_primary, context: context)
|
107
111
|
end
|
108
112
|
|
109
113
|
it 'deletes the documents from the database' do
|
@@ -123,7 +127,7 @@ describe Mongo::Operation::Delete do
|
|
123
127
|
|
124
128
|
it 'raises an exception' do
|
125
129
|
expect {
|
126
|
-
delete.execute(authorized_primary,
|
130
|
+
delete.execute(authorized_primary, context: context)
|
127
131
|
}.to raise_error(Mongo::Error::OperationFailure)
|
128
132
|
end
|
129
133
|
end
|
@@ -147,7 +151,7 @@ describe Mongo::Operation::Delete do
|
|
147
151
|
end
|
148
152
|
|
149
153
|
let(:result) do
|
150
|
-
delete.execute(authorized_primary,
|
154
|
+
delete.execute(authorized_primary, context: context)
|
151
155
|
end
|
152
156
|
|
153
157
|
it 'deletes the documents from the database' do
|
@@ -166,13 +170,13 @@ describe Mongo::Operation::Delete do
|
|
166
170
|
end
|
167
171
|
|
168
172
|
let(:result) do
|
169
|
-
delete.execute(authorized_primary,
|
173
|
+
delete.execute(authorized_primary, context: context)
|
170
174
|
end
|
171
175
|
|
172
176
|
it 'does not delete any documents' do
|
173
177
|
|
174
178
|
expect {
|
175
|
-
op.execute(authorized_primary,
|
179
|
+
op.execute(authorized_primary, context: context)
|
176
180
|
}.to raise_error(Mongo::Error::OperationFailure)
|
177
181
|
|
178
182
|
expect(authorized_collection.find.count).to eq(2)
|
@@ -187,7 +191,7 @@ describe Mongo::Operation::Delete do
|
|
187
191
|
|
188
192
|
it 'raises an error' do
|
189
193
|
expect {
|
190
|
-
op.execute(authorized_primary,
|
194
|
+
op.execute(authorized_primary, context: context)
|
191
195
|
}.to raise_error(Mongo::Error::MaxBSONSize)
|
192
196
|
end
|
193
197
|
end
|
@@ -211,7 +215,7 @@ describe Mongo::Operation::Delete do
|
|
211
215
|
end
|
212
216
|
|
213
217
|
let(:result) do
|
214
|
-
delete.execute(authorized_primary,
|
218
|
+
delete.execute(authorized_primary, context: context)
|
215
219
|
end
|
216
220
|
|
217
221
|
before do
|
@@ -1,10 +1,14 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Mongo::Operation::DropIndex do
|
4
|
+
require_no_required_api_version
|
5
|
+
|
4
6
|
before do
|
5
7
|
authorized_collection.indexes.drop_all
|
6
8
|
end
|
7
9
|
|
10
|
+
let(:context) { Mongo::Operation::Context.new }
|
11
|
+
|
8
12
|
describe '#execute' do
|
9
13
|
|
10
14
|
context 'when the index exists' do
|
@@ -26,7 +30,7 @@ describe Mongo::Operation::DropIndex do
|
|
26
30
|
end
|
27
31
|
|
28
32
|
let(:response) do
|
29
|
-
operation.execute(authorized_primary,
|
33
|
+
operation.execute(authorized_primary, context: context)
|
30
34
|
end
|
31
35
|
|
32
36
|
it 'removes the index' do
|
@@ -46,7 +50,7 @@ describe Mongo::Operation::DropIndex do
|
|
46
50
|
|
47
51
|
it 'raises an exception' do
|
48
52
|
expect {
|
49
|
-
operation.execute(authorized_primary,
|
53
|
+
operation.execute(authorized_primary, context: context)
|
50
54
|
}.to raise_error(Mongo::Error::OperationFailure)
|
51
55
|
end
|
52
56
|
end
|
@@ -3,6 +3,8 @@ require 'spec_helper'
|
|
3
3
|
describe Mongo::Operation::Find::Legacy do
|
4
4
|
max_server_version '3.4'
|
5
5
|
|
6
|
+
let(:context) { Mongo::Operation::Context.new }
|
7
|
+
|
6
8
|
let(:selector) { { foo: 1 } }
|
7
9
|
let(:query_options) { {} }
|
8
10
|
let(:spec) do
|
@@ -116,7 +118,7 @@ describe Mongo::Operation::Find::Legacy do
|
|
116
118
|
|
117
119
|
it 'does not raise an exception' do
|
118
120
|
authorized_primary.with_connection do |connection|
|
119
|
-
expect(op.execute(connection,
|
121
|
+
expect(op.execute(connection, context: context)).to be_a(Mongo::Operation::Find::Legacy::Result)
|
120
122
|
end
|
121
123
|
end
|
122
124
|
end
|
@@ -19,6 +19,8 @@ describe Mongo::Operation::GetMore::Legacy do
|
|
19
19
|
|
20
20
|
let(:op) { described_class.new(spec) }
|
21
21
|
|
22
|
+
let(:context) { Mongo::Operation::Context.new }
|
23
|
+
|
22
24
|
describe '#initialize' do
|
23
25
|
|
24
26
|
it 'sets the spec' do
|
@@ -49,7 +51,7 @@ describe Mongo::Operation::GetMore::Legacy do
|
|
49
51
|
expect(Mongo::Protocol::GetMore).to receive(:new).with(SpecConfig.instance.test_db, TEST_COLL, to_return, cursor_id).and_call_original
|
50
52
|
begin
|
51
53
|
authorized_primary.with_connection do |connection|
|
52
|
-
op.execute(connection,
|
54
|
+
op.execute(connection, context: context)
|
53
55
|
end
|
54
56
|
rescue
|
55
57
|
end
|
@@ -1,6 +1,10 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Mongo::Operation::Indexes do
|
4
|
+
require_no_required_api_version
|
5
|
+
|
6
|
+
let(:context) { Mongo::Operation::Context.new }
|
7
|
+
|
4
8
|
describe '#execute' do
|
5
9
|
|
6
10
|
let(:index_spec) do
|
@@ -24,7 +28,7 @@ describe Mongo::Operation::Indexes do
|
|
24
28
|
end
|
25
29
|
|
26
30
|
let(:indexes) do
|
27
|
-
operation.execute(authorized_primary,
|
31
|
+
operation.execute(authorized_primary, context: context)
|
28
32
|
end
|
29
33
|
|
30
34
|
it 'returns the indexes for the collection' do
|