knife-windows 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +26 -26
  3. data/CHANGELOG.md +131 -121
  4. data/DOC_CHANGES.md +22 -14
  5. data/Gemfile +14 -13
  6. data/README.md +400 -392
  7. data/RELEASE_NOTES.md +2 -26
  8. data/appveyor.yml +39 -39
  9. data/ci.gemfile +16 -16
  10. data/knife-windows.gemspec +25 -25
  11. data/lib/chef/knife/bootstrap/windows-chef-client-msi.erb +246 -233
  12. data/lib/chef/knife/bootstrap_windows_base.rb +443 -454
  13. data/lib/chef/knife/bootstrap_windows_ssh.rb +116 -115
  14. data/lib/chef/knife/bootstrap_windows_winrm.rb +102 -95
  15. data/lib/chef/knife/core/windows_bootstrap_context.rb +378 -378
  16. data/lib/chef/knife/knife_windows_base.rb +33 -33
  17. data/lib/chef/knife/windows_cert_generate.rb +155 -155
  18. data/lib/chef/knife/windows_cert_install.rb +68 -68
  19. data/lib/chef/knife/windows_helper.rb +36 -36
  20. data/lib/chef/knife/windows_listener_create.rb +107 -107
  21. data/lib/chef/knife/winrm.rb +122 -122
  22. data/lib/chef/knife/winrm_base.rb +123 -117
  23. data/lib/chef/knife/winrm_knife_base.rb +306 -305
  24. data/lib/chef/knife/winrm_session.rb +97 -91
  25. data/lib/chef/knife/winrm_shared_options.rb +47 -47
  26. data/lib/chef/knife/wsman_endpoint.rb +44 -44
  27. data/lib/chef/knife/wsman_test.rb +118 -118
  28. data/lib/knife-windows/path_helper.rb +234 -234
  29. data/lib/knife-windows/version.rb +6 -6
  30. data/spec/assets/win_template_rendered_with_bootstrap_install_command.txt +223 -223
  31. data/spec/assets/win_template_rendered_with_bootstrap_install_command_on_12_5_client.txt +223 -223
  32. data/spec/assets/win_template_rendered_without_bootstrap_install_command.txt +335 -335
  33. data/spec/assets/win_template_rendered_without_bootstrap_install_command_on_12_5_client.txt +335 -335
  34. data/spec/dummy_winrm_connection.rb +21 -0
  35. data/spec/functional/bootstrap_download_spec.rb +236 -241
  36. data/spec/spec_helper.rb +94 -94
  37. data/spec/unit/knife/bootstrap_options_spec.rb +157 -155
  38. data/spec/unit/knife/bootstrap_template_spec.rb +98 -98
  39. data/spec/unit/knife/bootstrap_windows_winrm_spec.rb +423 -426
  40. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +177 -177
  41. data/spec/unit/knife/windows_cert_generate_spec.rb +90 -90
  42. data/spec/unit/knife/windows_cert_install_spec.rb +51 -51
  43. data/spec/unit/knife/windows_listener_create_spec.rb +76 -76
  44. data/spec/unit/knife/winrm_session_spec.rb +71 -76
  45. data/spec/unit/knife/winrm_spec.rb +500 -508
  46. data/spec/unit/knife/wsman_test_spec.rb +209 -209
  47. metadata +16 -17
  48. data/spec/dummy_winrm_service.rb +0 -24
