Use SSH user name configured for a given target:
When a user is configured for the targeted host name, use it for SSH authentification instead of the name of current user logged in. * Modify Remote#user_name to use configured user name.
This commit is contained in:
parent
768a6755de
commit
85a47df547
22
features/ssh/config.feature
Normal file
22
features/ssh/config.feature
Normal file
@ -0,0 +1,22 @@
|
||||
Feature: SSH settings
|
||||
|
||||
Background:
|
||||
Given a recipe with:
|
||||
"""
|
||||
target 'some_host.example'
|
||||
|
||||
puts env.remote.user_name
|
||||
"""
|
||||
|
||||
Scenario: uses current user login name as SSH user name by default
|
||||
When I successfully execute the recipe
|
||||
Then the output must contain my current login name
|
||||
|
||||
Scenario: uses configured SSH user name for a given host
|
||||
Given an SSH config with:
|
||||
"""
|
||||
Host some_host.example
|
||||
User some_user
|
||||
"""
|
||||
When I successfully execute the recipe
|
||||
Then the output must contain "some_user"
|
5
features/steps/etc_steps.rb
Normal file
5
features/steps/etc_steps.rb
Normal file
@ -0,0 +1,5 @@
|
||||
# FIXME: our monkey patch currently prevent us from using `must' in step
|
||||
# definitions.
|
||||
Then(/^the output should contain my current login name$/) do
|
||||
assert_partial_output(Etc.getlogin, all_output)
|
||||
end
|
6
features/steps/ssh_steps.rb
Normal file
6
features/steps/ssh_steps.rb
Normal file
@ -0,0 +1,6 @@
|
||||
# FIXME: current home directory shouldn't be changed here, maybe we should use
|
||||
# a tag for features needing a fake home directory.
|
||||
Given(/^an SSH config with:$/) do |config|
|
||||
ENV['HOME'] = File.expand_path current_dir
|
||||
write_file '.ssh/config', config
|
||||
end
|
@ -19,7 +19,7 @@ module Producer
|
||||
end
|
||||
|
||||
def user_name
|
||||
Etc.getlogin
|
||||
config[:user] || Etc.getlogin
|
||||
end
|
||||
|
||||
def fs
|
||||
|
@ -48,8 +48,22 @@ module Producer::Core
|
||||
end
|
||||
|
||||
describe '#user_name' do
|
||||
it 'returns the name of the user currently logged in' do
|
||||
expect(remote.user_name).to eq Etc.getlogin
|
||||
context 'ssh config has an entry for user' do
|
||||
let(:config_user_name) { 'my_user_name' }
|
||||
|
||||
before do
|
||||
allow(Net::SSH::Config).to receive(:for) { { user: config_user_name } }
|
||||
end
|
||||
|
||||
it 'returns the configured value' do
|
||||
expect(remote.user_name).to eq config_user_name
|
||||
end
|
||||
end
|
||||
|
||||
context 'ssh config has no entry for user' do
|
||||
it 'returns the name of the user currently logged in' do
|
||||
expect(remote.user_name).to eq Etc.getlogin
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user