knife-windows 3.0.16 → 4.0.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5bf9ee2c613479ede8ca7162dc326889a69a3936c794d0f8898a014676aa7373
4
- data.tar.gz: 7bd86644459d72d726f04a05ebf5556681c7c9500d7265f462bf2faed021fcdf
3
+ metadata.gz: ac2b46b0151ca71c6c81e0d3596d931ae6b0f0d8854d62e042dea80124484eaf
4
+ data.tar.gz: 62ed4aea58642c7963c7538099e74ca9f37764c951c546eaedf15d544978143b
5
5
  SHA512:
6
- metadata.gz: c47e0e9ce82edda40813b9bb78756efa366df609e14fa2b8f35c08e122f1704882576e7edc9a7d82a151befeac2833f05b82f46172c2dae3323fdd9546f75c8c
7
- data.tar.gz: d57e52ac773a16fd50274ad0a39a5222fc0b1cea5cc5e3ff2b1b4cec26f49a4ac14b4b8fe72ff0daa53857b6dfb7b01a0fa67e706b77b4e4163f06cb799440b4
6
+ metadata.gz: e4401141da0bd90233bb91fbd73dfab433db23b932cdd344a9c33b65706813a01d907a2cca364a5a9ff792f118cf3590b2c9bb03ffab7c3b9882ee8801a829ae
7
+ data.tar.gz: 9bc68889c0fede227babb39ffc07858c65299837271bfc980a698d03a6b7d4da04d6a5edc6ba462d6bf7726a347327f5323cbbd820415a108dbdaf684f5f3326
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Seth Chisamore (<schisamo@chef.io>)
3
- # Copyright:: Copyright (c) 2011-2020 Chef Software, Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -42,13 +42,12 @@ class Chef
42
42
  short: "-p PORT",
43
43
  long: "--ssh-port PORT",
44
44
  description: "The ssh port",
45
- proc: Proc.new { |key| Chef::Config[:knife][:ssh_port] = key.strip }
45
+ proc: Proc.new { |key| key.strip }
46
46
 
47
47
  option :ssh_gateway,
48
48
  short: "-G GATEWAY",
49
49
  long: "--ssh-gateway GATEWAY",
50
- description: "The ssh gateway",
51
- proc: Proc.new { |key| Chef::Config[:knife][:ssh_gateway] = key }
50
+ description: "The ssh gateway"
52
51
 
53
52
  option :forward_agent,
54
53
  short: "-A",
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Seth Chisamore (<schisamo@chef.io>)
3
- # Copyright:: Copyright (c) 2011-2020 Chef Software, Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,15 +17,11 @@
17
17
  #
18
18
 
19
19
  require "chef/knife"
20
- require_relative "knife_windows_base"
21
20
  require "chef/util/path_helper"
22
21
 
23
22
  class Chef
24
23
  class Knife
25
24
  module BootstrapWindowsBase
26
-
27
- include Chef::Knife::KnifeWindowsBase
28
-
29
25
  # :nodoc:
30
26
  # Would prefer to do this in a rational way, but can't be done b/c of
31
27
  # Mixlib::CLI's design :(
@@ -43,23 +39,19 @@ class Chef
43
39
 
44
40
  option :bootstrap_version,
45
41
  long: "--bootstrap-version VERSION",
46
- description: "The version of Chef to install",
47
- proc: Proc.new { |v| Chef::Config[:knife][:bootstrap_version] = v }
42
+ description: "The version of Chef to install"
48
43
 
49
44
  option :bootstrap_proxy,
50
45
  long: "--bootstrap-proxy PROXY_URL",
51
- description: "The proxy server for the node being bootstrapped",
52
- proc: Proc.new { |p| Chef::Config[:knife][:bootstrap_proxy] = p }
46
+ description: "The proxy server for the node being bootstrapped"
53
47
 
54
48
  option :bootstrap_no_proxy,
55
49
  long: "--bootstrap-no-proxy [NO_PROXY_URL|NO_PROXY_IP]",
56
- description: "Do not proxy locations for the node being bootstrapped; this option is used internally by Opscode",
57
- proc: Proc.new { |np| Chef::Config[:knife][:bootstrap_no_proxy] = np }
50
+ description: "Do not proxy locations for the node being bootstrapped; this option is used internally by Opscode"
58
51
 
59
52
  option :bootstrap_install_command,
60
53
  long: "--bootstrap-install-command COMMANDS",
