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
       <http://rspec.info/>

   2. Serverspec
       <http://serverspec.org/>

   3. TDD (Test Driven Development)
       <http://en.wikipedia.org/wiki/Test-driven_development>

   4. BDD (Behavior Driven Development)
       <http://en.wikipedia.org/wiki/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).

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

   <http://www.apache.org/licenses/LICENSE-2.0>

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.