Skip to content

A Beaker library full of wonderful helper methods for testing on Windows.

License

Notifications You must be signed in to change notification settings

voxpupuli/beaker-windows

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Beaker Windows

Beaker helper library for testing on Windows.

Installation

Add this line to your application's Gemfile:

gem 'beaker-windows'

And then execute:

$ bundle install

Or install it yourself as:

$ gem install beaker-windows

Methods

join_path

Join paths together with a "" Windows style path separator. This method will accept path segments with mixed separators as well as leading and trailing separators. Optionally you can specify to use an alternate path separator or strip the drive letter off the combined path.

Example 1

join_path('c:\dog', 'bark')

Example 2

join_path('c:\dog', 'bark', :path_sep => '/')

Example 3

join_path('c:\dog', 'bark', :path_sep => '/', :strip_drive => true)

exec_ps_cmd

Executes a PowerShell command on a host. Allow validation of command execution and fail if PowerShell command throws an exception. Note: if quotes are required then the single quote should be preferred. If double quotes are required you will need to double escape the quotes!

Example 1

on(hosts, exec_ps_cmd("Set-Content -path 'fu.txt' -value 'fu'"))

Example 2

You can specify custom PowerShell options.

on(hosts, exec_ps_cmd("Set-Content -path 'fu.txt' -value 'fu'", :ExecutionPolicy => 'Unrestricted')

Example 3

Encode a command that contains nested quotes or Unicode.

on(hosts, exec_ps_cmd("Set Content -path 'fu.txt', -value 'fu'", :EncodedCommand => true))

Example 4

Wrap the PowerShell command to guarantee an exit code of "1" if the command fails.

on(hosts, exec_ps_cmd("1 -eq 2", :verify_cmd => true))

Example 5

If the command throws an exception then it should exit with "1". (Default)

on(hosts, exec_ps_cmd("does.not.exist", :excep_fail => true))

exec_ps_script_on

Execute a PowerShell script on a remote machine. (This method supports native Unicode) Note: This method fails on Windows 2008 R2! See BKR-293 for more details.

Example 1

exec_ps_script_on(host, 'Write-Host Hello')

Example 2

Can also be used in a block for granular verification.

exec_ps_script_on(hosts, 'Write-Host Hello') do |result|
  assert_match(/Hello/, result.stdout)
end

get_windows_features_on

Get a list (returns an Array) of Windows features on a host. Allow for filtering of installed or available features.

Example 1

Get all features regardless of installation state.

get_windows_features_on(host)

Example 2

Filter for installed features.

get_windows_features_on(host, :filter => :installed)

Example 3

Filter for available features.

get_windows_features_on(host, :filter => :available)

install_windows_feature_on

Install a Windows role or feature on a host.

Example 1

install_windows_feature_on(host, 'Print-Server')

Example 2

Optionally failures can be suppressed which allows for delayed verification of feature installation. (See assert_windows_feature_on for more details.)

install_windows_feature_on(host, 'Bad-Feature', :suppress_fail => true)

remove_windows_feature_on

Remove a Windows role or feature on a host.

Example 1

remove_windows_feature_on(host, 'Print-Server')

Example 2

Optionally failures can be suppressed which allows for delayed verification of feature removal. (See assert_windows_feature_on for more details.)

remove_windows_feature_on(host, 'Bad-Feature', :suppress_fail => true)

assert_windows_feature_on

Assert that a Windows feature is installed or not on a host. The advantage of this assert is that is will report as a Beaker test failure if the assertion fails.

Example 1

Assert that a Windows feature is installed.

assert_windows_feature_on(host, 'Print-Server')

Example 2

Assert that a Windows feature is available.

assert_windows_feature_on(host, 'WINS', :state => :available)

get_registry_value_on

Get the data from a registry value.

Example 1

get_registry_value_on(host, :hklm, "SOFTWARE\Microsoft\Windows NT\CurrentVersion", "SystemRoot")

set_registry_value_on

Set the data for a registry value.

Example 1

Set data for a REG_SZ registry value.

set_registry_value_on(host, :hkcu, 'SOFTWARE\test_key', 'string_value', 'test_data')

Example 2

Set data for a REG_DWORD registry value.

set_registry_value_on(host, :hkcu, 'SOFTWARE\test_key', 'dword_value', 255, :dword)

Example 3

Set data for a REG_BINARY registry value.

set_registry_value_on(host, :hkcu, 'SOFTWARE\test_key', 'bin_value', 'be,ef,f0,0d', :bin)

remove_registry_value_on

Remove a registry value.

Example 1

remove_registry_value_on(host, :hkcu, 'SOFTWARE\test_key', 'string_value')

new_registry_key_on

Create a new registry key. If the key already exists then this method will silently fail. This method will create parent intermediate parent keys if they do not exist.

Example 1

new_registry_key_on(host, :hkcu, 'SOFTWARE\some_new_key')

remove_registry_key_on

Remove a registry key. The method will not remove a registry key if the key contains nested subkeys and values. Use the "recurse" argument to force deletion of nested registry keys.

Example 1

remove_registry_key_on(host, :hkcu, 'SOFTWARE\test_key')

About

A Beaker library full of wonderful helper methods for testing on Windows.

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages