winrm 1.7.3 → 1.8.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 (51) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +10 -10
  3. data/.rspec +3 -3
  4. data/.travis.yml +12 -12
  5. data/Gemfile +9 -9
  6. data/LICENSE +202 -202
  7. data/README.md +213 -194
  8. data/Rakefile +36 -36
  9. data/Vagrantfile +9 -9
  10. data/WinrmAppveyor.psm1 +32 -0
  11. data/appveyor.yml +51 -42
  12. data/bin/rwinrm +97 -97
  13. data/changelog.md +3 -0
  14. data/lib/winrm.rb +42 -42
  15. data/lib/winrm/command_executor.rb +6 -2
  16. data/lib/winrm/command_output_decoder.rb +53 -53
  17. data/lib/winrm/exceptions/exceptions.rb +57 -57
  18. data/lib/winrm/helpers/iso8601_duration.rb +58 -58
  19. data/lib/winrm/helpers/powershell_script.rb +42 -42
  20. data/lib/winrm/http/response_handler.rb +82 -82
  21. data/lib/winrm/http/transport.rb +17 -0
  22. data/lib/winrm/output.rb +43 -43
  23. data/lib/winrm/soap_provider.rb +39 -39
  24. data/lib/winrm/version.rb +1 -1
  25. data/lib/winrm/winrm_service.rb +550 -547
  26. data/preamble +17 -17
  27. data/spec/auth_timeout_spec.rb +16 -16
  28. data/spec/cmd_spec.rb +102 -102
  29. data/spec/command_executor_spec.rb +27 -10
  30. data/spec/command_output_decoder_spec.rb +37 -37
  31. data/spec/config-example.yml +19 -19
  32. data/spec/exception_spec.rb +50 -50
  33. data/spec/issue_184_spec.rb +67 -67
  34. data/spec/issue_59_spec.rb +23 -23
  35. data/spec/matchers.rb +74 -74
  36. data/spec/output_spec.rb +110 -110
  37. data/spec/powershell_spec.rb +97 -97
  38. data/spec/response_handler_spec.rb +59 -59
  39. data/spec/spec_helper.rb +73 -73
  40. data/spec/stubs/responses/get_command_output_response.xml.erb +13 -13
  41. data/spec/stubs/responses/open_shell_v1.xml +19 -19
  42. data/spec/stubs/responses/open_shell_v2.xml +20 -20
  43. data/spec/stubs/responses/soap_fault_v1.xml +36 -36
  44. data/spec/stubs/responses/soap_fault_v2.xml +42 -42
  45. data/spec/stubs/responses/wmi_error_v2.xml +41 -41
  46. data/spec/transport_spec.rb +139 -124
  47. data/spec/winrm_options_spec.rb +76 -76
  48. data/spec/winrm_primitives_spec.rb +51 -51
  49. data/spec/wql_spec.rb +14 -14
  50. data/winrm.gemspec +40 -40
  51. metadata +4 -3
