Ado
view release on metacpan or search on metacpan
t/command/adduser.t view on Meta::CPAN
#insufficient arguments 2
$opt->{'--email'} = 'test3@localhost';
output_like(
\&add,
qr/Minimal req.+/,
qr/ERROR adding user\(rolling back\):/,
'insufficient arguments 2'
);
#insufficient arguments 3
$opt->{'--f'} = 'First';
output_like(
\&add,
qr/Minimal req.+/,
qr/ERROR adding user\(rolling back\):/,
'insufficient arguments 3'
);
};
subtest 'Ado::Command::adduser/output_sufficient_arguments' => \&output_sufficient_arguments;
sub output_sufficient_arguments {
#sufficient arguments 1
$opt->{'--l'} = 'Last';
stdout_is(
\&add,
"User 'test3' was created with primary group 'test3'.\n",
"User 'test3' was created..."
);
#sufficient arguments 2
$opt->{'-g'} = 'guest';
stdout_is(
\&add,
"'test3' is already taken!\nUser 'test3' was added to group 'guest'.\n",
"User 'test3' was added to group 'guest'..."
);
}; #end subtest
my $uid = Ado::Model::Users->by_login_name($opt->{'--login_name'})->id;
my $dbix = $app->dbix;
$dbix->begin;
$dbix->query('DELETE FROM user_group WHERE user_id=?', $uid);
$dbix->query('DELETE FROM users WHERE id=?', $uid);
$dbix->query('DELETE FROM groups WHERE name=?', $opt->{'--login_name'});
$dbix->commit;
#=pod
#subtest 'Ado::Command::adduser/ouput_invalid_arguments' =>
my $opt_ = {
'--login_name' => 'test3' . (1 x 96),
'--email' => 'test3atlocalhost',
'-f' => 'First',
'-l' => 'Last',
'-p' => 'asdasd',
};
subtest 'Ado::Command::adduser/stderr_invalid_arguments' => \&stderr_invalid_arguments;
sub add_ { $app->start('adduser', %$opt_) }
sub stderr_invalid_arguments {
stderr_like(\&add_, qr/ERROR adding user.+Key 'name'/sm, 'invalid group name');
#TODO: Add user friendly error messages when creating a user.
# and find why sometime with invalid arguments, user gets created
}
#Going deeper
subtest 'Ado::Command::adduser/direct_usage' => \&direct_usage;
sub direct_usage {
isa_ok(my $command = $class->new(), $class);
like((eval { $command->init() }, $@), qr/^\s*?USAGE/, 'init croaks "USAGE..."');
ok($command->init(%$opt, '--login_password' => '--------'), "\$command->init");
is($command->args->{login_password}, Mojo::Util::sha1_hex('test3--------'), 'login_password');
is($command->args->{first_name}, $opt->{'--f'}, 'first_name');
is($command->args->{last_name}, $opt->{'--l'}, 'last_name');
is($command->args->{login_name}, $opt->{'--login_name'}, 'login_name');
is($command->args->{email}, $opt->{'--email'}, 'email');
is($command->args->{ingroup}, $opt->{'-g'}, 'ingroup');
my $out = <<'OO';
User 'test3' was created with primary group 'test3'.
User 'test3' was added to group 'guest'.
OO
stdout_is(sub { $command->adduser() }, $out, 'adduser');
my $user = Ado::Model::Users->by_login_name($opt->{'--login_name'});
$uid = $user->id;
is($user->login_password, Mojo::Util::sha1_hex('test3--------'), '$user->login_password');
is($user->email, $opt->{'--email'}, '$user->email');
my $user_by_email = Ado::Model::Users->by_email($user->email);
is($user_by_email->id, $uid, 'by_email returns the same user as by_login_name');
} #end direct_usage
$app->dbix->query('DELETE FROM user_group WHERE user_id=?', $uid);
$app->dbix->query('DELETE FROM users WHERE id=?', $uid);
$app->dbix->query('DELETE FROM groups WHERE name=?', $opt->{'--login_name'});
done_testing();
( run in 0.661 second using v1.01-cache-2.11-cpan-39bf76dae61 )