NAME
Rex::Test::Spec - Write Rex::Test like RSpec!
VERSION
Version 0.03
SYNOPSIS
use Rex::Test::Spec;
describe "Nginx Test", sub {
context run("nginx -t"), "nginx.conf testing", sub {
like its('stdout'), qr/ok/;
};
context file("~/.ssh/id_rsa"), sub {
is its('ensure'), 'file';
is its('mode'), '0600';
like its('content'), qr/name\@email\.com/;
};
context file("/data"), sub {
is its('ensure'), 'directory';
is its('owner'), 'www';
is its('mounted_on'), '/dev/sdb1';
isnt its('writable');
};
context service("nginx"), sub {
is its('ensure'), 'running';
};
context pkg("nginx"), sub {
is its('ensure'), 'present';
is its('version'), '1.5.8';
};
context cron, sub {
like its('www'), 'logrotate';
};
context gateway, sub {
is it, '192.168.0.1';
};
context group('www'), sub {
ok its('ensure');
};
context iptables, sub {
};
context port(80), sub {
is its('bind'), '0.0.0.0';
is its('proto'), 'tcp';
is its('command'), 'nginx';
};
context process('nginx'), sub {
like its('command'), qr(nginx -c /etc/nginx.conf);
ok its('mem') > 1024;
};
context routes, sub {
is_deeply its(1), {
destination => $dest,
gateway => $gw,
genmask => $genmask,
flags => $flags,
mss => $mss,
irtt => $irtt,
iface => $iface,
};
};
context sysctl, sub {
is its('vm.swapiness'), 1;
};
context user('www'), sub {
ok its('ensure');
is its('home'), '/var/www/html';
is its('shell'), '/sbin/nologin';
is_deeply its('belong_to'), ['www', 'nogroup'];
};
};
done_testing;
EXPORT FUNCTIONS
Spec definition functions
These are the functions you will use to define behaviors and run your specs: describe (and alias to context), its (alias to it).
Normally suggest describe "strings"
and context resource type object
, use its(key)
return value, it
return objects by default.
Test::More export functions
This now include is, isnt, ok, is_deeply, like, unlike, done_testing. You'll use these to assert correct behavior.
The resource type name will be automatic passed as testing message.
Rex resource type generation functions
Now support cron, gateway, iptables, port, routes, service, user, file, group, pkg, process, run, sysctl.
See "SYNOPSIS" for more details.
AUTHOR
Rao Chenlin(chenryn), <rao.chenlin at gmail.com>
SEE ALSO
- 1. Rspec
- 2. Serverspec
- 3. TDD (Test Driven Development)
- 4. BDD (Behavior Driven Development)
- 5. Test::More
- 6. Rex
BUGS
Please report any bugs or feature requests to bug-rex-test-spec at rt.cpan.org
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Rex-Test-Spec. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
Also accept pull requests and issue at https://github.com/chenryn/Rex--Test--Spec.
LICENSE AND COPYRIGHT
Copyright 2014 Rao Chenlin(chenryn).
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.