@@ -1,76 +1,76 @@
1
- # encoding: UTF-8
2
- describe 'WinRM options', unit: true do
3
- let(:subject) { WinRM::WinRMWebService.new('http://localhost:55985/wsman', :plaintext) }
4
-
5
- context 'when operations timeout is set to 60' do
6
- before(:each) { subject.set_timeout(60) }
7
- describe '#receive_timeout' do
8
- it 'is set to 70s' do
9
- transportclass = subject.instance_variable_get(:@xfer)
10
- expect(transportclass.receive_timeout).to eql(70)
11
- end
12
- end
13
- describe '#op_timeout' do
14
- it 'is set to 60s' do
15
- expect(subject.timeout).to eql('PT60S')
16
- end
17
- end
18
- end
19
-
20
- context 'when operations timeout is set to 30 and receive timeout is set to 120' do
21
- before(:each) { subject.set_timeout(30, 120) }
22
- describe '#receive_timeout' do
23
- it 'is set to 120s' do
24
- transportclass = subject.instance_variable_get(:@xfer)
25
- expect(transportclass.receive_timeout).to eql(120)
26
- end
27
- end
28
- describe '#op_timeout' do
29
- it 'is set to 30s' do
30
- expect(subject.timeout).to eql('PT30S')
31
- end
32
- end
33
- end
34
-
35
- context 'when max_env_size is set to 614400' do
36
- before(:each) { subject.max_env_size(614_400) }
37
- describe '@max_env_sz' do
38
- it 'is set to 614400' do
39
- expect(subject.instance_variable_get('@max_env_sz')).to eq(614_400)
40
- end
41
- end
42
- end
43
-
44
- context 'when locale is set to en-CA' do
45
- before(:each) { subject.locale('en-CA') }
46
- describe '@locale' do
47
- it 'is set to en-CA' do
48
- expect(subject.instance_variable_get('@locale')).to eq('en-CA')
49
- end
50
- end
51
- end
52
-
53
- context 'default' do
54
- describe '#receive_timeout' do
55
- it 'should be 3600ms' do
56
- transportclass = subject.instance_variable_get(:@xfer)
57
- expect(transportclass.receive_timeout).to eql(3600)
58
- end
59
- end
60
- describe '#timeout' do
61
- it 'should be 60s' do
62
- expect(subject.timeout).to eql('PT60S')
63
- end
64
- end
65
- describe '@locale' do
66
- it 'should be en-US' do
67
- expect(subject.instance_variable_get('@locale')).to eq('en-US')
68
- end
69
- end
70
- describe '@max_env_sz' do
71
- it 'should be 153600' do
72
- expect(subject.instance_variable_get('@max_env_sz')).to eq(153_600)
73
- end
74
- end
75
- end
76
- end
1
+ # encoding: UTF-8
2
+ describe 'WinRM options', unit: true do
3
+ let(:subject) { WinRM::WinRMWebService.new('http://localhost:55985/wsman', :plaintext) }
4
+
5
+ context 'when operations timeout is set to 60' do
6
+ before(:each) { subject.set_timeout(60) }
7
+ describe '#receive_timeout' do
8
+ it 'is set to 70s' do
9
+ transportclass = subject.instance_variable_get(:@xfer)
10
+ expect(transportclass.receive_timeout).to eql(70)
11
+ end
12
+ end
13
+ describe '#op_timeout' do
14
+ it 'is set to 60s' do
15
+ expect(subject.timeout).to eql('PT60S')
16
+ end
17
+ end
18
+ end
19
+
20
+ context 'when operations timeout is set to 30 and receive timeout is set to 120' do
21
+ before(:each) { subject.set_timeout(30, 120) }
22
+ describe '#receive_timeout' do
23
+ it 'is set to 120s' do
24
+ transportclass = subject.instance_variable_get(:@xfer)
25
+ expect(transportclass.receive_timeout).to eql(120)
26
+ end
27
+ end
28
+ describe '#op_timeout' do
29
+ it 'is set to 30s' do
30
+ expect(subject.timeout).to eql('PT30S')
31
+ end
32
+ end
33
+ end
34
+
35
+ context 'when max_env_size is set to 614400' do
36
+ before(:each) { subject.max_env_size(614_400) }
37
+ describe '@max_env_sz' do
38
+ it 'is set to 614400' do
39
+ expect(subject.instance_variable_get('@max_env_sz')).to eq(614_400)
40
+ end
41
+ end
42
+ end
43
+
44
+ context 'when locale is set to en-CA' do
45
+ before(:each) { subject.locale('en-CA') }
46
+ describe '@locale' do
47
+ it 'is set to en-CA' do
48
+ expect(subject.instance_variable_get('@locale')).to eq('en-CA')
49
+ end
50
+ end
51
+ end
52
+
53
+ context 'default' do
54
+ describe '#receive_timeout' do
55
+ it 'should be 3600ms' do
56
+ transportclass = subject.instance_variable_get(:@xfer)
57
+ expect(transportclass.receive_timeout).to eql(3600)
58
+ end
59
+ end
60
+ describe '#timeout' do
61
+ it 'should be 60s' do
62
+ expect(subject.timeout).to eql('PT60S')
63
+ end
64
+ end
65
+ describe '@locale' do
66
+ it 'should be en-US' do
67
+ expect(subject.instance_variable_get('@locale')).to eq('en-US')
68
+ end
69
+ end
70
+ describe '@max_env_sz' do
71
+ it 'should be 153600' do
72
+ expect(subject.instance_variable_get('@max_env_sz')).to eq(153_600)
73
+ end
74
+ end
75
+ end
76
+ end
@@ -1,51 +1,51 @@
1
- # encoding: UTF-8
2
- describe 'winrm client primitives' do
3
- before(:all) do
4
- @winrm = winrm_connection
5
- end
6
-
7
- describe 'open and close shell', integration: true do
8
- it 'should #open_shell and #close_shell' do
9
- sid = @winrm.open_shell
10
- expect(sid).to be_a_uid
11
- expect(@winrm.close_shell(sid)).to be true
12
- end
13
-
14
- it 'should #run_command and #cleanup_command' do
15
- sid = @winrm.open_shell
16
-
17
- cmd_id = @winrm.run_command(sid, 'ipconfig', %w(/all))
18
- expect(sid).to be_a_uid
19
-
20
- expect(@winrm.cleanup_command(sid, cmd_id)).to be true
21
- @winrm.close_shell(sid)
22
- end
23
-
24
- it 'should #get_command_output' do
25
- sid = @winrm.open_shell
26
- cmd_id = @winrm.run_command(sid, 'ipconfig', %w(/all))
27
-
28
- output = @winrm.get_command_output(sid, cmd_id)
29
- expect(output).to have_exit_code 0
30
- expect(output).to have_stdout_match(/.+/)
31
- expect(output).to have_no_stderr
32
-
33
- @winrm.cleanup_command(sid, cmd_id)
34
- @winrm.close_shell(sid)
35
- end
36
-
37
- it 'should #get_command_output with a block' do
38
- sid = @winrm.open_shell
39
- cmd_id = @winrm.run_command(sid, 'ipconfig', %w(/all))
40
-
41
- outvar = ''
42
- @winrm.get_command_output(sid, cmd_id) do |stdout, _stderr|
43
- outvar << stdout
44
- end
45
- expect(outvar).to match(/Windows IP Configuration/)
46
-
47
- @winrm.cleanup_command(sid, cmd_id)
48
- @winrm.close_shell(sid)
49
- end
50
- end
51
- end
1
+ # encoding: UTF-8
2
+ describe 'winrm client primitives' do
3
+ before(:all) do
4
+ @winrm = winrm_connection
5
+ end
6
+
7
+ describe 'open and close shell', integration: true do
8
+ it 'should #open_shell and #close_shell' do
9
+ sid = @winrm.open_shell
10
+ expect(sid).to be_a_uid
11
+ expect(@winrm.close_shell(sid)).to be true
12
+ end
13
+
14
+ it 'should #run_command and #cleanup_command' do
15
+ sid = @winrm.open_shell
16
+
17
+ cmd_id = @winrm.run_command(sid, 'ipconfig', %w(/all))
18
+ expect(sid).to be_a_uid
19
+
20
+ expect(@winrm.cleanup_command(sid, cmd_id)).to be true
21
+ @winrm.close_shell(sid)
22
+ end
23
+
24
+ it 'should #get_command_output' do
25
+ sid = @winrm.open_shell
26
+ cmd_id = @winrm.run_command(sid, 'ipconfig', %w(/all))
27
+
28
+ output = @winrm.get_command_output(sid, cmd_id)
29
+ expect(output).to have_exit_code 0
30
+ expect(output).to have_stdout_match(/.+/)
31
+ expect(output).to have_no_stderr
32
+
33
+ @winrm.cleanup_command(sid, cmd_id)
34
+ @winrm.close_shell(sid)
35
+ end
36
+
37
+ it 'should #get_command_output with a block' do
38
+ sid = @winrm.open_shell
39
+ cmd_id = @winrm.run_command(sid, 'ipconfig', %w(/all))
40
+
41
+ outvar = ''
42
+ @winrm.get_command_output(sid, cmd_id) do |stdout, _stderr|
43
+ outvar << stdout
44
+ end
45
+ expect(outvar).to match(/Windows IP Configuration/)
46
+
47
+ @winrm.cleanup_command(sid, cmd_id)
48
+ @winrm.close_shell(sid)
49
+ end
50
+ end
51
+ end
@@ -1,14 +1,14 @@
1
- # encoding: UTF-8
2
- describe 'winrm client wql', integration: true do
3
- before(:all) do
4
- @winrm = winrm_connection
5
- end
6
-
7
- it 'should query Win32_OperatingSystem' do
8
- output = @winrm.run_wql('select * from Win32_OperatingSystem')
9
- expect(output).to_not be_empty
10
- output_caption = output[:win32_operating_system][0][:caption]
11
- expect(output_caption).to include('Microsoft')
12
- expect(output_caption).to include('Windows')
13
- end
14
- end
1
+ # encoding: UTF-8
2
+ describe 'winrm client wql', integration: true do
3
+ before(:all) do
4
+ @winrm = winrm_connection
5
+ end
6
+
7
+ it 'should query Win32_OperatingSystem' do
8
+ output = @winrm.run_wql('select * from Win32_OperatingSystem')
9
+ expect(output).to_not be_empty
10
+ output_caption = output[:win32_operating_system][0][:caption]
11
+ expect(output_caption).to include('Microsoft')
12
+ expect(output_caption).to include('Windows')
13
+ end
14
+ end
@@ -1,40 +1,40 @@
1
- # encoding: UTF-8
2
- require 'date'
3
- require File.expand_path('../lib/winrm/version', __FILE__)
4
-
5
- Gem::Specification.new do |s|
6
- s.platform = Gem::Platform::RUBY
7
- s.name = 'winrm'
8
- s.version = WinRM::VERSION
9
- s.date = Date.today.to_s
10
-
11
- s.author = ['Dan Wanek', 'Paul Morton']
12
- s.email = ['dan.wanek@gmail.com', 'paul@themortonsonline.com']
13
- s.homepage = 'https://github.com/WinRb/WinRM'
14
-
15
- s.summary = 'Ruby library for Windows Remote Management'
16
- s.description = <<-EOF
17
- Ruby library for Windows Remote Management
18
- EOF
19
- s.license = 'Apache-2.0'
20
-
21
- s.files = `git ls-files`.split(/\n/)
22
- s.require_path = 'lib'
23
- s.rdoc_options = %w(-x test/ -x examples/)
24
- s.extra_rdoc_files = %w(README.md LICENSE)
25
-
26
- s.bindir = 'bin'
27
- s.executables = ['rwinrm']
28
- s.required_ruby_version = '>= 1.9.0'
29
- s.add_runtime_dependency 'gssapi', '~> 1.2'
30
- s.add_runtime_dependency 'httpclient', '~> 2.2', '>= 2.2.0.2'
31
- s.add_runtime_dependency 'rubyntlm', '~> 0.6.0'
32
- s.add_runtime_dependency 'logging', ['>= 1.6.1', '< 3.0']
33
- s.add_runtime_dependency 'nori', '~> 2.0'
34
- s.add_runtime_dependency 'gyoku', '~> 1.0'
35
- s.add_runtime_dependency 'builder', '>= 2.1.2'
36
- s.add_development_dependency 'rspec', '~> 3.2'
37
- s.add_development_dependency 'rake', '~> 10.3'
38
- s.add_development_dependency 'rubocop', '~> 0.28'
39
- s.add_development_dependency 'pry'
40
- end
1
+ # encoding: UTF-8
2
+ require 'date'
3
+ require File.expand_path('../lib/winrm/version', __FILE__)
4
+
5
+ Gem::Specification.new do |s|
6
+ s.platform = Gem::Platform::RUBY
7
+ s.name = 'winrm'
8
+ s.version = WinRM::VERSION
9
+ s.date = Date.today.to_s
10
+
11
+ s.author = ['Dan Wanek', 'Paul Morton']
12
+ s.email = ['dan.wanek@gmail.com', 'paul@themortonsonline.com']
13
+ s.homepage = 'https://github.com/WinRb/WinRM'
14
+
15
+ s.summary = 'Ruby library for Windows Remote Management'
16
+ s.description = <<-EOF
17
+ Ruby library for Windows Remote Management
18
+ EOF
19
+ s.license = 'Apache-2.0'
20
+
21
+ s.files = `git ls-files`.split(/\n/)
22
+ s.require_path = 'lib'
23
+ s.rdoc_options = %w(-x test/ -x examples/)
24
+ s.extra_rdoc_files = %w(README.md LICENSE)
25
+
26
+ s.bindir = 'bin'
27
+ s.executables = ['rwinrm']
28
+ s.required_ruby_version = '>= 1.9.0'
29
+ s.add_runtime_dependency 'gssapi', '~> 1.2'
30
+ s.add_runtime_dependency 'httpclient', '~> 2.2', '>= 2.2.0.2'
31
+ s.add_runtime_dependency 'rubyntlm', '~> 0.6.0'
32
+ s.add_runtime_dependency 'logging', ['>= 1.6.1', '< 3.0']
33
+ s.add_runtime_dependency 'nori', '~> 2.0'
34
+ s.add_runtime_dependency 'gyoku', '~> 1.0'
35
+ s.add_runtime_dependency 'builder', '>= 2.1.2'
36
+ s.add_development_dependency 'rspec', '~> 3.2'
37
+ s.add_development_dependency 'rake', '~> 10.3'
38
+ s.add_development_dependency 'rubocop', '~> 0.28'
39
+ s.add_development_dependency 'pry'
40
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: winrm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.3
4
+ version: 1.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Wanek
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-04-04 00:00:00.000000000 Z
12
+ date: 2016-04-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: gssapi
@@ -198,6 +198,7 @@ files:
198
198
  - README.md
199
199
  - Rakefile
200
200
  - Vagrantfile
201
+ - WinrmAppveyor.psm1
201
202
  - appveyor.yml
202
203
  - bin/rwinrm
203
204
  - changelog.md
@@ -262,7 +263,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
262
263
  version: '0'
263
264
  requirements: []
264
265
  rubyforge_project:
265
- rubygems_version: 2.5.2
266
+ rubygems_version: 2.6.3
266
267
  signing_key:
267
268
  specification_version: 4
268
269
  summary: Ruby library for Windows Remote Management