producer-core 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c9dca497744fe5fa26c09753548310eb42414a25
4
+ data.tar.gz: 212301a43272758c9624d5e0d2556ced790c17b3
5
+ SHA512:
6
+ metadata.gz: 7f456c2225b377db0d58df63d3207fce98a103d18501a0d30969fc75c243c094888ba667dfa109cfb1aef878243fa161a5e800dfe0941bfda7c98dd760bce8ee
7
+ data.tar.gz: e4eb9ce9cc707064a9318b0971971231ef9a42279b5f17d9038bb99d2e1d6ae9ec84eccd1b1e4d67486163eb86e817a24bddeeb756bf51376d30b9badf662585
@@ -0,0 +1,22 @@
1
+ Feature: SSH settings
2
+
3
+ Background:
4
+ Given a recipe with:
5
+ """
6
+ target 'some_host.example'
7
+
8
+ puts env.remote.user_name
9
+ """
10
+
11
+ Scenario: uses current user login name as SSH user name by default
12
+ When I successfully execute the recipe
13
+ Then the output must contain my current login name
14
+
15
+ Scenario: uses configured SSH user name for a given host
16
+ Given an SSH config with:
17
+ """
18
+ Host some_host.example
19
+ User some_user
20
+ """
21
+ When I successfully execute the recipe
22
+ Then the output must contain "some_user"
@@ -0,0 +1,5 @@
1
+ # FIXME: our monkey patch currently prevent us from using `must' in step
2
+ # definitions.
3
+ Then(/^the output should contain my current login name$/) do
4
+ assert_partial_output(Etc.getlogin, all_output)
5
+ end
@@ -0,0 +1,6 @@
1
+ # FIXME: current home directory shouldn't be changed here, maybe we should use
2
+ # a tag for features needing a fake home directory.
3
+ Given(/^an SSH config with:$/) do |config|
4
+ ENV['HOME'] = File.expand_path current_dir
5
+ write_file '.ssh/config', config
6
+ end
@@ -11,7 +11,15 @@ module Producer
11
11
  end
12
12
 
13
13
  def session
14
- @session ||= Net::SSH.start(@hostname, Etc.getlogin)
14
+ @session ||= Net::SSH.start(@hostname, user_name)
15
+ end
16
+
17
+ def config
18
+ @config ||= Net::SSH::Config.for(@hostname)
19
+ end
20
+
21
+ def user_name
22
+ config[:user] || Etc.getlogin
15
23
  end
16
24
 
17
25
  def fs
@@ -1,5 +1,5 @@
1
1
  module Producer
2
2
  module Core
3
- VERSION = '0.1.3'
3
+ VERSION = '0.1.4'
4
4
  end
5
5
  end
@@ -66,7 +66,7 @@ module Producer::Core
66
66
 
67
67
  context 'when querying the path raises a Net::SFTP::StatusException' do
68
68
  before do
69
- response = double('response', code: '42', message: '')
69
+ response = double('response', code: '42', message: 'some message')
70
70
  ex = Net::SFTP::StatusException.new(response)
71
71
  allow(stat).to receive(:file?).and_raise(ex)
72
72
  end
@@ -12,8 +12,8 @@ module Producer::Core
12
12
  end
13
13
 
14
14
  describe '#session' do
15
- it 'builds a new SSH session to the remote host' do
16
- expect(Net::SSH).to receive(:start).with(hostname, Etc.getlogin)
15
+ it 'builds a new SSH session to the remote host with #user_name' do
16
+ expect(Net::SSH).to receive(:start).with(hostname, remote.user_name)
17
17
  remote.session
18
18
  end
19
19
 
@@ -29,6 +29,44 @@ module Producer::Core
29
29
  end
30
30
  end
31
31
 
32
+ describe '#config' do
33
+ it 'builds a config for current host name' do
34
+ expect(Net::SSH::Config).to receive(:for).with(hostname)
35
+ remote.config
36
+ end
37
+
38
+ it 'returns the config' do
39
+ ssh_config = double('ssh config')
40
+ allow(Net::SSH::Config).to receive(:for) { ssh_config }
41
+ expect(remote.config).to be ssh_config
42
+ end
43
+
44
+ it 'memoizes the config' do
45
+ allow(Net::SSH::Config).to receive(:for) { Object.new }
46
+ expect(remote.config).to be remote.config
47
+ end
48
+ end
49
+
50
+ describe '#user_name' do
51
+ context 'ssh config has an entry for user' do
52
+ let(:config_user_name) { 'my_user_name' }
53
+
54
+ before do
55
+ allow(Net::SSH::Config).to receive(:for) { { user: config_user_name } }
56
+ end
57
+
58
+ it 'returns the configured value' do
59
+ expect(remote.user_name).to eq config_user_name
60
+ end
61
+ end
62
+
63
+ context 'ssh config has no entry for user' do
64
+ it 'returns the name of the user currently logged in' do
65
+ expect(remote.user_name).to eq Etc.getlogin
66
+ end
67
+ end
68
+ end
69
+
32
70
  describe '#fs' do
