mongo 2.6.1 → 2.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +4 -1
  3. data.tar.gz.sig +0 -0
  4. data/lib/mongo/client.rb +27 -16
  5. data/lib/mongo/cluster/topology/replica_set.rb +15 -3
  6. data/lib/mongo/error/lint_error.rb +1 -1
  7. data/lib/mongo/server/description.rb +1 -1
  8. data/lib/mongo/version.rb +1 -1
  9. data/spec/{mongo → integration}/change_stream_examples_spec.rb +0 -0
  10. data/spec/{mongo → integration}/docs_examples_spec.rb +0 -0
  11. data/spec/integration/reconnect_spec.rb +31 -0
  12. data/spec/{mongo → integration}/retryable_writes_spec.rb +0 -0
  13. data/spec/{mongo → integration}/shell_examples_spec.rb +0 -0
  14. data/spec/{mongo → integration}/transactions_examples_spec.rb +46 -61
  15. data/spec/lite_spec_helper.rb +7 -2
  16. data/spec/mongo/address/unix_spec.rb +1 -1
  17. data/spec/mongo/address_spec.rb +10 -10
  18. data/spec/mongo/auth/scram/conversation_spec.rb +2 -1
  19. data/spec/mongo/auth/scram/negotiation_spec.rb +6 -5
  20. data/spec/mongo/auth/scram_spec.rb +5 -4
  21. data/spec/mongo/bulk_write_spec.rb +3 -2
  22. data/spec/mongo/client_spec.rb +15 -7
  23. data/spec/mongo/cluster/topology/replica_set_spec.rb +46 -10
  24. data/spec/mongo/cluster_spec.rb +3 -3
  25. data/spec/mongo/collection/view/aggregation_spec.rb +2 -1
  26. data/spec/mongo/collection/view/readable_spec.rb +2 -1
  27. data/spec/mongo/collection_spec.rb +40 -23
  28. data/spec/mongo/database_spec.rb +3 -3
  29. data/spec/mongo/index/view_spec.rb +4 -2
  30. data/spec/mongo/server/connection_pool_spec.rb +1 -1
  31. data/spec/mongo/socket/ssl_spec.rb +3 -3
  32. data/spec/mongo/socket/unix_spec.rb +1 -1
  33. data/spec/mongo/socket_spec.rb +2 -2
  34. data/spec/mongo/uri/srv_protocol_spec.rb +2 -1
  35. data/spec/mongo/uri_spec.rb +6 -5
  36. data/spec/spec_helper.rb +7 -28
  37. data/spec/spec_tests/dns_seedlist_discovery_spec.rb +61 -63
  38. data/spec/spec_tests/sdam_monitoring_spec.rb +10 -7
  39. data/spec/{mongo → spec_tests}/transactions_spec.rb +8 -3
  40. data/spec/support/authorization.rb +10 -55
  41. data/spec/support/constraints.rb +34 -10
  42. data/spec/support/lite_constraints.rb +18 -0
  43. data/spec/support/sdam/rs/secondary_ignore_ok_0.yml +85 -0
  44. data/spec/support/spec_config.rb +73 -0
  45. data/spec/support/transactions.rb +1 -1
  46. metadata +170 -162
  47. metadata.gz.sig +1 -2
@@ -26,7 +26,8 @@ module Mongo
26
26
  end
27
27
  end
28
28
 
29
- describe 'SCRAM-SHA auth mechanism negotiation', if: scram_sha_256_enabled? do
29
+ describe 'SCRAM-SHA auth mechanism negotiation' do
30
+ require_scram_sha_256_support
30
31
 
