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:
		
							
								
								
									
										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 | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user