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.
- checksums.yaml +4 -4
- data/.gitignore +10 -10
- data/.rspec +3 -3
- data/.travis.yml +12 -12
- data/Gemfile +9 -9
- data/LICENSE +202 -202
- data/README.md +213 -194
- data/Rakefile +36 -36
- data/Vagrantfile +9 -9
- data/WinrmAppveyor.psm1 +32 -0
- data/appveyor.yml +51 -42
- data/bin/rwinrm +97 -97
- data/changelog.md +3 -0
- data/lib/winrm.rb +42 -42
- data/lib/winrm/command_executor.rb +6 -2
- data/lib/winrm/command_output_decoder.rb +53 -53
- data/lib/winrm/exceptions/exceptions.rb +57 -57
- data/lib/winrm/helpers/iso8601_duration.rb +58 -58
- data/lib/winrm/helpers/powershell_script.rb +42 -42
- data/lib/winrm/http/response_handler.rb +82 -82
- data/lib/winrm/http/transport.rb +17 -0
- data/lib/winrm/output.rb +43 -43
- data/lib/winrm/soap_provider.rb +39 -39
- data/lib/winrm/version.rb +1 -1
- data/lib/winrm/winrm_service.rb +550 -547
- data/preamble +17 -17
- data/spec/auth_timeout_spec.rb +16 -16
- data/spec/cmd_spec.rb +102 -102
- data/spec/command_executor_spec.rb +27 -10
- data/spec/command_output_decoder_spec.rb +37 -37
- data/spec/config-example.yml +19 -19
- data/spec/exception_spec.rb +50 -50
- data/spec/issue_184_spec.rb +67 -67
- data/spec/issue_59_spec.rb +23 -23
- data/spec/matchers.rb +74 -74
- data/spec/output_spec.rb +110 -110
- data/spec/powershell_spec.rb +97 -97
- data/spec/response_handler_spec.rb +59 -59
- data/spec/spec_helper.rb +73 -73
- data/spec/stubs/responses/get_command_output_response.xml.erb +13 -13
- data/spec/stubs/responses/open_shell_v1.xml +19 -19
- data/spec/stubs/responses/open_shell_v2.xml +20 -20
- data/spec/stubs/responses/soap_fault_v1.xml +36 -36
- data/spec/stubs/responses/soap_fault_v2.xml +42 -42
- data/spec/stubs/responses/wmi_error_v2.xml +41 -41
- data/spec/transport_spec.rb +139 -124
- data/spec/winrm_options_spec.rb +76 -76
- data/spec/winrm_primitives_spec.rb +51 -51
- data/spec/wql_spec.rb +14 -14
- data/winrm.gemspec +40 -40
- metadata +4 -3
data/spec/winrm_options_spec.rb
CHANGED
@@ -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
|
data/spec/wql_spec.rb
CHANGED
@@ -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
|
data/winrm.gemspec
CHANGED
@@ -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.
|
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-
|
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.
|
266
|
+
rubygems_version: 2.6.3
|
266
267
|
signing_key:
|
267
268
|
specification_version: 4
|
268
269
|
summary: Ruby library for Windows Remote Management
|