31
32
  URI_OPTION_MAP = {
32
33
  :auth_source => 'authsource',
@@ -65,7 +66,7 @@ describe 'SCRAM-SHA auth mechanism negotiation', if: scram_sha_256_enabled? do
65
66
  end
66
67
 
67
68
  Mongo::Client.new(
68
- ADDRESSES,
69
+ SpecConfig.instance.addresses,
69
70
  TEST_OPTIONS.merge(opts)
70
71
  )
71
72
  end
@@ -310,11 +311,11 @@ describe 'SCRAM-SHA auth mechanism negotiation', if: scram_sha_256_enabled? do
310
311
  context 'when the configuration is specified in the URI' do
311
312
 
312
313
  let(:uri) do
313
- "mongodb://#{user.name}:#{password}@#{ADDRESSES.join(',')}/admin".tap do |uri|
314
+ "mongodb://#{user.name}:#{password}@#{SpecConfig.instance.addresses.join(',')}/admin".tap do |uri|
314
315
  first = true
315
316
 
316
- if defined?(URI_OPTIONS)
317
- URI_OPTIONS.each do |k, v|
317
+ if SpecConfig.instance.uri_options
318
+ SpecConfig.instance.uri_options.each do |k, v|
318
319
  uri << (first ? '?' : '&')
319
320
  first = false
320
321
 
@@ -101,6 +101,7 @@ describe Mongo::Auth::SCRAM do
101
101
  end
102
102
 
103
103
  context 'when SCRAM-SHA-256 is used' do
104
+ require_scram_sha_256_support
104
105
 
105
106
  describe '#login' do
106
107
 
@@ -119,13 +120,13 @@ describe Mongo::Auth::SCRAM do
119
120
  described_class.new(user)
120
121
  end
121
122
 
122
- it 'raises an exception', if: scram_sha_256_enabled? do
123
+ it 'raises an exception' do
123
124
  expect {
124
125
  cr.login(connection)
125
126
  }.to raise_error(Mongo::Auth::Unauthorized)
126
127
  end
127
128
 
128
- context 'when compression is used', if: scram_sha_256_enabled? && testing_compression? do
129
+ context 'when compression is used', if: testing_compression? do
129
130
 
130
131
  it 'does not compress the message' do
131
132
  expect(Mongo::Protocol::Compressed).not_to receive(:new)
@@ -150,12 +151,12 @@ describe Mongo::Auth::SCRAM do
150
151
  test_user.instance_variable_set(:@client_key, nil)
151
152
  end
152
153
 
153
- it 'logs the user into the connection and caches the client key', if: scram_sha_256_enabled? do
154
+ it 'logs the user into the connection and caches the client key' do
154
155
  expect(login['ok']).to eq(1)
155
156
  expect(test_user.send(:client_key)).not_to be_nil
156
157
  end
157
158
 
158
- it 'raises an exception when an incorrect client key is set', if: scram_sha_256_enabled? do
159
+ it 'raises an exception when an incorrect client key is set' do
159
160
  test_user.instance_variable_set(:@client_key, "incorrect client key")
160
161
  expect {
161
162
  cr.login(connection)
@@ -424,7 +424,7 @@ describe Mongo::BulkWrite do
424
424
  }])
425
425
  end
426
426
 
427
- let(:selector) do
427
+ let(:selector) do
428
428
  { '$or' => [{ _id: 1 }, { _id: 2 }]}
429
429
  end
430
430
 
@@ -2136,7 +2136,8 @@ describe Mongo::BulkWrite do
2136
2136
  end
2137
2137
  end
2138
2138
 
2139
- describe 'when the collection has a validator', if: find_command_enabled? do
2139
+ describe 'when the collection has a validator' do
2140
+ min_server_version '3.2'
2140
2141
 
2141
2142
  before do
2142
2143
  collection_with_validator.insert_many([{ :a => 1 }, { :a => 2 }])
@@ -34,14 +34,14 @@ describe Mongo::Client do
34
34
  expect do
35
35
  client = described_class.new(['127.0.0.1:27017'],
36
36
  :read => {:mode => :bogus})
37
- end.to raise_error(Mongo::Error::InvalidReadOption, 'Invalid read option: {:mode=>:bogus}: mode bogus is not one of recognized modes')
37
+ end.to raise_error(Mongo::Error::InvalidReadOption, 'Invalid read option: {"mode"=>:bogus}: mode bogus is not one of recognized modes')
38
38
  end
39
39
 
