Skip to content

Commit 26c1939

Browse files
committed
RUBY-1021 Tests for inspect methods
1 parent 63b4e31 commit 26c1939

File tree

7 files changed

+56
-1
lines changed

7 files changed

+56
-1
lines changed

spec/mongo/client_spec.rb

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,23 @@
203203
"<Mongo::Client:0x#{client.object_id} cluster=127.0.0.1:27017"
204204
)
205205
end
206+
207+
context 'when there is sensitive data in the options' do
208+
209+
let(:client) do
210+
described_class.new(
211+
['127.0.0.1:27017'],
212+
:read => { :mode => :primary },
213+
:database => TEST_DB,
214+
:password => '123',
215+
:user => 'emily'
216+
)
217+
end
218+
219+
it 'does not print out sensitive data' do
220+
expect(client.inspect).not_to match('123')
221+
end
222+
end
206223
end
207224

208225
describe '#initialize' do
@@ -710,4 +727,19 @@
710727
expect(client.reconnect).to be(true)
711728
end
712729
end
730+
731+
describe '#dup' do
732+
733+
let(:client) do
734+
described_class.new(
735+
['127.0.0.1:27017'],
736+
:read => { :mode => :primary },
737+
:database => TEST_DB
738+
)
739+
end
740+
741+
it 'creates a client with Redacted options' do
742+
expect(client.dup.options).to be_a(Mongo::Options::Redacted)
743+
end
744+
end
713745
end

spec/mongo/server_selector/nearest_spec.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
end
1212

1313
it_behaves_like 'a server selector accepting tag sets'
14+
it_behaves_like 'a server selector with sensitive data in its options'
1415

1516
describe '#to_mongos' do
1617

spec/mongo/server_selector/primary_preferred_spec.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
end
1212

1313
it_behaves_like 'a server selector accepting tag sets'
14+
it_behaves_like 'a server selector with sensitive data in its options'
1415

1516
describe '#to_mongos' do
1617

spec/mongo/server_selector/primary_spec.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
it_behaves_like 'a server selector mode' do
1010
let(:slave_ok) { false }
1111
end
12+
it_behaves_like 'a server selector with sensitive data in its options'
1213

1314
describe '#tag_sets' do
1415

spec/mongo/server_selector/secondary_preferred_spec.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
it_behaves_like 'a server selector mode' do
1010
let(:slave_ok) { true }
1111
end
12+
it_behaves_like 'a server selector with sensitive data in its options'
1213

1314
it_behaves_like 'a server selector accepting tag sets'
1415

spec/mongo/server_selector/secondary_spec.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
it_behaves_like 'a server selector mode' do
1010
let(:slave_ok) { true }
1111
end
12+
it_behaves_like 'a server selector with sensitive data in its options'
1213

1314
it_behaves_like 'a server selector accepting tag sets'
1415

spec/support/shared/server_selector.rb

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ def server(mode, options = {})
3232
end
3333
let(:primary) { server(:primary) }
3434
let(:secondary) { server(:secondary) }
35-
let(:selector) { described_class.new(:mode => name, :tag_sets => tag_sets) }
35+
let(:options) { { :mode => name, :tag_sets => tag_sets } }
36+
let(:selector) { described_class.new(options) }
3637

3738
before(:all) do
3839
module Mongo
@@ -157,3 +158,20 @@ class Server
157158
end
158159
end
159160
end
161+
162+
shared_examples 'a server selector with sensitive data in its options' do
163+
164+
describe '#inspect' do
165+
166+
context 'when there is sensitive data in the options' do
167+
168+
let(:options) do
169+
Mongo::Options::Redacted.new(:mode => name, :password => '123')
170+
end
171+
172+
it 'does not print out sensitive data' do
173+
expect(selector.inspect).not_to match(options[:password])
174+
end
175+
end
176+
end
177+
end

0 commit comments

Comments
 (0)