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 76 77 78 79 80 81 82 83 84 85 86 87
|
# frozen_string_literal: true
# rubocop:todo all
require 'lite_spec_helper'
describe Mongo::Server::ConnectionCommon do
let(:subject) { described_class.new }
let(:metadata) do
Mongo::Server::AppMetadata.new({})
end
describe '#handshake_document' do
let(:document) do
subject.handshake_document(metadata)
end
context 'with api version' do
let(:metadata) do
Mongo::Server::AppMetadata.new({
server_api: { version: '1' }
})
end
it 'returns hello document with API version' do
expect(document['hello']).to eq(1)
end
end
context 'without api version' do
it 'returns legacy hello document without API version' do
expect(document['isMaster']).to eq(1)
end
end
context 'when connecting to load balancer' do
let(:document) do
subject.handshake_document(metadata, load_balancer: true)
end
it 'includes loadBalanced: true' do
document['loadBalanced'].should be true
end
end
end
describe '#handshake_command' do
let(:document) do
subject.handshake_document(metadata, load_balancer: load_balancer)
end
let(:load_balancer) { false }
context 'with api version' do
let(:metadata) do
Mongo::Server::AppMetadata.new({
server_api: { version: '1' }
})
end
it 'returns OP_MSG command' do
expect(
subject.handshake_command(document)
).to be_a(Mongo::Protocol::Msg)
end
end
context 'with loadBalanced=true' do
let(:load_balancer) { true }
it 'returns OP_MSG command' do
expect(
subject.handshake_command(document)
).to be_a(Mongo::Protocol::Msg)
end
end
context 'without api version' do
it 'returns OP_QUERY command' do
expect(
subject.handshake_command(document)
).to be_a(Mongo::Protocol::Query)
end
end
end
end
|