40
40
  it 'rejects bogus read preference as string' do
41
41
  expect do
42
42
  client = described_class.new(['127.0.0.1:27017'],
43
43
  :read => {:mode => 'bogus'})
44
- end.to raise_error(Mongo::Error::InvalidReadOption, 'Invalid read option: {:mode=>"bogus"}: mode bogus is not one of recognized modes')
44
+ end.to raise_error(Mongo::Error::InvalidReadOption, 'Invalid read option: {"mode"=>"bogus"}: mode bogus is not one of recognized modes')
45
45
  end
46
46
 
47
47
  it 'rejects read option specified as a string' do
@@ -717,7 +717,8 @@ describe Mongo::Client do
717
717
 
718
718
  context 'when providing a connection string' do
719
719
 
720
- context 'when the string uses the SRV Protocol', if: test_connecting_externally? do
720
+ context 'when the string uses the SRV Protocol' do
721
+ require_external_connectivity
721
722
 
722
723
  let!(:uri) do
723
724
  'mongodb+srv://test5.test.build.10gen.cc/testdb'
@@ -1468,7 +1469,7 @@ describe Mongo::Client do
1468
1469
  end
1469
1470
 
1470
1471
  let(:client) do
1471
- Mongo::Client.new(ADDRESSES, client_options).tap do |cl|
1472
+ Mongo::Client.new(SpecConfig.instance.addresses, client_options).tap do |cl|
1472
1473
  cl.subscribe(Mongo::Monitoring::COMMAND, EventSubscriber.clear_events!)
1473
1474
  end
1474
1475
  end
@@ -1481,6 +1482,10 @@ describe Mongo::Client do
1481
1482
  client.list_databases({}, true)
1482
1483
  end
1483
1484
 
1485
+ after do
1486
+ client.close
1487
+ end
1488
+
1484
1489
  it 'sends the command with the nameOnly flag set to true' do
1485
1490
  expect(command[:nameOnly]).to be(true)
1486
1491
  end
@@ -1548,11 +1553,14 @@ describe Mongo::Client do
1548
1553
  described_class.new(['127.0.0.1:27017'])
1549
1554
  end
1550
1555
 
1551
- before do
1552
- expect(client.cluster).to receive(:reconnect!).and_call_original
1556
+ it 'replaces the cluster' do
1557
+ old_id = client.cluster.object_id
1558
+ client.reconnect
1559
+ new_id = client.cluster.object_id
1560
+ expect(new_id).not_to eql(old_id)
1553
1561
  end
1554
1562
 
1555
- it 'reconnects the cluster and returns true' do
1563
+ it 'returns true' do
1556
1564
  expect(client.reconnect).to be(true)
1557
1565
  end
1558
1566
  end
@@ -514,6 +514,9 @@ describe Mongo::Cluster::Topology::ReplicaSet do
514
514
  allow(d).to receive(:replica_set_name).and_return('test')
515
515
  allow(d).to receive(:is_server?).and_return(true)
516
516
  allow(d).to receive(:ghost?).and_return(false)
517
+ allow(d).to receive(:address).and_return(address)
518
+ allow(d).to receive(:me_mismatch?).and_return(false)
519
+ allow(d).to receive(:unknown?).and_return(false)
517
520
  end
518
521
  end
519
522
 
@@ -533,6 +536,10 @@ describe Mongo::Cluster::Topology::ReplicaSet do
533
536
  allow(d).to receive(:replica_set_name).and_return('testing')
534
537
  allow(d).to receive(:lists_server?).and_return(true)
535
538
  allow(d).to receive(:servers).and_return([double('server')])
539
+ allow(d).to receive(:address).and_return(address)
540
+ allow(d).to receive(:me_mismatch?).and_return(false)
541
+ allow(d).to receive(:unknown?).and_return(false)
542
+ allow(d).to receive(:server_type).and_return(:secondary)
536
543
  end
537
544
  end
538
545
 
@@ -543,19 +550,46 @@ describe Mongo::Cluster::Topology::ReplicaSet do
543
550
 
