winrm 1.7.3 → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
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