ievms-ruby 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +3 -0
- data/README.md +87 -44
- data/bin/ievmsrb +2 -17
- data/lib/ievms/ievms_cli.rb +66 -0
- data/lib/ievms/version.rb +1 -1
- data/lib/ievms/windows_guest.rb +31 -21
- data/test/test_helper.rb +3 -4
- data/test/test_ievms_cli.rb +105 -0
- data/test/test_ievms_win7.rb +21 -2
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d1b1ed064b1f9f0d07deb7d8a1599131c33cfd1c
|
4
|
+
data.tar.gz: 89adcd248ac8f761c206df6e11c5eb6a7616c7da
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 71ad9eb8e5775cb37307cde8aa88ae8e9c7a850d63bb69f716db50cce3b6b726d448c19367ae439d54b89a02a5449bf228b5cd89f58b0d198ccb2c58fa2c8028
|
7
|
+
data.tar.gz: 1c498afdbe7b088c7c6d06ca7fc0b35a64b59b76df4363e3fe4985bf6b6e2b253b2dbf11238fa7eb3ef06c4350ccc390c7c067f8d494cf74f45392887b684276
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -2,61 +2,51 @@
|
|
2
2
|
|
3
3
|
[![Gem Version](https://badge.fury.io/rb/ievms-ruby.svg)](https://badge.fury.io/rb/ievms-ruby)
|
4
4
|
[![Code Climate](https://codeclimate.com/github/mipmip/ievms-ruby/badges/gpa.svg)](https://codeclimate.com/github/mipmip/ievms-ruby)
|
5
|
+
[![Test Coverage](https://codeclimate.com/github/mipmip/ievms-ruby/badges/coverage.svg)](https://codeclimate.com/github/mipmip/ievms-ruby/coverage)
|
5
6
|
[![Dependency Status](https://gemnasium.com/mipmip/ievms-ruby.svg)](https://gemnasium.com/mipmip/ievms-ruby)
|
6
|
-
|
7
|
+
[![Inline docs](http://inch-ci.org/github/mipmip/ievms-ruby.svg?branch=master)](http://inch-ci.org/github/mipmip/ievms-ruby)
|
7
8
|
|
8
9
|
Ruby interface for boxes made by ievms.sh. Use this Library to provision your
|
9
10
|
IE boxes from https://modern.ie.
|
10
11
|
|
11
|
-
Next ievms.sh ievms-ruby also works great in combination with iectrl.
|
12
|
+
Next to [ievms.sh](https://github.com/xdissent/ievms), `ievms-ruby` also works great in combination with [iectrl](https://github.com/xdissent/iectrl).
|
12
13
|
|
13
|
-
##
|
14
|
+
## WinBoxes supported
|
14
15
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
![winxp](https://img.shields.io/badge/WinXP-failure-red.svg)
|
17
|
+
![winvista](https://img.shields.io/badge/WinVista-failure-red.svg)
|
18
|
+
![win7](https://img.shields.io/badge/Win7-success-brightgreen.svg)
|
19
|
+
![win8](https://img.shields.io/badge/Win8-success-brightgreen.svg)
|
20
|
+
![win10](https://img.shields.io/badge/Win10-unknown-lightgrey.svg)
|
19
21
|
|
20
22
|
## Features
|
21
23
|
|
22
|
-
* Works with Windows 7
|
23
24
|
* Upload files to guest machine
|
24
25
|
* Download file from guest machine
|
25
|
-
* Execute
|
26
|
-
* Execute
|
26
|
+
* Execute cmd.exe and powershell commands on guest machine
|
27
|
+
* Execute cmd.exe and powershell commands on guest machine as admin
|
27
28
|
* Cat file guest machine from cli
|
28
29
|
|
29
|
-
##
|
30
|
-
|
31
|
-
Add this line to your application's Gemfile:
|
32
|
-
|
33
|
-
```ruby
|
34
|
-
gem 'ievms-ruby'
|
35
|
-
```
|
36
|
-
$ bundle
|
37
|
-
|
38
|
-
Or install it yourself as:
|
30
|
+
## Requirements
|
39
31
|
|
40
|
-
|
32
|
+
* [VirtualBox](https://www.virtualbox.org/wiki/Downloads) >= 5.0.6
|
33
|
+
* VirtualBox Extension Pack and Guest Additions >= 5.0.6
|
34
|
+
* Host Machine: OSX or Linux (only tested on OSX 10.9 & 10.10)
|
35
|
+
* Virtual Machines created by .ievms (only tested with vanilla Win7 machines)
|
41
36
|
|
42
37
|
## Usage
|
43
38
|
|
44
|
-
###
|
45
|
-
|
46
|
-
|
47
|
-
```bash
|
48
|
-
ievmsrb help
|
49
|
-
```
|
39
|
+
### As library
|
40
|
+
Use Ievms-ruby in provisioning scripts for windows E.g. for CI. Here's an example
|
41
|
+
provisioning script using the Gem. It installs [Chocolatey](https://chocolatey.org), Ruby, and [git-for-windows](https://git-for-windows.github.io) without user interaction needed.
|
50
42
|
|
51
|
-
to
|
43
|
+
Add this line to your application's Gemfile:
|
52
44
|
|
53
|
-
```
|
54
|
-
|
45
|
+
```ruby
|
46
|
+
gem 'ievms-ruby'
|
55
47
|
```
|
56
48
|
|
57
|
-
|
58
|
-
Ievms-ruby very usable as provision tool for windows. E.g. for CI. Here's an example
|
59
|
-
provisioning script using the Gem:
|
49
|
+
run `bundle install`
|
60
50
|
|
61
51
|
```ruby
|
62
52
|
#!/usr/bin/env ruby
|
@@ -92,19 +82,62 @@ provision.install_chocolatey
|
|
92
82
|
provision.install_ruby_and_git
|
93
83
|
```
|
94
84
|
|
95
|
-
|
85
|
+
### From CLI
|
86
|
+
Install the Gem on your system:
|
87
|
+
|
88
|
+
$ gem install ievms-ruby
|
89
|
+
|
90
|
+
After installation you can use the `ievmsrb` cli program.
|
91
|
+
|
92
|
+
#### ievmsrb commands
|
93
|
+
|
94
|
+
```bash
|
95
|
+
$ ievmsrb help
|
96
|
+
|
97
|
+
Commands:
|
98
|
+
ievmsrb cat [vbox name] [file path] # cat file from path in Win vbox
|
99
|
+
ievmsrb cmd [vbox name] [command to execute] # Run command with cmd.exe in Win vbox
|
100
|
+
ievmsrb copy_from [vbox name] [path in vbox] [local file] # Copy file from Win vbox to local path
|
101
|
+
ievmsrb copy_to [vbox name] [local file] [path in vbox] # Copy local file to Win vbox
|
102
|
+
ievmsrb help [COMMAND] # Describe available commands or one specific command
|
103
|
+
ievmsrb ps [vbox name] # Show running tasks in Win vbox
|
104
|
+
ievmsrb reboot [vbox name] # Reboot Win box
|
105
|
+
ievmsrb shutdown [vbox name] # Shutdown Win vbox
|
106
|
+
```
|
107
|
+
|
108
|
+
#### ievmsrb examples
|
109
|
+
|
110
|
+
Display the contents of a guest file.
|
111
|
+
```bash
|
112
|
+
$ ievmsrb cat "IE9 - Win7" 'C:\Windows\System32\Drivers\Etc\hosts'
|
113
|
+
```
|
114
|
+
|
115
|
+
|
116
|
+
Execute a cmd on the guestmachine and show the output
|
117
|
+
```bash
|
118
|
+
$ ievmsrb cmd "IE9 - Win7" 'tasklist'
|
119
|
+
```
|
120
|
+
|
96
121
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
122
|
+
Copy a file from the Windows Guest to a local path
|
123
|
+
```bash
|
124
|
+
$ ievmsrb copy_from "IE9 - Win7" 'C:\Windows\System32\Drivers\Etc\hosts' ~/Desktop/hosts.win9
|
125
|
+
```
|
101
126
|
|
102
|
-
|
127
|
+
Turn of the Filewall executing a command as Administator
|
128
|
+
```bash
|
129
|
+
$ ievmsrb cmd_adm "IE9 - Win7" 'NetSh Advfirewall set allprofiles state off'
|
130
|
+
```
|
131
|
+
|
132
|
+
## Contributing
|
133
|
+
Please submit a new ticket if you want to report an issue.
|
134
|
+
Merge requests are welcome. See issues with `Help Wanted` label.
|
103
135
|
|
136
|
+
### Testing
|
104
137
|
To run the tests you need top fullfil the testing requirements first:
|
105
138
|
|
106
139
|
* VirtualBox >= 5.0.4
|
107
|
-
* "IE9 - Win7" installed by ievms.sh
|
140
|
+
* "IE9 - Win7" installed by ievms.sh
|
108
141
|
* Create an new virtual machine called `standbymachine`. Keep the disk size as
|
109
142
|
small as possible. It should be turned off.
|
110
143
|
|
@@ -112,14 +145,24 @@ To run the tests you need top fullfil the testing requirements first:
|
|
112
145
|
git clone https://github.com/mipmip/ievms-ruby.git
|
113
146
|
cd ievms-ruby
|
114
147
|
bundle install
|
115
|
-
rake
|
148
|
+
bundle exec rake
|
116
149
|
```
|
117
150
|
|
118
|
-
|
119
|
-
## Contributing
|
120
|
-
|
151
|
+
### Merge Requests
|
121
152
|
1. Fork it ( https://github.com/mipmip/ievms-ruby/fork )
|
122
153
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
123
154
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
124
155
|
4. Push to the branch (`git push origin my-new-feature`)
|
125
156
|
5. Create a new Pull Request
|
157
|
+
|
158
|
+
## Troubleshooting
|
159
|
+
- If tests fail check if virtualbox guest additions 5.0.6 or higher are
|
160
|
+
installed
|
161
|
+
|
162
|
+
## Acknowledgements
|
163
|
+
- ievms - Provider of a platform and methology
|
164
|
+
- modern.IE - Provider of IE VM images.
|
165
|
+
- virtualbox - Software for running Virtual Machines
|
166
|
+
- shields.io - Creates the beautiful Windows Badges
|
167
|
+
|
168
|
+
|
data/bin/ievmsrb
CHANGED
@@ -1,23 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require 'bundler/setup'
|
3
|
-
require 'ievms/windows_guest'
|
4
3
|
require 'thor'
|
4
|
+
require 'ievms/ievms_cli'
|
5
|
+
require 'ievms/windows_guest'
|
5
6
|
|
6
|
-
class IevmsRb < Thor
|
7
|
-
|
8
|
-
desc "cat [vbox name] [filename]", "cat file in VBox guest"
|
9
|
-
def cat(vbox_name,guest_path)
|
10
|
-
init vbox_name
|
11
|
-
|
12
|
-
print @machine.download_string_from_file_to_guest guest_path, true
|
13
|
-
print "\n"
|
14
|
-
end
|
15
|
-
|
16
|
-
private
|
17
|
-
|
18
|
-
def init vbox_name
|
19
|
-
@machine = Ievms::WindowsGuest.new vbox_name
|
20
|
-
end
|
21
|
-
end
|
22
7
|
|
23
8
|
IevmsRb.start(ARGV)
|
@@ -0,0 +1,66 @@
|
|
1
|
+
class IevmsRb < Thor
|
2
|
+
|
3
|
+
desc "cat [vbox name] [file path]", "cat file from path in Win vbox"
|
4
|
+
def cat(vbox_name,guest_path)
|
5
|
+
init vbox_name
|
6
|
+
print @machine.download_string_from_file_to_guest guest_path, true
|
7
|
+
end
|
8
|
+
|
9
|
+
desc "ps [vbox name]", "Show running tasks in Win vbox"
|
10
|
+
def ps(vbox_name)
|
11
|
+
init vbox_name
|
12
|
+
print @machine.run_command "tasklist"
|
13
|
+
end
|
14
|
+
|
15
|
+
desc "shutdown [vbox name]", "Shutdown Win vbox"
|
16
|
+
def shutdown(vbox_name)
|
17
|
+
init vbox_name
|
18
|
+
print @machine.run_command "shutdown.exe /s /f /t 0"
|
19
|
+
end
|
20
|
+
|
21
|
+
desc "reboot [vbox name]", "Reboot Win box"
|
22
|
+
def reboot(vbox_name)
|
23
|
+
init vbox_name
|
24
|
+
print @machine.run_command "shutdown.exe /r /f /t 0"
|
25
|
+
end
|
26
|
+
|
27
|
+
desc "copy_to_as_adm [vbox name] [local file] [path in vbox]", "Copy local file to Win vbox as Administrator"
|
28
|
+
def copy_to_as_adm(vbox_name,local_path, guest_path)
|
29
|
+
init vbox_name
|
30
|
+
@machine.upload_file_to_guest_as_admin(local_path, guest_path, false)
|
31
|
+
end
|
32
|
+
|
33
|
+
desc "copy_to [vbox name] [local file] [path in vbox]", "Copy local file to Win vbox"
|
34
|
+
def copy_to(vbox_name,local_path, guest_path)
|
35
|
+
init vbox_name
|
36
|
+
@machine.upload_file_to_guest(local_path, guest_path, false)
|
37
|
+
end
|
38
|
+
|
39
|
+
desc "copy_from [vbox name] [path in vbox] [local file]", "Copy file from Win vbox to local path"
|
40
|
+
def copy_from(vbox_name, guest_path, local_path)
|
41
|
+
init vbox_name
|
42
|
+
@machine.download_file_from_guest(guest_path, local_path, false)
|
43
|
+
end
|
44
|
+
|
45
|
+
desc "cmd [vbox name] [command to execute]", "Run command with cmd.exe in Win vbox"
|
46
|
+
def cmd(vbox_name,command)
|
47
|
+
init vbox_name
|
48
|
+
|
49
|
+
print @machine.run_command command
|
50
|
+
print "\n"
|
51
|
+
end
|
52
|
+
|
53
|
+
desc "cmd_adm [vbox name] [command to execute]", "Run command as Administrator with cmd.exe in Win vbox"
|
54
|
+
def cmd_as_adm(vbox_name,command)
|
55
|
+
init vbox_name
|
56
|
+
|
57
|
+
print @machine.run_command_as_admin command
|
58
|
+
end
|
59
|
+
|
60
|
+
private
|
61
|
+
|
62
|
+
def init vbox_name
|
63
|
+
@machine = Ievms::WindowsGuest.new vbox_name
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
data/lib/ievms/version.rb
CHANGED
data/lib/ievms/windows_guest.rb
CHANGED
@@ -24,22 +24,11 @@ module Ievms
|
|
24
24
|
is_vm vbox_name
|
25
25
|
end
|
26
26
|
|
27
|
-
# Copy a file to the virtual machine from the ievms home folder.
|
28
|
-
def copy_to_vm(src ,dest, quiet=false)
|
29
|
-
print "Copying #{src} to #{dest}\n" unless quiet
|
30
|
-
guestcontrol_exec "cmd.exe", "cmd.exe /c copy \"E:\\#{src}\" \"#{dest}\""
|
31
|
-
end
|
32
|
-
|
33
|
-
# Copy a file to the virtual machine from the ievms home folder.
|
34
|
-
def copy_from_vm(src ,dest, quiet=false)
|
35
|
-
print "Copying #{src} to #{dest}\n" unless quiet
|
36
|
-
guestcontrol_exec "cmd.exe", "cmd.exe /c copy \"#{src}\" \"E:\\#{dest}\""
|
37
|
-
end
|
38
|
-
|
39
27
|
def download_file_from_guest(guest_path, local_path, quiet=false)
|
40
28
|
|
29
|
+
log_stdout "Copying #{guest_path} to #{local_path}", quiet
|
41
30
|
# 1 run cp command in machine
|
42
|
-
|
31
|
+
guestcontrol_exec "cmd.exe", "cmd.exe /c copy \"#{guest_path}\" \"E:\\#{File.basename(local_path)}\""
|
43
32
|
|
44
33
|
# 2 copy to tmp location in .ievms
|
45
34
|
FileUtils.cp File.join(IEVMS_HOME,File.basename(local_path)), local_path
|
@@ -55,14 +44,17 @@ module Ievms
|
|
55
44
|
FileUtils.cp local_path, File.join(IEVMS_HOME,File.basename(local_path))
|
56
45
|
|
57
46
|
# 2 run cp command in machine
|
58
|
-
|
47
|
+
log_stdout "Copying #{local_path} to #{guest_path}", quiet
|
48
|
+
guestcontrol_exec "cmd.exe", "cmd.exe /c copy \"E:\\#{File.basename(local_path)}\" \"#{guest_path}\""
|
59
49
|
|
60
50
|
# 3 remove tmp file in .ievms
|
61
51
|
FileUtils.rm File.join(IEVMS_HOME,File.basename(local_path))
|
62
52
|
end
|
63
53
|
|
64
54
|
def download_string_from_file_to_guest( guest_path, quiet=false)
|
65
|
-
|
55
|
+
log_stdout "Copying #{guest_path} to tempfile.txt", quiet
|
56
|
+
guestcontrol_exec "cmd.exe", "cmd.exe /c copy \"#{guest_path}\" \"E:\\tmpfile.txt\""
|
57
|
+
|
66
58
|
string = IO.read(File.join(IEVMS_HOME,'tmpfile.txt'))
|
67
59
|
FileUtils.rm File.join(IEVMS_HOME,'tmpfile.txt')
|
68
60
|
string
|
@@ -80,9 +72,19 @@ module Ievms
|
|
80
72
|
FileUtils.rm path
|
81
73
|
end
|
82
74
|
|
75
|
+
# Upload a local file to the windows guest as Administator
|
76
|
+
def upload_file_to_guest_as_admin(local_path, guest_path, quiet=false)
|
77
|
+
|
78
|
+
log_stdout "Copying #{local_path} to #{guest_path} as Administrator", quiet
|
79
|
+
|
80
|
+
upload_file_to_guest(local_path, 'C:\Users\IEUser\.tempadminfile',true)
|
81
|
+
run_command_as_admin('copy C:\Users\IEUser\.tempadminfile '+ guest_path,true)
|
82
|
+
run_command 'del C:\Users\IEUser\.tempadminfile', true
|
83
|
+
end
|
84
|
+
|
83
85
|
# execute existibg batch file in Windows guest as Administrator
|
84
86
|
def run_command_as_admin(command,quiet=false)
|
85
|
-
|
87
|
+
log_stdout "Executing command as administrator: #{command}", quiet
|
86
88
|
|
87
89
|
run_command 'if exist C:\Users\IEUser\ievms.bat del C:\Users\IEUser\ievms.bat && Exit', true
|
88
90
|
|
@@ -90,16 +92,20 @@ module Ievms
|
|
90
92
|
|
91
93
|
guestcontrol_exec "schtasks.exe", "schtasks.exe /run /tn ievms"
|
92
94
|
|
93
|
-
|
94
|
-
print "
|
95
|
-
|
95
|
+
unless quiet
|
96
|
+
print "..."
|
97
|
+
while schtasks_query_ievms.include? 'Running'
|
98
|
+
print "."
|
99
|
+
sleep 2
|
100
|
+
end
|
101
|
+
print "\n"
|
96
102
|
end
|
97
|
-
|
103
|
+
|
98
104
|
end
|
99
105
|
|
100
106
|
# execute existing batch file in Windows guest
|
101
107
|
def run_command(command, quiet=false)
|
102
|
-
|
108
|
+
log_stdout "Executing command: #{command}", quiet
|
103
109
|
out, _, _ = guestcontrol_exec "cmd.exe", "cmd.exe /c \"#{command}\""
|
104
110
|
out
|
105
111
|
end
|
@@ -111,6 +117,10 @@ module Ievms
|
|
111
117
|
|
112
118
|
private
|
113
119
|
|
120
|
+
def log_stdout(msg, quiet=true)
|
121
|
+
print "[#{@vbox_name}] #{msg}\n" unless quiet
|
122
|
+
end
|
123
|
+
|
114
124
|
# execute final guest control shell cmd
|
115
125
|
# returns [stdout,stderr,status] from capture3
|
116
126
|
def guestcontrol_exec(image, cmd)
|
data/test/test_helper.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'simplecov'
|
2
2
|
|
3
|
+
|
3
4
|
SimpleCov.start do
|
4
5
|
add_filter '/test/'
|
5
6
|
add_filter '/vendor/'
|
@@ -9,8 +10,6 @@ require 'minitest'
|
|
9
10
|
require 'minitest/unit'
|
10
11
|
require 'minitest/autorun'
|
11
12
|
require 'minitest/pride'
|
12
|
-
#require 'base64'
|
13
|
-
|
14
|
-
#tempdir = File.join(File.dirname(__FILE__), 'tmpout')
|
15
|
-
#FileUtils.rm_rf(Dir.glob(tempdir+'/*'))
|
16
13
|
|
14
|
+
require "codeclimate-test-reporter"
|
15
|
+
CodeClimate::TestReporter.start
|
@@ -0,0 +1,105 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'thor'
|
3
|
+
require 'ievms/ievms_cli'
|
4
|
+
require 'ievms/windows_guest'
|
5
|
+
require 'timeout'
|
6
|
+
|
7
|
+
class TestWin7 < Minitest::Test
|
8
|
+
def setup
|
9
|
+
iectrl = `iectrl status "IE9 - Win7"`
|
10
|
+
if not iectrl.include?('RUNNING')
|
11
|
+
iectrl = `iectrl start "IE9 - Win7"`
|
12
|
+
sleep 5
|
13
|
+
IevmsRb.start(['ps', "IE9 - Win7"])
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_non_existing_guest
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_ps
|
21
|
+
assert_equal true, run_capture(["ps", "IE9 - Win7"]).include?('winlogon.exe')
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_help
|
25
|
+
assert_equal true, run_capture([]).include?('[vbox name]')
|
26
|
+
assert_equal true, run_capture(['help']).include?('[file path]')
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_copy_from
|
30
|
+
FileUtils.rm '/tmp/testdlfile2.txt' if File.exists? '/tmp/testdlfile2.txt'
|
31
|
+
out = run_capture ['copy_from',"IE9 - Win7",'C:\ievms.xml', '/tmp/testdlfile2.txt']
|
32
|
+
|
33
|
+
assert_equal out, "[IE9 - Win7] Copying C:\\ievms.xml to /tmp/testdlfile2.txt\n"
|
34
|
+
assert_equal true, File.exists?('/tmp/testdlfile2.txt')
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_copy_to
|
38
|
+
IevmsRb.start ['cmd', "IE9 - Win7", 'if exist C:\Users\IEUser\ievms_test_upload3.txt del C:\Users\IEUsers\ievms_test_upload3.txt && Exit']
|
39
|
+
FileUtils.rm '/tmp/ievms_test_upload3.txt' if File.exists? '/tmp/ievms_test_upload3.txt'
|
40
|
+
`echo "uploadasadmin_yes" > /tmp/ievms_test_upload3.txt`
|
41
|
+
out = run_capture ['copy_to',"IE9 - Win7", '/tmp/ievms_test_upload3.txt', 'C:\Users\IEUser\ievms_test_upload3.txt']
|
42
|
+
out2 = run_capture ['cat',"IE9 - Win7", 'C:\Users\IEUser\ievms_test_upload3.txt']
|
43
|
+
assert_equal "[IE9 - Win7] Copying /tmp/ievms_test_upload3.txt to C:\\Users\\IEUser\\ievms_test_upload3.txt\n", out
|
44
|
+
assert_match(/uploadasadmin_yes/, out2)
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_copy_to_as_adm
|
49
|
+
IevmsRb.start ['cmd_as_adm', "IE9 - Win7", 'if exist C:\ievms_test_upload2.txt del C:\ievms_test_upload2.txt && Exit']
|
50
|
+
FileUtils.rm '/tmp/ievms_test_upload2.txt' if File.exists? '/tmp/ievms_test_upload2.txt'
|
51
|
+
`echo "uploadasadmin_yes" > /tmp/ievms_test_upload2.txt`
|
52
|
+
|
53
|
+
out = run_capture ['copy_to_as_adm',"IE9 - Win7", '/tmp/ievms_test_upload2.txt', 'C:\ievms_test_upload2.txt']
|
54
|
+
out2 = run_capture ['cat',"IE9 - Win7", 'C:\ievms_test_upload2.txt']
|
55
|
+
assert_equal "[IE9 - Win7] Copying /tmp/ievms_test_upload2.txt to C:\\ievms_test_upload2.txt as Administrator\n", out
|
56
|
+
assert_match(/uploadasadmin_yes/, out2)
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_reboot
|
61
|
+
sysinfo = run_capture(['cmd', "IE9 - Win7", 'systeminfo'])
|
62
|
+
boottime1 = sysinfo.lines.find { |line| line.include?("Boot") }
|
63
|
+
IevmsRb.start(['reboot', "IE9 - Win7"])
|
64
|
+
sleep 5
|
65
|
+
IevmsRb.start(['ps', "IE9 - Win7"])
|
66
|
+
|
67
|
+
sysinfo2 = run_capture(['cmd', "IE9 - Win7", 'systeminfo'])
|
68
|
+
boottime2 = sysinfo2.lines.find { |line| line.include?("Boot") }
|
69
|
+
refute_equal boottime1, boottime2
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_shutdown
|
73
|
+
iectrl1 = `iectrl status "IE9 - Win7"`
|
74
|
+
assert_match(/RUNNING/, iectrl1)
|
75
|
+
|
76
|
+
IevmsRb.start(['shutdown', "IE9 - Win7"])
|
77
|
+
sleep 5
|
78
|
+
|
79
|
+
iectrl2 = `iectrl status "IE9 - Win7"`
|
80
|
+
refute_match(/RUNNING/, iectrl2)
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_cat
|
84
|
+
out = run_capture(['cat', "IE9 - Win7", 'C:\Windows\System32\Drivers\Etc\hosts'])
|
85
|
+
assert_match(/rhino\.acme\.com/, out)
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_cmd
|
89
|
+
out = run_capture(['cmd', "IE9 - Win7", 'tasklist'])
|
90
|
+
assert_match(/winlogon\.exe/, out)
|
91
|
+
end
|
92
|
+
|
93
|
+
def test_cmd_adm
|
94
|
+
out = run_capture(['cmd', "IE9 - Win7", 'tasklist'])
|
95
|
+
assert_match(/winlogon\.exe/, out)
|
96
|
+
end
|
97
|
+
|
98
|
+
private
|
99
|
+
def run_capture(args)
|
100
|
+
out, _ = capture_io do
|
101
|
+
IevmsRb.start(args)
|
102
|
+
end
|
103
|
+
out
|
104
|
+
end
|
105
|
+
end
|
data/test/test_ievms_win7.rb
CHANGED
@@ -4,6 +4,14 @@ require 'timeout'
|
|
4
4
|
|
5
5
|
class TestWin7 < Minitest::Test
|
6
6
|
def setup
|
7
|
+
|
8
|
+
iectrl = `iectrl status "IE9 - Win7"`
|
9
|
+
if not iectrl.include?('RUNNING')
|
10
|
+
iectrl = `iectrl start "IE9 - Win7"`
|
11
|
+
sleep 5
|
12
|
+
IevmsRb.start(['ps', "IE9 - Win7"])
|
13
|
+
end
|
14
|
+
|
7
15
|
@machine = Ievms::WindowsGuest.new 'IE9 - Win7'
|
8
16
|
end
|
9
17
|
|
@@ -54,7 +62,6 @@ eos
|
|
54
62
|
|
55
63
|
@machine.upload_file_to_guest(File.join(File.dirname(__FILE__), '_test.bat'), 'C:\Users\IEUser\test.bat')
|
56
64
|
@machine.run_command('C:\Users\IEUser\test.bat')
|
57
|
-
#@machine.run_bat('C:\Users\IEUser\test.bat')
|
58
65
|
output_file_exists = @machine.run_command 'if exist C:\Users\IEUser\EmptyFile.txt echo EmptyFileExist && Exit'
|
59
66
|
|
60
67
|
assert_equal true, output_file_exists.include?('EmptyFileExist')
|
@@ -72,9 +79,21 @@ eos
|
|
72
79
|
|
73
80
|
@machine.upload_file_to_guest(File.join(File.dirname(__FILE__), '_test_as_admin.bat'), 'C:\Users\IEUser\test_as_admin.bat')
|
74
81
|
@machine.run_command_as_admin('C:\Users\IEUser\test_as_admin.bat')
|
75
|
-
# @machine.run_bat_as_admin('C:\Users\IEUser\test_as_admin.bat')
|
76
82
|
output_file_exists = @machine.run_command 'if exist C:\EmptyFile2.txt echo EmptyFile2Exist && Exit'
|
77
83
|
|
78
84
|
assert_equal true, output_file_exists.include?('EmptyFile2Exist')
|
79
85
|
end
|
86
|
+
|
87
|
+
def test_upload_file_as_admin
|
88
|
+
@machine.run_command_as_admin 'if exist C:\ievms_test_upload.txt del C:\ievms_test_upload.txt && Exit'
|
89
|
+
FileUtils.rm '/tmp/ievms_test_upload.txt' if File.exists? '/tmp/ievms_test_upload.txt'
|
90
|
+
|
91
|
+
`echo "uploadasadmin_yes" > /tmp/ievms_test_upload.txt`
|
92
|
+
|
93
|
+
@machine.upload_file_to_guest_as_admin '/tmp/ievms_test_upload.txt', 'C:\ievms_test_upload.txt'
|
94
|
+
output_file_exists = @machine.run_command 'type c:\ievms_test_upload.txt'
|
95
|
+
|
96
|
+
assert_equal true, output_file_exists.include?('uploadasadmin_yes')
|
97
|
+
end
|
98
|
+
|
80
99
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ievms-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pim Snel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -95,11 +95,13 @@ files:
|
|
95
95
|
- Rakefile
|
96
96
|
- bin/ievmsrb
|
97
97
|
- ievms-ruby.gemspec
|
98
|
+
- lib/ievms/ievms_cli.rb
|
98
99
|
- lib/ievms/version.rb
|
99
100
|
- lib/ievms/windows_guest.rb
|
100
101
|
- test/_test.bat
|
101
102
|
- test/_test_as_admin.bat
|
102
103
|
- test/test_helper.rb
|
104
|
+
- test/test_ievms_cli.rb
|
103
105
|
- test/test_ievms_win7.rb
|
104
106
|
homepage: https://github.com/mipmip/ievms-ruby
|
105
107
|
licenses:
|
@@ -129,4 +131,5 @@ test_files:
|
|
129
131
|
- test/_test.bat
|
130
132
|
- test/_test_as_admin.bat
|
131
133
|
- test/test_helper.rb
|
134
|
+
- test/test_ievms_cli.rb
|
132
135
|
- test/test_ievms_win7.rb
|