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
|
end
|
||||||
|
|
||||||
def user_name
|
def user_name
|
||||||
Etc.getlogin
|
config[:user] || Etc.getlogin
|
||||||
end
|
end
|
||||||
|
|
||||||
def fs
|
def fs
|
||||||
|
@ -48,10 +48,24 @@ module Producer::Core
|
|||||||
end
|
end
|
||||||
|
|
||||||
describe '#user_name' do
|
describe '#user_name' do
|
||||||
|
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
|
it 'returns the name of the user currently logged in' do
|
||||||
expect(remote.user_name).to eq Etc.getlogin
|
expect(remote.user_name).to eq Etc.getlogin
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe '#fs' do
|
describe '#fs' do
|
||||||
it 'builds a new FS' do
|
it 'builds a new FS' do
|
||||||
|
Loading…
x
Reference in New Issue
Block a user