61
- description: "Custom command to install chef-client",
62
- proc: Proc.new { |ic| Chef::Config[:knife][:bootstrap_install_command] = ic }
54
+ description: "Custom command to install chef-client"
63
55
 
64
56
  option :bootstrap_template,
65
57
  short: "-t TEMPLATE",
@@ -76,10 +68,11 @@ class Chef
76
68
  option :hint,
77
69
  long: "--hint HINT_NAME[=HINT_FILE]",
78
70
  description: "Specify Ohai Hint to be set on the bootstrap target. Use multiple --hint options to specify multiple hints.",
79
- proc: Proc.new { |h|
80
- Chef::Config[:knife][:hints] ||= {}
71
+ proc: Proc.new { |h, accumulator|
72
+ accumulator ||= {}
81
73
  name, path = h.split("=")
82
- Chef::Config[:knife][:hints][name] = path ? Chef::JSONCompat.parse(::File.read(path)) : {}
74
+ accumulator[name] = path ? Chef::JSONCompat.parse(::File.read(path)) : {}
75
+ accumulator
83
76
  }
84
77
 
85
78
  option :first_boot_attributes,
@@ -151,12 +144,12 @@ class Chef
151
144
  option :bootstrap_vault_item,
152
145
  long: "--bootstrap-vault-item VAULT_ITEM",
153
146
  description: 'A single vault and item to update as "vault:item"',
154
- proc: Proc.new { |i|
147
+ proc: Proc.new { |i, accumulator|
155
148
  (vault, item) = i.split(/:/)
156
- Chef::Config[:knife][:bootstrap_vault_item] ||= {}
157
- Chef::Config[:knife][:bootstrap_vault_item][vault] ||= []
158
- Chef::Config[:knife][:bootstrap_vault_item][vault].push(item)
159
- Chef::Config[:knife][:bootstrap_vault_item]
149
+ accumulator ||= {}
150
+ accumulator[vault] ||= []
151
+ accumulator[vault].push(item)
152
+ accumulator
160
153
  }
161
154
 
162
155
  option :policy_name,
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Seth Chisamore (<schisamo@chef.io>)
3
- # Copyright:: Copyright (c) 2011-2016 Chef Software, Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -42,14 +42,12 @@ class Chef
42
42
  short: "-x USERNAME",
43
43
  long: "--winrm-user USERNAME",
44
44
  description: "The WinRM username",
45
- default: "Administrator",
46
- proc: Proc.new { |key| Chef::Config[:knife][:winrm_user] = key }
45
+ default: "Administrator"
47
46
 
48
47
  option :winrm_password,
49
48
  short: "-P PASSWORD",
50
49
  long: "--winrm-password PASSWORD",
51
- description: "The WinRM password",
52
- proc: Proc.new { |key| Chef::Config[:knife][:winrm_password] = key }
50
+ description: "The WinRM password"
53
51
 
54
52
  option :winrm_shell,
55
53
  long: "--winrm-shell SHELL",
@@ -61,42 +59,32 @@ class Chef
61
59
  short: "-w TRANSPORT",
62
60
  long: "--winrm-transport TRANSPORT",
63
61
  description: "The WinRM transport type. Valid choices are [ssl, plaintext]",
64
- default: "plaintext",
65
- proc: Proc.new { |transport|
66
- Chef::Config[:knife][:winrm_port] = "5986" if transport == "ssl"
67
- Chef::Config[:knife][:winrm_transport] = transport
68
- }
62
+ default: "plaintext"
69
63
 
70
64
  option :winrm_port,
71
65
  short: "-p PORT",
72
66
  long: "--winrm-port PORT",
73
- description: "The WinRM port, by default this is '5985' for 'plaintext' and '5986' for 'ssl' winrm transport",
74
- default: "5985",
75
- proc: Proc.new { |key| Chef::Config[:knife][:winrm_port] = key }
67
+ description: "The WinRM port, by default this is '5985' for 'plaintext' and '5986' for 'ssl' winrm transport"
76
68
 
77
69
  option :kerberos_keytab_file,
78
70
  short: "-T KEYTAB_FILE",
79
71
  long: "--keytab-file KEYTAB_FILE",
80
- description: "The Kerberos keytab file used for authentication",
81
- proc: Proc.new { |keytab| Chef::Config[:knife][:kerberos_keytab_file] = keytab }
72
+ description: "The Kerberos keytab file used for authentication"
82
73
 
83
74
  option :kerberos_realm,
84
75
  short: "-R KERBEROS_REALM",
85
76
  long: "--kerberos-realm KERBEROS_REALM",
86
- description: "The Kerberos realm used for authentication",
87
- proc: Proc.new { |realm| Chef::Config[:knife][:kerberos_realm] = realm }
77
+ description: "The Kerberos realm used for authentication"
88
78
 
89
79
  option :kerberos_service,
90
80
  short: "-S KERBEROS_SERVICE",
91
81
  long: "--kerberos-service KERBEROS_SERVICE",
92
- description: "The Kerberos service used for authentication",
93
- proc: Proc.new { |service| Chef::Config[:knife][:kerberos_service] = service }
82
+ description: "The Kerberos service used for authentication"
94
83
 
95
84
  option :ca_trust_file,
96
85
  short: "-f CA_TRUST_FILE",
97
86
  long: "--ca-trust-file CA_TRUST_FILE",
98
- description: "The Certificate Authority (CA) trust file used for SSL transport",
99
- proc: Proc.new { |trust| Chef::Config[:knife][:ca_trust_file] = trust }
87
+ description: "The Certificate Authority (CA) trust file used for SSL transport"
100
88
 
101
89
  option :winrm_ssl_verify_mode,
102
90
  long: "--winrm-ssl-verify-mode SSL_VERIFY_MODE",
@@ -111,8 +99,7 @@ class Chef
111
99
  option :winrm_authentication_protocol,
112
100
  long: "--winrm-authentication-protocol AUTHENTICATION_PROTOCOL",
113
101
  description: "The authentication protocol used during WinRM communication. The supported protocols are #{WINRM_AUTH_PROTOCOL_LIST.join(",")}. Default is 'negotiate'.",
114
- default: "negotiate",
115
- proc: Proc.new { |protocol| Chef::Config[:knife][:winrm_authentication_protocol] = protocol }
102
+ default: "negotiate"
116
103
 
117
104
  option :session_timeout,
118
105
  long: "--session-timeout Minutes",
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Steven Murawski (<smurawski@chef.io)
3
- # Copyright:: Copyright (c) 2015-2016 Chef Software, Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,7 @@
19
19
  require "chef/knife"
20
20
  require_relative "winrm_base"
21
21
  require_relative "winrm_shared_options"
22
- require_relative "knife_windows_base"
22
+ require_relative "winrm_session"
23
23
 
24
24
  class Chef
25
25
  class Knife
@@ -39,10 +39,9 @@ class Chef
39
39
 
40
40
  include Chef::Knife::WinrmBase
41
41
  include Chef::Knife::WinrmSharedOptions
42
- include Chef::Knife::KnifeWindowsBase
43
42
 
44
43
  def validate_winrm_options!
45
- winrm_auth_protocol = locate_config_value(:winrm_authentication_protocol)
44
+ winrm_auth_protocol = config[:winrm_authentication_protocol]
46
45
 
47
46
  unless Chef::Knife::WinrmBase::WINRM_AUTH_PROTOCOL_LIST.include?(winrm_auth_protocol)
48
47
  ui.error "Invalid value '#{winrm_auth_protocol}' for --winrm-authentication-protocol option."
@@ -120,7 +119,7 @@ class Chef
120
119
  @session_results = []
121
120
  queue = Queue.new
122
121
  @winrm_sessions.each { |s| queue << s }
123
- num_sessions = locate_config_value(:concurrency)
122
+ num_sessions = config[:concurrency]
124
123
  num_targets = @winrm_sessions.length
125
124
  num_sessions = (num_sessions.nil? || num_sessions == 0) ? num_targets : [num_sessions, num_targets].min
126
125
 
@@ -146,7 +145,7 @@ class Chef
146
145
  if authorization_error?(e)
147
146
  unless config[:suppress_auth_failure]
148
147
  # Display errors if the caller hasn't opted to retry
149
- ui.error "Failed to authenticate to #{s.host} as #{locate_config_value(:winrm_user)}"
148
+ ui.error "Failed to authenticate to #{s.host} as #{config[:winrm_user]}"
150
149
  ui.info "Response: #{e.message}"
151
150
  ui.info get_failed_authentication_hint
152
151
  raise e
@@ -202,33 +201,35 @@ class Chef
202
201
  end
203
202
 
204
203
  def resolve_session_options
204
+ config[:winrm_port] ||= ( config[:winrm_transport] == "ssl" ) ? "5986" : "5985"
205
+
205
206
  @session_opts = {
206
207
  user: resolve_winrm_user,
207
- password: locate_config_value(:winrm_password),
208
- port: locate_config_value(:winrm_port),
208
+ password: config[:winrm_password],
209
+ port: config[:winrm_port],
209
210
  operation_timeout: resolve_winrm_session_timeout,
210
211
  basic_auth_only: resolve_winrm_basic_auth,
211
212
  disable_sspi: resolve_winrm_disable_sspi,
212
213
  transport: resolve_winrm_transport,
213
214
  no_ssl_peer_verification: resolve_no_ssl_peer_verification,
214
215
  ssl_peer_fingerprint: resolve_ssl_peer_fingerprint,
215
- shell: locate_config_value(:winrm_shell),
216
- codepage: locate_config_value(:winrm_codepage),
216
+ shell: config[:winrm_shell],
217
+ codepage: config[:winrm_codepage],
217
218
  }
218
219
 
219
220
  if @session_opts[:user] && (not @session_opts[:password])
220
- @session_opts[:password] = Chef::Config[:knife][:winrm_password] = config[:winrm_password] = get_password
221
+ @session_opts[:password] = config[:winrm_password] = get_password
221
222
  end
222
223
 
223
224
  if @session_opts[:transport] == :kerberos
224
225
  @session_opts.merge!(resolve_winrm_kerberos_options)
225
226
  end
226
227
 
227
- @session_opts[:ca_trust_path] = locate_config_value(:ca_trust_file) if locate_config_value(:ca_trust_file)
228
+ @session_opts[:ca_trust_path] = config[:ca_trust_file] if config[:ca_trust_file]
228
229
  end
229
230
 
230
231
  def resolve_winrm_user
231
- user = locate_config_value(:winrm_user)
232
+ user = config[:winrm_user]
232
233
 
233
234
  # Prefixing with '.\' when using negotiate
234
235
  # to auth user against local machine domain
@@ -244,23 +245,23 @@ class Chef
244
245
 
245
246
  def resolve_winrm_session_timeout
246
247
  # 30 min (Default) OperationTimeout for long bootstraps fix for KNIFE_WINDOWS-8
247
- locate_config_value(:session_timeout).to_i * 60 if locate_config_value(:session_timeout)
248
+ config[:session_timeout].to_i * 60 if config[:session_timeout]
248
249
  end
249
250
 
250
251
  def resolve_winrm_basic_auth
251
- locate_config_value(:winrm_authentication_protocol) == "basic"
252
+ config[:winrm_authentication_protocol] == "basic"
252
253
  end
253
254
 
254
255
  def resolve_winrm_kerberos_options
255
256
  kerberos_opts = {}
256
- kerberos_opts[:keytab] = locate_config_value(:kerberos_keytab_file) if locate_config_value(:kerberos_keytab_file)
257
- kerberos_opts[:realm] = locate_config_value(:kerberos_realm) if locate_config_value(:kerberos_realm)
258
- kerberos_opts[:service] = locate_config_value(:kerberos_service) if locate_config_value(:kerberos_service)
257
+ kerberos_opts[:keytab] = config[:kerberos_keytab_file] if config[:kerberos_keytab_file]
258
+ kerberos_opts[:realm] = config[:kerberos_realm] if config[:kerberos_realm]
259
+ kerberos_opts[:service] = config[:kerberos_service] if config[:kerberos_service]
259
260
  kerberos_opts
260
261
  end
261
262
 
262
263
  def resolve_winrm_transport
263
- transport = locate_config_value(:winrm_transport).to_sym
264
+ transport = config[:winrm_transport].to_sym
264
265
  if config.any? { |k, v| k.to_s =~ /kerberos/ && !v.nil? }
265
266
  transport = :kerberos
266
267
  elsif transport != :ssl && negotiate_auth?
@@ -271,11 +272,11 @@ class Chef
271
272
  end
272
273
 
273
274
  def resolve_no_ssl_peer_verification
274
- locate_config_value(:ca_trust_file).nil? && config[:winrm_ssl_verify_mode] == :verify_none && resolve_winrm_transport == :ssl
275
+ config[:ca_trust_file].nil? && config[:winrm_ssl_verify_mode] == :verify_none && resolve_winrm_transport == :ssl
275
276
  end
276
277
 
277
278
  def resolve_ssl_peer_fingerprint
278
- locate_config_value(:ssl_peer_fingerprint)
279
+ config[:ssl_peer_fingerprint]
279
280
  end
280
281
 
281
282
  def resolve_winrm_disable_sspi
@@ -287,7 +288,7 @@ class Chef
287
288
  end
288
289
 
289
290
  def negotiate_auth?
290
- locate_config_value(:winrm_authentication_protocol) == "negotiate"
291
+ config[:winrm_authentication_protocol] == "negotiate"
291
292
  end
292
293
 
293
294
  def warn_no_ssl_peer_verification
@@ -27,8 +27,8 @@ class Chef
27
27
  banner "knife windows cert generate FILE_PATH (options)"
28
28
 
29
29
  deps do
30
- require "openssl"
31
- require "socket"
30
+ require "openssl" unless defined?(OpenSSL)
31
+ require "socket" unless defined?(Socket)
32
32
  end
33
33
 
34
34
  option :hostname,
@@ -98,7 +98,7 @@ class Chef
98
98
  cert.add_extension(ef.create_extension("subjectKeyIdentifier", "hash", false))
99
99
  cert.add_extension(ef.create_extension("authorityKeyIdentifier", "keyid:always", false))
100
100
  cert.add_extension(ef.create_extension("extendedKeyUsage", "1.3.6.1.5.5.7.3.1", false))
101
- cert.sign(rsa_key, OpenSSL::Digest::SHA1.new)
101
+ cert.sign(rsa_key, OpenSSL::Digest.new("SHA1"))
102
102
  @thumbprint = OpenSSL::Digest::SHA1.new(cert.to_der)
103
103
  cert
104
104
  end
@@ -22,7 +22,7 @@ class Chef
22
22
  class Knife
23
23
  class WindowsListenerCreate < Knife
24
24
  deps do
25
- require "openssl"
25
+ require "openssl" unless defined?(OpenSSL)
26
26
  end
27
27
 
28
28
  banner "knife windows listener create (options)"
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Seth Chisamore (<schisamo@chef.io>)
3
- # Copyright:: Copyright (c) 2011-2016 Chef Software, Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -18,14 +18,12 @@
18
18
 
19
19
  require "chef/knife"
20
20
  require_relative "helpers/winrm_knife_base" # WinrmCommandSharedFunctions
21
- require_relative "helpers/knife_windows_base"
22
21
 
23
22
  class Chef
24
23
  class Knife
25
24
  class Winrm < Knife
26
25
 
27
26
  include Chef::Knife::WinrmCommandSharedFunctions
28
- include Chef::Knife::KnifeWindowsBase
29
27
 
30
28
  deps do
31
29
  require_relative "windows_cert_generate"
@@ -1,6 +1,6 @@
1
1
  module Knife
2
2
  module Windows
3
- VERSION = "3.0.16".freeze
3
+ VERSION = "4.0.5".freeze
4
4
  MAJOR, MINOR, TINY = VERSION.split(".")
5
5
  end
6
6
  end
@@ -1,6 +1,6 @@
1
1
 
2
2
  # Author:: Adam Edwards (<adamed@chef.io>)
3
- # Copyright:: Copyright (c) 2012-2020 Chef Software, Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -22,7 +22,22 @@ def sample_data(file_name)
22
22
  File.read(file)
23
23
  end
24
24
 
25
+ class UnexpectedSystemExit < RuntimeError
26
+ def self.from(system_exit)
27
+ new(system_exit.message).tap { |e| e.set_backtrace(system_exit.backtrace) }
28
+ end
29
+ end
30
+
25
31
  RSpec.configure do |config|
32
+ config.raise_on_warning = true
33
+ config.raise_errors_for_deprecations!
26
34
  config.run_all_when_everything_filtered = true
27
35
  config.filter_run focus: true
36
+ config.around(:example) do |ex|
37
+ begin
38
+ ex.run
39
+ rescue SystemExit => e
40
+ raise UnexpectedSystemExit.from(e)
41
+ end
42
+ end
28
43
  end
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Bryan McLellan <btm@chef.io>
3
- # Copyright:: Copyright (c) 2013-2016 Chef Software, Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -250,7 +250,7 @@ describe Chef::Knife::Winrm do
250
250
  end
251
251
 
252
252
  it "sets the user specified winrm port" do
253
- Chef::Config[:knife] = { winrm_port: "5988" }
253
+ winrm_command_http.config[:knife] = { winrm_port: "5988" }
254
254
  expect(Chef::Knife::WinrmSession).to receive(:new).with(hash_including(transport: :plaintext)).and_call_original
255
255
  expect(WinRM::Connection).to receive(:new).with(hash_including(transport: :plaintext)).and_return(winrm_connection)
256
256
  winrm_command_http.configure_chef
@@ -269,7 +269,7 @@ describe Chef::Knife::Winrm do
269
269
  let(:winrm_command_https) { Chef::Knife::Winrm.new(["-m", "localhost", "-x", "testuser", "-P", "testpassword", "--winrm-transport", "ssl", "echo helloworld"]) }
270
270
 
271
271
  it "uses the https uri scheme if the ssl transport is specified" do
272
- Chef::Config[:knife] = { winrm_transport: "ssl" }
272
+ winrm_command_http.config[:winrm_transport] = "ssl"
273
273
  expect(Chef::Knife::WinrmSession).to receive(:new).with(hash_including(transport: :ssl)).and_call_original
274
274
  expect(WinRM::Connection).to receive(:new).with(hash_including(endpoint: "https://localhost:5986/wsman")).and_return(winrm_connection)
275
275
  winrm_command_https.configure_chef
@@ -277,7 +277,7 @@ describe Chef::Knife::Winrm do
277
277
  end
278
278
 
279
279
  it "uses the winrm port '5986' by default for ssl transport" do
280
- Chef::Config[:knife] = { winrm_transport: "ssl" }
280
+ winrm_command_http.config[:winrm_transport] = "ssl"
281
281
  expect(Chef::Knife::WinrmSession).to receive(:new).with(hash_including(transport: :ssl)).and_call_original
282
282
  expect(WinRM::Connection).to receive(:new).with(hash_including(endpoint: "https://localhost:5986/wsman")).and_return(winrm_connection)
283
283
  winrm_command_https.configure_chef
@@ -361,8 +361,8 @@ describe Chef::Knife::Winrm do
361
361
 
362
362
  before(:each) do
363
363
  allow(Chef::Knife::WinrmSession).to receive(:new).and_return(session)
364
- Chef::Config[:knife] = { winrm_transport: "plaintext" }
365
364
  @winrm = Chef::Knife::Winrm.new(["-m", "localhost", "-x", "testuser", "-P", "testpassword", "--winrm-authentication-protocol", "basic", "echo helloworld"])
365
+ @winrm.config[:winrm_transport] = "plaintext"
366
366
  end
367
367
 
368
368
  it "returns with 0 if the command succeeds" do
@@ -375,7 +375,6 @@ describe Chef::Knife::Winrm do
375
375
  command_status = 510
376
376
 
377
377
  @winrm.config[:returns] = "0"
378
- Chef::Config[:knife][:returns] = [0]
379
378
 
380
379
  allow(@winrm).to receive(:relay_winrm_command)
381
380
  allow(@winrm.ui).to receive(:error)
@@ -386,7 +385,6 @@ describe Chef::Knife::Winrm do
386
385
  it "exits with non-zero status if the command fails and returns config is set to 0" do
387
386
  command_status = 1
388
387
  @winrm.config[:returns] = "0,53"
389
- Chef::Config[:knife][:returns] = [0, 53]
390
388
  allow(@winrm).to receive(:relay_winrm_command).and_return(command_status)
391
389
  allow(@winrm.ui).to receive(:error)
392
390
  allow(session).to receive(:exit_code).and_return(command_status)
@@ -395,7 +393,7 @@ describe Chef::Knife::Winrm do
395
393
 
396
394
  it "exits with a zero status if the command returns an expected non-zero status" do
397
395
  command_status = 53
398
- Chef::Config[:knife][:returns] = [0, 53]
396
+ @winrm.config[:returns] = "0,53"
399
397
  allow(@winrm).to receive(:relay_winrm_command).and_return(command_status)
400
398
  allow(session).to receive(:exit_codes).and_return({ "thishost" => command_status })
401
399
  exit_code = @winrm.run
@@ -448,7 +446,7 @@ describe Chef::Knife::Winrm do
448
446
 
449
447
  context "when winrm_authentication_protocol specified" do
450
448
  before do
451
- Chef::Config[:knife] = { winrm_transport: "plaintext" }
449
+ @winrm.config[:winrm_transport] = "plaintext"
452
450
  allow(@winrm).to receive(:relay_winrm_command).and_return(0)
453
451
  end
454
452