mongo 2.6.1 → 2.6.2

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