544
551
  context 'when the description does not include the server in question' do
545
552
 
546
- let(:description) do
547
- double('description').tap do |d|
548
- allow(d).to receive(:config).and_return({ 'setName' => 'testing' })
549
- allow(d).to receive(:replica_set_member?).and_return(true)
550
- allow(d).to receive(:replica_set_name).and_return('testing')
551
- allow(d).to receive(:is_server?).and_return(false)
552
- allow(d).to receive(:lists_server?).and_return(false)
553
- allow(d).to receive(:servers).and_return([double('server')])
553
+ context 'when the description is primary' do
554
+ let(:description) do
555
+ double('description').tap do |d|
556
+ allow(d).to receive(:config).and_return({ 'setName' => 'testing' })
557
+ allow(d).to receive(:replica_set_member?).and_return(true)
558
+ allow(d).to receive(:replica_set_name).and_return('testing')
559
+ allow(d).to receive(:is_server?).and_return(false)
560
+ allow(d).to receive(:lists_server?).and_return(false)
561
+ allow(d).to receive(:servers).and_return([double('server')])
562
+ allow(d).to receive(:address).and_return("127.0.0.1:27018")
563
+ allow(d).to receive(:me_mismatch?).and_return(false)
564
+ allow(d).to receive(:unknown?).and_return(false)
565
+ allow(d).to receive(:server_type).and_return(:primary)
566
+ end
567
+ end
568
+
569
+ it 'returns true' do
570
+ expect(topology.remove_server?(description, secondary)).to eq(true)
554
571
  end
555
572
  end
556
573
 
557
- it 'returns true' do
558
- expect(topology.remove_server?(description, secondary)).to eq(true)
574
+ context 'when the description is not' do
575
+ let(:description) do
576
+ double('description').tap do |d|
577
+ allow(d).to receive(:config).and_return({ 'setName' => 'testing' })
578
+ allow(d).to receive(:replica_set_member?).and_return(true)
579
+ allow(d).to receive(:replica_set_name).and_return('testing')
580
+ allow(d).to receive(:is_server?).and_return(false)
581
+ allow(d).to receive(:lists_server?).and_return(false)
582
+ allow(d).to receive(:servers).and_return([double('server')])
583
+ allow(d).to receive(:address).and_return('127.0.0.1:27018')
584
+ allow(d).to receive(:me_mismatch?).and_return(false)
585
+ allow(d).to receive(:unknown?).and_return(false)
586
+ allow(d).to receive(:server_type).and_return(:secondary)
587
+ end
588
+ end
589
+
590
+ it 'returns false' do
591
+ expect(topology.remove_server?(description, secondary)).to eq(false)
592
+ end
559
593
  end
560
594
  end
561
595
  end
@@ -568,6 +602,8 @@ describe Mongo::Cluster::Topology::ReplicaSet do
568
602
  allow(d).to receive(:replica_set_member?).and_return(true)
569
603
  allow(d).to receive(:replica_set_name).and_return('test')
570
604
  allow(d).to receive(:is_server?).and_return(false)
605
+ allow(d).to receive(:address).and_return('127.0.0.1:27018')
606
+ allow(d).to receive(:unknown?).and_return(false)
571
607
  end
572
608
  end
573
609
 
@@ -7,7 +7,7 @@ describe Mongo::Cluster do
7
7
  end
8
8
 
9
9
  let(:cluster) do
10
- described_class.new(ADDRESSES, monitoring, TEST_OPTIONS)
10
+ described_class.new(SpecConfig.instance.addresses, monitoring, TEST_OPTIONS)
11
11
  end
12
12
 
13
13
  describe '#==' do
@@ -19,7 +19,7 @@ describe Mongo::Cluster do
19
19
  context 'when the options are the same' do
20
20
 
21
21
  let(:other) do
22
- described_class.new(ADDRESSES, monitoring, TEST_OPTIONS)
22
+ described_class.new(SpecConfig.instance.addresses, monitoring, TEST_OPTIONS)
23
23
  end
24
24
 
25
25
  it 'returns true' do
