1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
# frozen_string_literal: true
# rubocop:todo all
require 'spec_helper'
describe 'Direct connection with RS name' do
before(:all) do
# preload
ClusterConfig.instance.replica_set_name
end
clean_slate_for_all
shared_examples_for 'passes RS name to topology' do
it 'passes RS name to topology' do
expect(client.cluster.topology.replica_set_name).to eq(replica_set_name)
end
end
let(:client) do
new_local_client(
[SpecConfig.instance.addresses.first],
SpecConfig.instance.test_options.merge(
replica_set: replica_set_name, connect: :direct,
server_selection_timeout: 3.32,
))
end
context 'in replica set' do
require_topology :replica_set
context 'with correct RS name' do
let(:replica_set_name) { ClusterConfig.instance.replica_set_name }
it_behaves_like 'passes RS name to topology'
it 'creates a working client' do
expect do
res = client.database.command(ping: 1)
p res
end.not_to raise_error
end
end
context 'with wrong RS name' do
let(:replica_set_name) { 'wrong' }
it_behaves_like 'passes RS name to topology'
it 'creates a client which does not find a suitable server' do
# TODO When RUBY-2197 is implemented, assert the error message also
expect do
client.database.command(ping: 1)
end.to raise_error(Mongo::Error::NoServerAvailable)
end
end
end
context 'in standalone' do
require_topology :single
context 'with any RS name' do
let(:replica_set_name) { 'any' }
it_behaves_like 'passes RS name to topology'
it 'creates a client which raises on every operation' do
# TODO When RUBY-2197 is implemented, assert the error message also
expect do
client.database.command(ping: 1)
end.to raise_error(Mongo::Error::NoServerAvailable)
end
end
end
end
|