33
71
  it 'builds a new FS' do
34
72
  expect(Remote::FS).to receive(:new)
metadata CHANGED
@@ -1,122 +1,108 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: producer-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
5
- prerelease:
4
+ version: 0.1.4
6
5
  platform: ruby
7
6
  authors:
8
7
  - Thibault Jouan
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-09-26 00:00:00.000000000 Z
11
+ date: 2015-04-03 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: net-ssh
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: net-sftp
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - ">="
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - ">="
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: rspec
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - ">="
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - ">="
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: cucumber
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - ">="
68
60
  - !ruby/object:Gem::Version
69
61
  version: '0'
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - ">="
76
67
  - !ruby/object:Gem::Version
77
68
  version: '0'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: aruba
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - ">="
84
74
  - !ruby/object:Gem::Version
85
75
  version: '0'
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - ">="
92
81
  - !ruby/object:Gem::Version
93
82
  version: '0'
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: rake
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
- - - ! '>='
87
+ - - ">="
100
88
  - !ruby/object:Gem::Version
101
89
  version: '0'
102
90
  type: :development
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
- - - ! '>='
94
+ - - ">="
108
95
  - !ruby/object:Gem::Version
109
96
  version: '0'
110
- description: ! 'Software provisioning tool, including a DSL to write "recipes".
111
-
112
- '
97
+ description: |
98
+ Software provisioning tool, including a DSL to write "recipes".
113
99
  email: tj@a13.fr
114
100
  executables:
115
101
  - producer
116
102
  extensions: []
117
103
  extra_rdoc_files: []
118
104
  files:
119
- - .gitignore
105
+ - ".gitignore"
120
106
  - Gemfile
121
107
  - Guardfile
122
108
  - LICENSE
@@ -129,8 +115,11 @@ files:
129
115
  - features/recipes/evaluation.feature
130
116
  - features/recipes/source.feature
131
117
  - features/recipes/target.feature
118
+ - features/ssh/config.feature
119
+ - features/steps/etc_steps.rb
132
120
  - features/steps/recipe_steps.rb
133
121
  - features/steps/remote_steps.rb
122
+ - features/steps/ssh_steps.rb
134
123
  - features/support/env_aruba.rb
135
124
  - features/support/env_cucumber-doc_string.rb
136
125
  - features/support/ssh.rb
@@ -187,28 +176,27 @@ files:
187
176
  - spec/support/tests_helpers.rb
188
177
  homepage: https://rubygems.org/gems/producer-core
189
178
  licenses: []
179
+ metadata: {}
190
180
  post_install_message:
191
181
  rdoc_options: []
192
182
  require_paths:
193
183
  - lib
194
184
  required_ruby_version: !ruby/object:Gem::Requirement
195
- none: false
196
185
  requirements:
197
- - - ! '>='
186
+ - - ">="
198
187
  - !ruby/object:Gem::Version
199
188
  version: '0'
200
189
  required_rubygems_version: !ruby/object:Gem::Requirement
201
- none: false
202
190
  requirements:
203
- - - ! '>='
191
+ - - ">="
204
192
  - !ruby/object:Gem::Version
205
193
  version: '0'
206
194
  requirements: []
207
195
  rubyforge_project:
208
- rubygems_version: 1.8.23
196
+ rubygems_version: 2.4.5
209
197
  signing_key:
210
- specification_version: 3
211
- summary: producer-core-0.1.3
198
+ specification_version: 4
199
+ summary: producer-core-0.1.4
212
200
  test_files:
213
201
  - features/actions/echo.feature
214
202
  - features/actions/sh.feature
@@ -217,8 +205,11 @@ test_files:
217
205
  - features/recipes/evaluation.feature
218
206
  - features/recipes/source.feature
219
207
  - features/recipes/target.feature
208
+ - features/ssh/config.feature
209
+ - features/steps/etc_steps.rb
220
210
  - features/steps/recipe_steps.rb
221
211
  - features/steps/remote_steps.rb
212
+ - features/steps/ssh_steps.rb
222
213
  - features/support/env_aruba.rb
223
214
  - features/support/env_cucumber-doc_string.rb
224
215
  - features/support/ssh.rb