@@ -594,7 +594,7 @@ describe Mongo::Cluster do
594
594
  describe '#update_cluster_time' do
595
595
 
596
596
  let(:cluster) do
597
- described_class.new(ADDRESSES, monitoring, TEST_OPTIONS.merge(heartbeat_frequency: 1000))
597
+ described_class.new(SpecConfig.instance.addresses, monitoring, TEST_OPTIONS.merge(heartbeat_frequency: 1000))
598
598
  end
599
599
 
600
600
  let(:result) do
@@ -147,7 +147,8 @@ describe Mongo::Collection::View::Aggregation do
147
147
  end
148
148
  end
149
149
 
150
- context 'when the initial response has no results but an active cursor', if: find_command_enabled? do
150
+ context 'when the initial response has no results but an active cursor' do
151
+ min_server_version '3.2'
151
152
 
152
153
  let(:documents) do
153
154
  [
@@ -20,7 +20,8 @@ describe Mongo::Collection::View::Readable do
20
20
 
21
21
  shared_examples_for 'a read concern aware operation' do
22
22
 
23
- context 'when a read concern is provided', if: find_command_enabled? do
23
+ context 'when a read concern is provided' do
24
+ min_server_version '3.2'
24
25
 
25
26
  let(:new_view) do
26
27
  Mongo::Collection::View.new(new_collection, selector, options)
@@ -101,7 +101,7 @@ describe Mongo::Collection do
101
101
  describe '#with' do
102
102
 
103
103
  let(:client) do
104
- Mongo::Client.new(ADDRESSES, TEST_OPTIONS)
104
+ Mongo::Client.new(SpecConfig.instance.addresses, TEST_OPTIONS)
105
105
  end
106
106
 
107
107
  let(:database) do
@@ -133,7 +133,7 @@ describe Mongo::Collection do
133
133
  context 'when the client has a server selection timeout setting' do
134
134
 
135
135
  let(:client) do
136
- Mongo::Client.new(ADDRESSES, TEST_OPTIONS.merge(server_selection_timeout: 2))
136
+ Mongo::Client.new(SpecConfig.instance.addresses, TEST_OPTIONS.merge(server_selection_timeout: 2))
137
137
  end
138
138
 
139
139
  it 'passes the the server_selection_timeout to the cluster' do
@@ -144,7 +144,7 @@ describe Mongo::Collection do
144
144
  context 'when the client has a read preference set' do
145
145
 
146
146
  let(:client) do
147
- Mongo::Client.new(ADDRESSES, TEST_OPTIONS.merge(read: { mode: :primary_preferred }))
147
+ Mongo::Client.new(SpecConfig.instance.addresses, TEST_OPTIONS.merge(read: { mode: :primary_preferred }))
148
148
  end
149
149
 
150
150
  it 'sets the new read options on the new collection' do
@@ -156,7 +156,7 @@ describe Mongo::Collection do
156
156
  context 'when the client has a read preference and server selection timeout set' do
157
157
 
158
158
  let(:client) do
159
- Mongo::Client.new(ADDRESSES, TEST_OPTIONS.merge(read: { mode: :primary_preferred }, server_selection_timeout: 2))
159
+ Mongo::Client.new(SpecConfig.instance.addresses, TEST_OPTIONS.merge(read: { mode: :primary_preferred }, server_selection_timeout: 2))
160
160
  end
161
161
 
162
162
  it 'sets the new read options on the new collection' do
@@ -186,7 +186,7 @@ describe Mongo::Collection do
186
186
  context 'when the client has a write concern set' do
187
187
 
188
188
  let(:client) do
189
- Mongo::Client.new(ADDRESSES, TEST_OPTIONS.merge(write: INVALID_WRITE_CONCERN))
189
+ Mongo::Client.new(SpecConfig.instance.addresses, TEST_OPTIONS.merge(write: INVALID_WRITE_CONCERN))
190
190
  end
191
191
 
192
192
  it 'sets the new write options on the new collection' do
@@ -219,7 +219,7 @@ describe Mongo::Collection do
219
219
  context 'when the client has a server selection timeout setting' do
220
220
 
221
221
  let(:client) do
222
- Mongo::Client.new(ADDRESSES, TEST_OPTIONS.merge(server_selection_timeout: 2))
222
+ Mongo::Client.new(SpecConfig.instance.addresses, TEST_OPTIONS.merge(server_selection_timeout: 2))
223
223
  end
224
224
 
225
225
  it 'passes the server_selection_timeout setting to the cluster' do
@@ -230,7 +230,7 @@ describe Mongo::Collection do
230
230
  context 'when the client has a read preference set' do
231
231
 
232
232
  let(:client) do
233
- Mongo::Client.new(ADDRESSES, TEST_OPTIONS.merge(read: { mode: :primary_preferred }))
233
+ Mongo::Client.new(SpecConfig.instance.addresses, TEST_OPTIONS.merge(read: { mode: :primary_preferred }))
234
234
  end
235
235
 
236
236
  it 'sets the new read options on the new collection' do
@@ -489,7 +489,8 @@ describe Mongo::Collection do
489
489
 
490
490
  it_behaves_like 'a capped collection command'
491
491
 
492
- context 'when validators can be set', if: find_command_enabled? do
492
+ context 'when validators can be set' do
493
+ min_server_version '3.2'
493
494
  it_behaves_like 'a validated collection command'
494
495
  end
495
496
  end
@@ -502,7 +503,8 @@ describe Mongo::Collection do
502
503
 
503
504
  it_behaves_like 'a capped collection command'
504
505
 
505
- context 'when validators can be set', if: find_command_enabled? do
506
+ context 'when validators can be set' do
507
+ min_server_version '3.2'
506
508
  it_behaves_like 'a validated collection command'
507
509
  end
508
510
  end
@@ -1241,7 +1243,8 @@ describe Mongo::Collection do
1241
1243
  end
1242
1244
  end
1243
1245
 
1244
- context 'when collection has a validator', if: find_command_enabled? do
1246
+ context 'when collection has a validator' do
1247
+ min_server_version '3.2'
1245
1248
 
1246
1249
  around(:each) do |spec|
1247
1250
  authorized_client[:validating,
@@ -1446,7 +1449,8 @@ describe Mongo::Collection do
1446
1449
  end
1447
1450
  end
1448
1451
 
1449
- context 'when collection has a validator', if: find_command_enabled? do
1452
+ context 'when collection has a validator' do
1453
+ min_server_version '3.2'
1450
1454
 
1451
1455
  around(:each) do |spec|
1452
1456
  authorized_client[:validating,
@@ -2327,6 +2331,7 @@ describe Mongo::Collection do
2327
2331
  end
2328
2332
 
2329
2333
  describe '#parallel_scan', unless: sharded? do
2334
+ max_server_version '4.0'
2330
2335
 
2331
2336
  let(:documents) do
2332
2337
  (1..200).map do |i|
@@ -2423,7 +2428,8 @@ describe Mongo::Collection do
2423
2428
  it_behaves_like 'an operation supporting causally consistent reads'
2424
2429
  end
2425
2430
 
2426
- context 'when a read concern is provided', if: find_command_enabled? do
2431
+ context 'when a read concern is provided' do
2432
+ min_server_version '3.2'
2427
2433
 
2428
2434
  let(:result) do
2429
2435
  authorized_collection.with(options).parallel_scan(2)
@@ -2615,7 +2621,8 @@ describe Mongo::Collection do
2615
2621
  end
2616
2622
  end
2617
2623
 
2618
- context 'when collection has a validator', if: find_command_enabled? do
2624
+ context 'when collection has a validator' do
2625
+ min_server_version '3.2'
2619
2626
 
2620
2627
  around(:each) do |spec|
2621
2628
  authorized_client[:validating,
@@ -3027,7 +3034,8 @@ describe Mongo::Collection do
3027
3034
  end
3028
3035
  end
3029
3036
 
3030
- context 'when collection has a validator', if: find_command_enabled? do
3037
+ context 'when collection has a validator' do
3038
+ min_server_version '3.2'
3031
3039
 
3032
3040
  around(:each) do |spec|
3033
3041
  authorized_client[:validating,
@@ -3344,7 +3352,8 @@ describe Mongo::Collection do
3344
3352
  end
3345
3353
  end
3346
3354
 
3347
- context 'when collection has a validator', if: find_command_enabled? do
3355
+ context 'when collection has a validator' do
3356
+ min_server_version '3.2'
3348
3357
 
3349
3358
  around(:each) do |spec|
3350
3359
  authorized_client[:validating,
@@ -3781,7 +3790,8 @@ describe Mongo::Collection do
3781
3790
  end
3782
3791
  end
3783
3792
 
3784
- context 'when write_concern is provided', if: find_command_enabled? && standalone? do
3793
+ context 'when write_concern is provided', if: standalone? do
3794
+ min_server_version '3.2'
3785
3795
 
3786
3796
  it 'uses the write concern' do
3787
3797
  expect {
@@ -3791,7 +3801,8 @@ describe Mongo::Collection do
3791
3801
  end
3792
3802
  end
3793
3803
 
3794
- context 'when the collection has a write concern', if: find_command_enabled? && standalone? do
3804
+ context 'when the collection has a write concern', if: standalone? do
3805
+ min_server_version '3.2'
3795
3806
 
3796
3807
  let(:collection) do
3797
3808
  authorized_collection.with(write: { w: 2 })
@@ -4049,7 +4060,8 @@ describe Mongo::Collection do
4049
4060
  end
4050
4061
  end
4051
4062
 
4052
- context 'when collection has a validator', if: find_command_enabled? do
4063
+ context 'when collection has a validator' do
4064
+ min_server_version '3.2'
4053
4065
 
4054
4066
  around(:each) do |spec|
4055
4067
  authorized_client[:validating,
@@ -4108,7 +4120,8 @@ describe Mongo::Collection do
4108
4120
  end
4109
4121
  end
4110
4122
 
4111
- context 'when write_concern is provided', if: find_command_enabled? && standalone? do
4123
+ context 'when write_concern is provided', if: standalone? do
4124
+ min_server_version '3.2'
4112
4125
 
4113
4126
  it 'uses the write concern' do
4114
4127
  expect {
@@ -4119,7 +4132,8 @@ describe Mongo::Collection do
4119
4132
  end
4120
4133
  end
4121
4134
 
4122
- context 'when the collection has a write concern', if: find_command_enabled? && standalone? do
4135
+ context 'when the collection has a write concern', if: standalone? do
4136
+ min_server_version '3.2'
4123
4137
 
4124
4138
  let(:collection) do
4125
4139
  authorized_collection.with(write: { w: 2 })
@@ -4434,7 +4448,8 @@ describe Mongo::Collection do
4434
4448
  end
4435
4449
  end
4436
4450
 
4437
- context 'when collection has a validator', if: find_command_enabled? do
4451
+ context 'when collection has a validator' do
4452
+ min_server_version '3.2'
4438
4453
 
4439
4454
  around(:each) do |spec|
4440
4455
  authorized_client[:validating,
@@ -4493,7 +4508,8 @@ describe Mongo::Collection do
4493
4508
  end
4494
4509
  end
4495
4510
 
4496
- context 'when write_concern is provided', if: find_command_enabled? && standalone? do
4511
+ context 'when write_concern is provided', if: standalone? do
4512
+ min_server_version '3.2'
4497
4513
 
4498
4514
  it 'uses the write concern' do
4499
4515
  expect {
@@ -4504,7 +4520,8 @@ describe Mongo::Collection do
4504
4520
  end
4505
4521
  end
4506
4522
 
4507
- context 'when the collection has a write concern', if: find_command_enabled? && standalone? do
4523
+ context 'when the collection has a write concern', if: standalone? do
4524
+ min_server_version '3.2'
4508
4525
 
4509
4526
  let(:collection) do
4510
4527
  authorized_collection.with(write: { w: 2 })