@@ -1,209 +1,209 @@
1
- #
2
- # Author:: Steven Murawski (<smurawski@chef.io>)
3
- # Copyright:: Copyright (c) 2015-2016 Chef Software, Inc.
4
- # License:: Apache License, Version 2.0
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
-
19
- require 'spec_helper'
20
-
21
- describe Chef::Knife::WsmanTest do
22
- let(:http_client_mock) { HTTPClient.new }
23
- let(:ssl_policy) { double('DefaultSSLPolicy', :set_custom_certs => nil) }
24
-
25
- before(:all) do
26
- Chef::Config.reset
27
- end
28
-
29
- before(:each) do
30
- response_body = '<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"><s:Header/><s:Body><wsmid:IdentifyResponse xmlns:wsmid="http://schemas.dmtf.org/wbem/wsman/identity/1/wsmanidentity.xsd"><wsmid:ProtocolVersion>http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd</wsmid:ProtocolVersion><wsmid:ProductVendor>Microsoft Corporation</wsmid:ProductVendor><wsmid:ProductVersion>OS: 0.0.0 SP: 0.0 Stack: 2.0</wsmid:ProductVersion></wsmid:IdentifyResponse></s:Body></s:Envelope>'
31
- http_response_mock = HTTP::Message.new_response(response_body)
32
- allow(http_client_mock).to receive(:post).and_return(http_response_mock)
33
- allow(HTTPClient).to receive(:new).and_return(http_client_mock)
34
- subject.config[:verbosity] = 0
35
- allow(subject.ui).to receive(:ask).and_return('prompted_password')
36
- allow(Chef::HTTP::DefaultSSLPolicy).to receive(:new)
37
- .with(http_client_mock.ssl_config)
38
- .and_return(ssl_policy)
39
- end
40
-
41
- subject { Chef::Knife::WsmanTest.new(['-m', 'localhost']) }
42
-
43
- it 'sets the ssl policy' do
44
- expect(ssl_policy).to receive(:set_custom_certs).twice
45
- subject.run
46
- end
47
-
48
- context 'when testing the WSMAN endpoint' do
49
- context 'and the service responds' do
50
- context 'successfully' do
51
- it 'writes a message about a successful connection' do
52
- expect(subject.ui).to receive(:msg)
53
- subject.run
54
- end
55
- end
56
-
57
- context 'with an invalid body' do
58
- it 'warns for a failed connection and exit with a status of 1' do
59
- response_body = 'I am invalid'
60
- http_response_mock = HTTP::Message.new_response(response_body)
61
- allow(http_client_mock).to receive(:post).and_return(http_response_mock)
62
- expect(subject.ui).to receive(:warn)
63
- expect(subject.ui).to receive(:error)
64
- expect(subject).to receive(:exit).with(1)
65
- subject.run
66
- end
67
- end
68
-
69
- context 'with a non-200 code' do
70
- it 'warns for a failed connection and exits with a status of 1' do
71
- http_response_mock = HTTP::Message.new_response('<resp></resp>')
72
- http_response_mock.status = 404
73
- allow(http_client_mock).to receive(:post).and_return(http_response_mock)
74
- expect(subject.ui).to receive(:warn)
75
- expect(subject.ui).to receive(:error)
76
- expect(subject).to receive(:exit).with(1)
77
- subject.run
78
- end
79
- end
80
- end
81
-
82
- context 'and the service does not respond' do
83
- error_message = 'A connection attempt failed because the connected party did not properly respond after a period of time.'
84
-
85
- before(:each) do
86
- allow(http_client_mock).to receive(:post).and_raise(Exception.new(error_message))
87
- end
88
-
89
- it 'exits with a status code of 1' do
90
- expect(subject).to receive(:exit).with(1)
91
- subject.run
92
- end
93
-
94
- it 'writes a warning message for each node it fails to connect to' do
95
- expect(subject.ui).to receive(:warn)
96
- expect(subject).to receive(:exit).with(1)
97
- subject.run
98
- end
99
-
100
- it 'writes an error message if it fails to connect to any nodes' do
101
- expect(subject.ui).to receive(:error)
102
- expect(subject).to receive(:exit).with(1)
103
- subject.run
104
- end
105
- end
106
- end
107
-
108
- context 'when not validating ssl cert' do
109
- before(:each) do
110
- expect(subject.ui).to receive(:msg)
111
- subject.config[:winrm_ssl_verify_mode] = :verify_none
112
- subject.config[:winrm_transport] = :ssl
113
- end
114
-
115
- it 'sets verify_mode to verify_none' do
116
- subject.run
117
- expect(http_client_mock.ssl_config.verify_mode).to eq(OpenSSL::SSL::VERIFY_NONE)
118
- end
119
- end
120
-
121
- context 'when testing the WSMAN endpoint with verbose output' do
122
- before(:each) do
123
- subject.config[:verbosity] = 1
124
- end
125
-
126
- context 'and the service does not respond' do
127
- it 'returns an object with an error message' do
128
- error_message = 'A connection attempt failed because the connected party did not properly respond after a period of time.'
129
- allow(http_client_mock).to receive(:post).and_raise(Exception.new(error_message))
130
- expect(subject).to receive(:exit).with(1)
131
- expect(subject).to receive(:output) do |output|
132
- expect(output.error_message).to match(/#{error_message}/)
133
- end
134
- subject.run
135
- end
136
- end
137
-
138
- context 'with an invalid body' do
139
- it 'includes invalid body in error message' do
140
- response_body = 'I am invalid'
141
- http_response_mock = HTTP::Message.new_response(response_body)
142
- allow(http_client_mock).to receive(:post).and_return(http_response_mock)
143
- expect(subject).to receive(:exit).with(1)
144
- expect(subject).to receive(:output) do |output|
145
- expect(output.error_message).to match(/#{response_body}/)
146
- end
147
- subject.run
148
- end
149
- end
150
-
151
- context 'and the target node is Windows Server 2008 R2' do
152
- before(:each) do
153
- ws2008r2_response_body = '<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"><s:Header/><s:Body><wsmid:IdentifyResponse xmlns:wsmid="http://schemas.dmtf.org/wbem/wsman/identity/1/wsmanidentity.xsd"><wsmid:ProtocolVersion>http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd</wsmid:ProtocolVersion><wsmid:ProductVendor>Microsoft Corporation</wsmid:ProductVendor><wsmid:ProductVersion>OS: 0.0.0 SP: 0.0 Stack: 2.0</wsmid:ProductVersion></wsmid:IdentifyResponse></s:Body></s:Envelope>'
154
- http_response_mock = HTTP::Message.new_response(ws2008r2_response_body)
155
- allow(http_client_mock).to receive(:post).and_return(http_response_mock)
156
- end
157
-
158
- it 'identifies the stack of the product version as 2.0 ' do
159
- expect(subject).to receive(:output) do |output|
160
- expect(output.product_version).to eq 'OS: 0.0.0 SP: 0.0 Stack: 2.0'
161
- end
162
- subject.run
163
- end
164
-
165
- it 'identifies the protocol version as the current DMTF standard' do
166
- expect(subject).to receive(:output) do |output|
167
- expect(output.protocol_version).to eq 'http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd'
168
- end
169
- subject.run
170
- end
171
-
172
- it 'identifies the vendor as the Microsoft Corporation' do
173
- expect(subject).to receive(:output) do |output|
174
- expect(output.product_vendor).to eq 'Microsoft Corporation'
175
- end
176
- subject.run
177
- end
178
- end
179
-
180
- context 'and the target node is Windows Server 2012 R2' do
181
- before(:each) do
182
- ws2012_response_body = '<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"><s:Header/><s:Body><wsmid:IdentifyResponse xmlns:wsmid="http://schemas.dmtf.org/wbem/wsman/identity/1/wsmanidentity.xsd"><wsmid:ProtocolVersion>http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd</wsmid:ProtocolVersion><wsmid:ProductVendor>Microsoft Corporation</wsmid:ProductVendor><wsmid:ProductVersion>OS: 0.0.0 SP: 0.0 Stack: 3.0</wsmid:ProductVersion></wsmid:IdentifyResponse></s:Body></s:Envelope>'
183
- http_response_mock = HTTP::Message.new_response(ws2012_response_body)
184
- allow(http_client_mock).to receive(:post).and_return(http_response_mock)
185
- end
186
-
187
- it 'identifies the stack of the product version as 3.0 ' do
188
- expect(subject).to receive(:output) do |output|
189
- expect(output.product_version).to eq 'OS: 0.0.0 SP: 0.0 Stack: 3.0'
190
- end
191
- subject.run
192
- end
193
-
194
- it 'identifies the protocol version as the current DMTF standard' do
195
- expect(subject).to receive(:output) do |output|
196
- expect(output.protocol_version).to eq 'http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd'
197
- end
198
- subject.run
199
- end
200
-
201
- it 'identifies the vendor as the Microsoft Corporation' do
202
- expect(subject).to receive(:output) do |output|
203
- expect(output.product_vendor).to eq 'Microsoft Corporation'
204
- end
205
- subject.run
206
- end
207
- end
208
- end
209
- end
1
+ #
2
+ # Author:: Steven Murawski (<smurawski@chef.io>)
3
+ # Copyright:: Copyright (c) 2015-2016 Chef Software, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'spec_helper'
20
+
21
+ describe Chef::Knife::WsmanTest do
22
+ let(:http_client_mock) { HTTPClient.new }
23
+ let(:ssl_policy) { double('DefaultSSLPolicy', :set_custom_certs => nil) }
24
+
25
+ before(:all) do
26
+ Chef::Config.reset
27
+ end
28
+
29
+ before(:each) do
30
+ response_body = '<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"><s:Header/><s:Body><wsmid:IdentifyResponse xmlns:wsmid="http://schemas.dmtf.org/wbem/wsman/identity/1/wsmanidentity.xsd"><wsmid:ProtocolVersion>http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd</wsmid:ProtocolVersion><wsmid:ProductVendor>Microsoft Corporation</wsmid:ProductVendor><wsmid:ProductVersion>OS: 0.0.0 SP: 0.0 Stack: 2.0</wsmid:ProductVersion></wsmid:IdentifyResponse></s:Body></s:Envelope>'
31
+ http_response_mock = HTTP::Message.new_response(response_body)
32
+ allow(http_client_mock).to receive(:post).and_return(http_response_mock)
33
+ allow(HTTPClient).to receive(:new).and_return(http_client_mock)
34
+ subject.config[:verbosity] = 0
35
+ allow(subject.ui).to receive(:ask).and_return('prompted_password')
36
+ allow(Chef::HTTP::DefaultSSLPolicy).to receive(:new)
37
+ .with(http_client_mock.ssl_config)
38
+ .and_return(ssl_policy)
39
+ end
40
+
41
+ subject { Chef::Knife::WsmanTest.new(['-m', 'localhost']) }
42
+
43
+ it 'sets the ssl policy' do
44
+ expect(ssl_policy).to receive(:set_custom_certs).twice
45
+ subject.run
46
+ end
47
+
48
+ context 'when testing the WSMAN endpoint' do
49
+ context 'and the service responds' do
50
+ context 'successfully' do
51
+ it 'writes a message about a successful connection' do
52
+ expect(subject.ui).to receive(:msg)
53
+ subject.run
54
+ end
55
+ end
56
+
57
+ context 'with an invalid body' do
58
+ it 'warns for a failed connection and exit with a status of 1' do
59
+ response_body = 'I am invalid'
60
+ http_response_mock = HTTP::Message.new_response(response_body)
61
+ allow(http_client_mock).to receive(:post).and_return(http_response_mock)
62
+ expect(subject.ui).to receive(:warn)
63
+ expect(subject.ui).to receive(:error)
64
+ expect(subject).to receive(:exit).with(1)
65
+ subject.run
66
+ end
67
+ end
68
+
69
+ context 'with a non-200 code' do
70
+ it 'warns for a failed connection and exits with a status of 1' do
71
+ http_response_mock = HTTP::Message.new_response('<resp></resp>')
72
+ http_response_mock.status = 404
73
+ allow(http_client_mock).to receive(:post).and_return(http_response_mock)
74
+ expect(subject.ui).to receive(:warn)
75
+ expect(subject.ui).to receive(:error)
76
+ expect(subject).to receive(:exit).with(1)
77
+ subject.run
78
+ end
79
+ end
80
+ end
81
+
82
+ context 'and the service does not respond' do
83
+ error_message = 'A connection attempt failed because the connected party did not properly respond after a period of time.'
84
+
85
+ before(:each) do
86
+ allow(http_client_mock).to receive(:post).and_raise(Exception.new(error_message))
87
+ end
88
+
89
+ it 'exits with a status code of 1' do
90
+ expect(subject).to receive(:exit).with(1)
91
+ subject.run
92
+ end
93
+
94
+ it 'writes a warning message for each node it fails to connect to' do
95
+ expect(subject.ui).to receive(:warn)
96
+ expect(subject).to receive(:exit).with(1)
97
+ subject.run
98
+ end
99
+
100
+ it 'writes an error message if it fails to connect to any nodes' do
101
+ expect(subject.ui).to receive(:error)
102
+ expect(subject).to receive(:exit).with(1)
103
+ subject.run
104
+ end
105
+ end
106
+ end
107
+
108
+ context 'when not validating ssl cert' do
109
+ before(:each) do
110
+ expect(subject.ui).to receive(:msg)
111
+ subject.config[:winrm_ssl_verify_mode] = :verify_none
112
+ subject.config[:winrm_transport] = :ssl
113
+ end
114
+
115
+ it 'sets verify_mode to verify_none' do
116
+ subject.run
117
+ expect(http_client_mock.ssl_config.verify_mode).to eq(OpenSSL::SSL::VERIFY_NONE)
118
+ end
119
+ end
120
+
121
+ context 'when testing the WSMAN endpoint with verbose output' do
122
+ before(:each) do
123
+ subject.config[:verbosity] = 1
124
+ end
125
+
126
+ context 'and the service does not respond' do
127
+ it 'returns an object with an error message' do
128
+ error_message = 'A connection attempt failed because the connected party did not properly respond after a period of time.'
129
+ allow(http_client_mock).to receive(:post).and_raise(Exception.new(error_message))
130
+ expect(subject).to receive(:exit).with(1)
131
+ expect(subject).to receive(:output) do |output|
132
+ expect(output.error_message).to match(/#{error_message}/)
133
+ end
134
+ subject.run
135
+ end
136
+ end
137
+
138
+ context 'with an invalid body' do
139
+ it 'includes invalid body in error message' do
140
+ response_body = 'I am invalid'
141
+ http_response_mock = HTTP::Message.new_response(response_body)
142
+ allow(http_client_mock).to receive(:post).and_return(http_response_mock)
143
+ expect(subject).to receive(:exit).with(1)
144
+ expect(subject).to receive(:output) do |output|
145
+ expect(output.error_message).to match(/#{response_body}/)
146
+ end
147
+ subject.run
148
+ end
149
+ end
150
+
151
+ context 'and the target node is Windows Server 2008 R2' do
152
+ before(:each) do
153
+ ws2008r2_response_body = '<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"><s:Header/><s:Body><wsmid:IdentifyResponse xmlns:wsmid="http://schemas.dmtf.org/wbem/wsman/identity/1/wsmanidentity.xsd"><wsmid:ProtocolVersion>http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd</wsmid:ProtocolVersion><wsmid:ProductVendor>Microsoft Corporation</wsmid:ProductVendor><wsmid:ProductVersion>OS: 0.0.0 SP: 0.0 Stack: 2.0</wsmid:ProductVersion></wsmid:IdentifyResponse></s:Body></s:Envelope>'
154
+ http_response_mock = HTTP::Message.new_response(ws2008r2_response_body)
155
+ allow(http_client_mock).to receive(:post).and_return(http_response_mock)
156
+ end
157
+
158
+ it 'identifies the stack of the product version as 2.0 ' do
159
+ expect(subject).to receive(:output) do |output|
160
+ expect(output.product_version).to eq 'OS: 0.0.0 SP: 0.0 Stack: 2.0'
161
+ end
162
+ subject.run
163
+ end
164
+
165
+ it 'identifies the protocol version as the current DMTF standard' do
166
+ expect(subject).to receive(:output) do |output|
167
+ expect(output.protocol_version).to eq 'http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd'
168
+ end
169
+ subject.run
170
+ end
171
+
172
+ it 'identifies the vendor as the Microsoft Corporation' do
173
+ expect(subject).to receive(:output) do |output|
174
+ expect(output.product_vendor).to eq 'Microsoft Corporation'
175
+ end
176
+ subject.run
177
+ end
178
+ end
179
+
180
+ context 'and the target node is Windows Server 2012 R2' do
181
+ before(:each) do
182
+ ws2012_response_body = '<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"><s:Header/><s:Body><wsmid:IdentifyResponse xmlns:wsmid="http://schemas.dmtf.org/wbem/wsman/identity/1/wsmanidentity.xsd"><wsmid:ProtocolVersion>http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd</wsmid:ProtocolVersion><wsmid:ProductVendor>Microsoft Corporation</wsmid:ProductVendor><wsmid:ProductVersion>OS: 0.0.0 SP: 0.0 Stack: 3.0</wsmid:ProductVersion></wsmid:IdentifyResponse></s:Body></s:Envelope>'
183
+ http_response_mock = HTTP::Message.new_response(ws2012_response_body)
184
+ allow(http_client_mock).to receive(:post).and_return(http_response_mock)
185
+ end
186
+
187
+ it 'identifies the stack of the product version as 3.0 ' do
188
+ expect(subject).to receive(:output) do |output|
189
+ expect(output.product_version).to eq 'OS: 0.0.0 SP: 0.0 Stack: 3.0'
190
+ end
191
+ subject.run
192
+ end
193
+
194
+ it 'identifies the protocol version as the current DMTF standard' do
195
+ expect(subject).to receive(:output) do |output|
196
+ expect(output.protocol_version).to eq 'http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd'
197
+ end
198
+ subject.run
199
+ end
200
+
201
+ it 'identifies the vendor as the Microsoft Corporation' do
202
+ expect(subject).to receive(:output) do |output|
203
+ expect(output.product_vendor).to eq 'Microsoft Corporation'
204
+ end
205
+ subject.run
206
+ end
207
+ end
208
+ end
209
+ end
metadata CHANGED
@@ -1,41 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knife-windows
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Seth Chisamore
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-03 00:00:00.000000000 Z
11
+ date: 2016-09-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: winrm
14
+ name: winrm-elevated
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.7'
19
+ version: '1.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.7'
26
+ version: '1.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: pry
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  description: Plugin that adds functionality to Chef's Knife CLI for configuring/interacting
@@ -46,9 +46,9 @@ executables: []
46
46
  extensions: []
47
47
  extra_rdoc_files: []
48
48
  files:
49
- - .gitignore
50
- - .rspec
51
- - .travis.yml
49
+ - ".gitignore"
50
+ - ".rspec"
51
+ - ".travis.yml"
52
52
  - CHANGELOG.md
53
53
  - DOC_CHANGES.md
54
54
  - Gemfile
@@ -85,7 +85,7 @@ files:
85
85
  - spec/assets/win_template_rendered_without_bootstrap_install_command.txt
86
86
  - spec/assets/win_template_rendered_without_bootstrap_install_command_on_12_5_client.txt
87
87
  - spec/assets/win_template_unrendered.txt
88
- - spec/dummy_winrm_service.rb
88
+ - spec/dummy_winrm_connection.rb
89
89
  - spec/functional/bootstrap_download_spec.rb
90
90
  - spec/spec_helper.rb
91
91
  - spec/unit/knife/bootstrap_options_spec.rb
@@ -108,20 +108,19 @@ require_paths:
108
108
  - lib
109
109
  required_ruby_version: !ruby/object:Gem::Requirement
110
110
  requirements:
111
- - - '>='
111
+ - - ">="
112
112
  - !ruby/object:Gem::Version
113
113
  version: 1.9.1
114
114
  required_rubygems_version: !ruby/object:Gem::Requirement
115
115
  requirements:
116
- - - '>='
116
+ - - ">="
117
117
  - !ruby/object:Gem::Version
118
118
  version: '0'
119
119
  requirements: []
120
120
  rubyforge_project:
121
- rubygems_version: 2.0.14
121
+ rubygems_version: 2.6.6
122
122
  signing_key:
123
123
  specification_version: 4
124
124
  summary: Plugin that adds functionality to Chef's Knife CLI for configuring/interacting
125
125
  with nodes running Microsoft Windows
126
126
  test_files: []
127
- has_rdoc: