API-CPanel
view release on metacpan or search on metacpan
t/01-test.t view on Meta::CPAN
#!/usr/bin/perl -w
use strict;
use warnings;
use lib qw( ./lib );
use Data::Dumper;
our $ONLINE;
BEGIN {
#$ENV{auth_user} = 'restest';
#$ENV{auth_passwd} = '123';
#$ENV{host} = '192.168.123.1';
$ONLINE = $ENV{auth_user} && $ENV{auth_passwd} && $ENV{host};
}
my $manipulate_user = 'zsezse';
use Test::More tests => $ONLINE ? 61 : 61;
my $test_host = $ENV{host} || '127.0.0.1';
ok(1, 'Test OK');
use_ok('API::CPanel');
$a = 'refs';
is( refs( undef ), '', $a);
is( refs( {} ), 'HASH', $a );
is( refs( [] ), 'ARRAY', $a );
is( refs( sub {} ), 'CODE', $a );
is( refs( \$a ), 'SCALAR', $a );
$a = 'is_success';
ok(! is_success(), $a);
ok(! is_success( { error => {}, data => {} } ), $a);
ok(! is_success( { data => {} } ), $a);
ok(! is_success( { } ), $a);
ok( is_success( { status => 1 } ), $a);
$a = 'filter_hash';
is_deeply( API::CPanel::filter_hash( { }, [ ]), {}, $a );
is_deeply( API::CPanel::filter_hash( { aaa => 555, bbb => 111 }, [ 'aaa' ]), { aaa => 555 }, $a );
is_deeply( API::CPanel::filter_hash( { aaa => 555, bbb => 111 }, [ ]), { }, $a );
is_deeply( API::CPanel::filter_hash( { }, [ 'aaa' ]), { }, $a );
$a = 'mk_query_string';
is( API::CPanel::mk_query_string( { } ), '', $a );
is( API::CPanel::mk_query_string( '' ), '', $a );
is( API::CPanel::mk_query_string( undef ), '', $a );
is( API::CPanel::mk_query_string( { aaa => 111, bbb => 222 } ), 'aaa=111&bbb=222', $a );
is( API::CPanel::mk_query_string( { bbb => 222, aaa => 111 } ), 'aaa=111&bbb=222', $a );
is( API::CPanel::mk_query_string( [ ] ), '', $a );
is( API::CPanel::mk_query_string( { dddd => 'dfdf' } ), 'dddd=dfdf', $a );
my $kill_start_end_slashes_test = {
'////aaa////' => 'aaa',
'bbb////' => 'bbb',
'////ccc' => 'ccc',
'' => '',
};
for (keys %$kill_start_end_slashes_test) {
is(
API::CPanel::kill_start_end_slashes ($_),
$kill_start_end_slashes_test->{$_},
'kill_start_end_slashes'
);
}
$a = 'mk_full_query_string';
is( API::CPanel::mk_full_query_string( {
host => $test_host,
} ),
'',
$a
);
is( API::CPanel::mk_full_query_string( {
host => $test_host,
allow_http => 1,
path => 'xml-api',
} ),
'',
$a
);
is( API::CPanel::mk_full_query_string( {
host => $test_host,
allow_http => 1,
param1 => 'val1',
param2 => 'val2',
func => 'test',
} ),
"http://$test_host:2087/xml-api/test?param1=val1¶m2=val2",
$a
);
is( API::CPanel::mk_full_query_string( {
host => $test_host,
param1 => 'val1',
param2 => 'val2',
func => 'test',
} ),
"https://$test_host:2087/xml-api/test?param1=val1¶m2=val2",
$a
);
$a = 'mk_query_to_server';
is( API::CPanel::mk_query_to_server( '' ), '', $a );
my %correct_params = (
auth_user => $ENV{auth_user} || 'fake',
auth_passwd => $ENV{auth_passwd} || 'fake_pass',
host => $test_host,
);
$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<listips>
<result>
<active>1</active>
<dedicated>0</dedicated>
<if>eth0</if>
<ip>192.168.123.208</ip>
<mainaddr>1</mainaddr>
<netmask>255.255.255.0</netmask>
<network>192.168.123.0</network>
<removable>0</removable>
<used>1</used>
</result>
<result>
<active>1</active>
<dedicated>1</dedicated>
<if>eth0:1</if>
<ip>192.168.123.222</ip>
<mainaddr>0</mainaddr>
<netmask>255.255.255.0</netmask>
<network>192.168.123.0</network>
<removable>1</removable>
<used>0</used>
</result>
<result>
<active>1</active>
<dedicated>1</dedicated>
<if>virbr0</if>
<ip>192.168.122.1</ip>
<mainaddr>0</mainaddr>
<netmask>255.255.255.0</netmask>
<network>192.168.122.0</network>
<removable>1</removable>
<used>0</used>
</result>
</listips>
THEEND
#$API::CPanel::DEBUG=1;
my $ip_list = API::CPanel::Ip::list(
{
%correct_params,
}
);
my $main_shared_ip = $ip_list->[0];
#diag "Get ips from panel: " . Dumper( $ip_list ) . scalar @$ip_list;
ok($ip_list && ref $ip_list eq 'ARRAY' && scalar @$ip_list, 'API::CPanel::Ip::list');
#$API::CPanel::DEBUG=0;
$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<createacct>
<result>
<options>
<ip>192.168.123.208</ip>
<nameserver>ns1.centostest.ru</nameserver>
<nameserver2>ns2.centostest.ru</nameserver2>
<nameserver3></nameserver3>
<nameserver4></nameserver4>
<nameservera></nameservera>
<nameservera2></nameservera2>
<nameservera3></nameservera3>
<nameservera4></nameservera4>
<nameserverentry></nameserverentry>
<nameserverentry2></nameserverentry2>
<nameserverentry3></nameserverentry3>
<nameserverentry4></nameserverentry4>
<package>default</package>
</options>
<rawout>
</rawout>
<status>1</status>
<statusmsg>Account Creation Ok</statusmsg>
</result>
</createacct>
THEEND
my $result = API::CPanel::User::create(
{
%correct_params,
username => $manipulate_user,
domain => 'zse1.ru',
password => 'sdfdsGdhd',
maxsql => 11,
}
);
is( $result, 1, 'API::CPanel::User::create' );
$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<createacct>
<result>
<options></options>
<rawout></rawout>
<status>0</status>
<statusmsg>Sorry, a group for that username already exists.</statusmsg>
</result>
</createacct>
THEEND
$result = API::CPanel::User::create(
{
%correct_params,
username => $manipulate_user,
password => 'sdfdsGdhd',
domain => 'zse1.ru',
}
);
is( $result, '', 'API::CPanel::User::create repeat');
$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<passwd>
<passwd>
<rawout>Changing password for zsezse
Password for zsezse has been changed
Updating ftp passwords for zsezse
Ftp password files updated.
Ftp vhost passwords synced
t/01-test.t view on Meta::CPAN
<maxlst>unlimited</maxlst>
<maxparked>*unknown*</maxparked>
<maxpop>unlimited</maxpop>
<maxsql>unlimited</maxsql>
<maxsub>unlimited</maxsub>
<owner>root</owner>
<partition>home</partition>
<plan>default</plan>
<shell>/bin/bash</shell>
<startdate>10 Mar 22 16:21</startdate>
<suspended>0</suspended>
<suspendreason>not suspended</suspendreason>
<suspendtime></suspendtime>
<theme>x3</theme>
<unix_startdate>1269249671</unix_startdate>
<user>zseru</user>
</acct>
<status>1</status>
<statusmsg>Ok</statusmsg>
</listaccts>
THEEND
my $active_count = API::CPanel::User::active_user_count(
{
%correct_params,
}
);
ok( $result =~ /^\d+$/ , 'API::CPanel::User::active_user_count');
$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<suspendacct>
<result>
<status>1</status>
<statusmsg><script>if (self[]) { clear_ui_status(); }</script>
Changing Shell to /bin/false...Changing shell for zseasd.
Warning: "/bin/false" is not listed in /etc/shells
Shell changed.
Done
Locking Password...Locking password for user zseasd.
passwd: Success
Done
Suspending mysql users
Notification => root\@localhost via EMAIL [level => 3]
Using Quota v3 Support
Suspended document root /home/zseasd/public_html
Using Quota v3 Support
Suspending FTP accounts...
Updating ftp passwords for zseasd
Ftp password files updated.
Ftp vhost passwords synced
zseasds account has been suspended
</statusmsg>
</result>
</suspendacct>
THEEND
$result = API::CPanel::User::disable(
{
%correct_params,
user => $manipulate_user,
reason => 'test reason1',
}
);
is( $result, 1, 'API::CPanel::User::disable');
$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<listaccts>
<acct>
<disklimit>unlimited</disklimit>
<diskused>0M</diskused>
<domain>qewqe.ru</domain>
<email>*unknown*</email>
<ip>192.168.123.208</ip>
<maxaddons>*unknown*</maxaddons>
<maxftp>unlimited</maxftp>
<maxlst>unlimited</maxlst>
<maxparked>*unknown*</maxparked>
<maxpop>unlimited</maxpop>
<maxsql>unlimited</maxsql>
<maxsub>unlimited</maxsub>
<owner>root</owner>
<partition>home</partition>
<plan>default</plan>
<shell>/bin/bash</shell>
<startdate>10 Mar 22 16:18</startdate>
<suspended>0</suspended>
<suspendreason>not suspended</suspendreason>
<suspendtime></suspendtime>
<theme>x3</theme>
<unix_startdate>1269249522</unix_startdate>
<user>qewqeru</user>
</acct>
<acct>
<disklimit>unlimited</disklimit>
<diskused>0M</diskused>
<domain>zse1.ru</domain>
<email>*unknown*</email>
<ip>192.168.123.208</ip>
<maxaddons>*unknown*</maxaddons>
<maxftp>unlimited</maxftp>
<maxlst>unlimited</maxlst>
<maxparked>*unknown*</maxparked>
<maxpop>unlimited</maxpop>
<maxsql>14</maxsql>
<maxsub>unlimited</maxsub>
<owner>root</owner>
<partition>home</partition>
<plan>default</plan>
<shell>/bin/false</shell>
<startdate>10 Mar 24 11:55</startdate>
<suspended>1</suspended>
<suspendreason>test reason1</suspendreason>
<suspendtime>1269406521</suspendtime>
<theme>x</theme>
<unix_startdate>1269406518</unix_startdate>
<user>zseasd</user>
</acct>
<acct>
<disklimit>unlimited</disklimit>
<diskused>0M</diskused>
<domain>zse.ru</domain>
<email>*unknown*</email>
<ip>192.168.123.208</ip>
<maxaddons>*unknown*</maxaddons>
<maxftp>unlimited</maxftp>
<maxlst>unlimited</maxlst>
<maxparked>*unknown*</maxparked>
<maxpop>unlimited</maxpop>
<maxsql>unlimited</maxsql>
<maxsub>unlimited</maxsub>
<owner>root</owner>
<partition>home</partition>
<plan>default</plan>
<shell>/bin/bash</shell>
<startdate>10 Mar 22 16:21</startdate>
<suspended>0</suspended>
<suspendreason>not suspended</suspendreason>
<suspendtime></suspendtime>
<theme>x3</theme>
<unix_startdate>1269249671</unix_startdate>
<user>zseru</user>
</acct>
<status>1</status>
<statusmsg>Ok</statusmsg>
</listaccts>
THEEND
$result = API::CPanel::User::active_user_count(
{
%correct_params,
}
);
is( $result, $active_count - 1, 'API::CPanel::User::active_user_count');
$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<suspendacct>
<result>
<status>1</status>
<statusmsg><script>if (self['clear_ui_status']) { clear_ui_status(); }</script>
Changing Shell to /bin/false...Changing shell for zseasd.
Warning: "/bin/false" is not listed in /etc/shells
Shell not changed.
Done
Locking Password...Locking password for user zseasd.
passwd: Success
Done
Suspending mysql users
Notification => root\@localhost via EMAIL [level => 3]
Account Already Suspended
</statusmsg>
</result>
</suspendacct>
THEEND
$result = API::CPanel::User::disable(
{
%correct_params,
user => $manipulate_user,
reason => 'test reason2',
}
);
is( $result, 1, 'API::CPanel::User::disable repeat');
$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<unsuspendacct>
<result>
<status>1</status>
<statusmsg><script>if (self['clear_ui_status']) { clear_ui_status(); }</script>
Changing shell for zseasd.
Shell changed.
Unlocking password for user zseasd.
passwd: Success.
Unsuspending FTP accounts...
Updating ftp passwords for zseasd
Ftp password files updated.
Ftp vhost passwords synced
zseasds account is now active
Unsuspending mysql users
Notification => root\@localhost via EMAIL [level => 3]
</statusmsg>
</result>
</unsuspendacct>
THEEND
$result = API::CPanel::User::enable(
{
%correct_params,
user => $manipulate_user,
}
);
is( $result, 1, 'API::CPanel::User::enable');
$result = API::CPanel::User::enable(
{
%correct_params,
user => $manipulate_user,
}
);
is( $result, 1, 'API::CPanel::User::enable repeat');
$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<listaccts>
<acct>
<disklimit>unlimited</disklimit>
<diskused>0M</diskused>
<domain>qewqe.ru</domain>
<email>*unknown*</email>
<ip>192.168.123.208</ip>
<maxaddons>*unknown*</maxaddons>
<maxftp>unlimited</maxftp>
<maxlst>unlimited</maxlst>
<maxparked>*unknown*</maxparked>
<maxpop>unlimited</maxpop>
<maxsql>unlimited</maxsql>
<maxsub>unlimited</maxsub>
<owner>root</owner>
<partition>home</partition>
<plan>default</plan>
<shell>/bin/bash</shell>
t/01-test.t view on Meta::CPAN
...DoneRunning post removal scripts (/scripts/legacypostkillacct, /scripts/postkillacct)......DoneAccount Removal Complete!!!...zseasd account removed...Done</rawout>
<status>1</status>
<statusmsg>zseasd account removed</statusmsg>
</result>
</removeacct>
THEEND
$result = API::CPanel::User::delete(
{
%correct_params,
user => $manipulate_user,
}
);
is( $result, 1, 'API::CPanel::User::delete');
$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<removeacct>
<result>
<rawout></rawout>
<status>0</status>
<statusmsg>Warning!.. system user zseasd does not exist!
</statusmsg>
</result>
</removeacct>
THEEND
$result = API::CPanel::User::delete(
{
%correct_params,
user => $manipulate_user,
}
);
is( $result, '', 'API::CPanel::User::delete repeat');
#diag Dumper( $result );
# Mysql òåñòû
$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<?xml version="1.0" ?>
<cpanelresult>
<module>Mysql</module>
<func>adduser</func>
<type>event</type>
<source>internal</source>
<apiversion>1</apiversion>
<data>
<result></result>
</data>
<event>
<result>1</result>
</event>
</cpanelresult>
THEEND
$result = API::CPanel::Mysql::adduser(
{
%correct_params,
do_as_user => 'zsezse5',
username => 'test13',
password => 'test13pass',
}
);
is( $result, 1, 'API::CPanel::Mysql::adduser');
$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<?xml version="1.0" ?>
<cpanelresult>
<module>Mysql</module>
<func>adddb</func>
<type>event</type>
<source>internal</source>
<apiversion>1</apiversion>
<data>
<result></result>
</data>
<event>
<result>1</result>
</event>
</cpanelresult>
THEEND
$result = API::CPanel::Mysql::adddb(
{
%correct_params,
do_as_user => 'zsezse5',
dbname => 'default',
}
);
is( $result, 1, 'API::CPanel::Mysql::adddb');
$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<?xml version="1.0" ?>
<cpanelresult>
<module>Mysql</module>
<func>adduserdb</func>
<type>event</type>
<source>internal</source>
<apiversion>1</apiversion>
<data>
<result></result>
</data>
<event>
<result>1</result>
</event>
</cpanelresult>
THEEND
$result = API::CPanel::Mysql::grant_perms(
{
%correct_params,
do_as_user => 'zsezse5',
dbname => 'zsezse5_default',
dbuser => 'zsezse5_test13',
perms_list => 'all',
}
);
is( $result, 1, 'API::CPanel::Mysql::grant_perms');
$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<?xml version="1.0" ?>
<cpanelresult>
<apiversion>2</apiversion>
<data>
<reason>
aaaaa.asdasd.ru was successfully parked on top of aaaaa.x
</reason>
<result>1</result>
</data>
<event>
<result>1</result>
</event>
<func>addaddondomain</func>
<module>AddonDomain</module>
</cpanelresult>
THEEND
my $addondomain = 'ssssss.ru';
my $subdomain = 'ssssss';
$result = API::CPanel::Domain::add_addon_domain(
{
%correct_params,
do_as_user => 'zsezse5',
dir => "public_html/$addondomain",
newdomain => $addondomain,
pass => 'asdsadasdsad',
subdomain => $subdomain,
}
);
is( $result->{data}->{result}, 1 , 'API::CPanel::Domain::add_addon_domain');
( run in 1.415 second using v1.01-cache-2.11-cpan-cd2fffc590a )