view release on metacpan or search on metacpan
Revision history for Perl module API::Plesk.
2.03 2013-08-19
- removed Try::Tiny
- Changes was formated according to CPAN::Changes::Spec
- fixed tests
2.02 2013-07-10
- Added DNS zone SOA get (Jari Turkia)
- Added secret key -based authentication (by Jari Turkia)
- Fixed warning about uninitialized value
- subdomain added (Zavarykin Eugeny)
- is_connection_error modified (Zavarykin Eugeny)
- fixed warning and bug (Eugen Konkov)
- .gitignore (Akzhan Abdulin)
- fixed bug (Ivan Shamal)
2.01 2012-06-25
- Fixed tests
2.00 2012-06-25
- Improved is_connection_error function
- Added user component (bgmilne)
- Added mock module for testing without sending requests to real api
- Fixed bug in service_plan->get method
2.00_3 2011-08-01
- Added site-alias component
- Fixed add and set webspace
- Added tests
- Fixed site component
- Added sitebuilder component
- Added ftp-user component
- Fixed hosting ftp_password bug
- Added dns component
- Added mail component
- Fixed is_connection_error function
- Added set and del opetations to service-plan
- Added test of service-plan component
- Reformated Changes
- Fixed Pod
2.00_2 2011-05-16
- Fixed xml renderer
2.00_1 20 Apr 2011 10:52:43
- Fully rewrited
- Add Mail/DB/DBUsers/Domains export from Plesk
1.08 2009-07-23
- Patch from Nikolay Shulyakovskiy
1.07 2008-07-31
- Fixed Build.PL (Test::LongString not in prereqs_build list but required )
- Add URI.pm as required module for test stage
1.06 2008-07-13
- More improvements in tests
- Get user domains list by login or client id
1.05 2008-06-15
- Added full support operations with databases and db users
- Fixed errors in pod documentation
1.04 2008-05-29
- Added the ability to fine tuning the abstract_parser sub (for API::PleskExpand)
1.03 2008-05-25
- Small bug fix
1.02 2008-03-22
- Fixed errors in pod documentation
- Fixed bug with keys sorting in Methods.pm (thanks to CPAN testers)
1.01 2008-03-20
- Fixed errors in pod documentation
- Fixed bug in Tariff Plan Change sub (Complex.pm)
1.00 2008-03-18
- The first public release
lib/API/Plesk/Mock.pm view on Meta::CPAN
}
sub xml_http_req { ($_[0]->{mock_response}, $_[0]->{mock_error}) }
1;
__END__
=head1 NAME
API::Plesk::Mock - Module for testing API::Plesk without sending real requests to Plesk API.
=head1 SYNOPSIS
use API::Plesk::Mock;
my $api = API::Plesk::Mock->new(
username => 'user', # required
password => 'pass', # required
url => 'https://127.0.0.1:8443/enterprise/control/agent.php', # required
api_version => '1.6.3.1',
debug => 0,
timeout => 30,
);
$api->mock_response($some_response_xml);
$api->mock_error($some_error_text);
=head1 DESCRIPTION
Module for testing API::Plesk without sending real requests to Plesk API.
=head1 METHODS
=over 3
=item mock_response($xml)
Sets response from Plesk API
=item mock_error($text)
t/TestData.pm view on Meta::CPAN
package TestData;
use Test::More;
use API::Plesk;
#
# Support sub`s and data for tests
#
our @EXPORT = qw(
delete_all_accounts
create_unique_user_data
_compare
gen_passwd
iterate
check_input_data
create_work_logins
t/TestData.pm view on Meta::CPAN
our %online_plesk_valid_params = (
api_version => $ENV{'plesk_api_version'} || '1.5.0.0',
username => $ENV{'plesk_username'} || 'admin',
password => $ENV{'plesk_password'} || 'qwerty',
url => $ENV{'plesk_url'} || $online_plesk_url,
debug => '',
);
# END online configs
our $test_user_data = {
pname => 'pavel',
login => 'pav_perl',
passwd => 'password',
phone => '8 555 1111111',
email => 'nrg@nrg.name',
country => 'RU' # optional field
};
our $stress_test_data = {
pname => [ # 1 .. 60 symbols
'pavel',
'2342134123412',
'dasdf_dasdsa_ADdssd__DASsd',
# '____', error
(join '', 'x' x 60),
'add_(efewf)_(sdfsd)',
],
login => [ # 1 .. 20 symbols,
'pav_perl',
# '___', error
'123546',
#'_sdad',
'nrg.name',
'test.code.google.com',
'yet-another-test',
(join q//, 'x' x 20),
# '_(fsdf)_(fsadf)' error
],
passwd => [
'five!',
(join q//, 'x' x 14),
#'##$^$#&^%!@#$d',
12314321,
'_(sdf)%!Sas',
gen_passwd(),
t/TestData.pm view on Meta::CPAN
my $client = shift;
is_deeply(
$client->Accounts->delete( all => 1)->is_success,
1,
'Delete all accounts'
);
}
# Sub for create accounts online test
sub create_work_logins {
my $plesk_client = shift;
my $data_accumulator_for_online_tests = shift;
my $result_add_by_id = $plesk_client->Accounts->create(
general_info => create_unique_user_data('crby_login'),
'template-name' => $manual_created_template_name
);
like(
$data_accumulator_for_online_tests->{user_id_from_create_with_tmpl_name} =
$result_add_by_id->get_id,
qr/^\d+$/,
'Create account with template name'
);
like(
$data_accumulator_for_online_tests->{user_id_from_create_with_tmpl_id} =
$plesk_client->Accounts->create(
general_info => create_unique_user_data('createby_id'),
'template-id' => $manual_created_template_id
)->get_id,
qr/^\d+$/,
'Create account with template id'
);
}
sub create_unique_user_data {
my $unique_id = shift;
my %result_user_data = %{$test_user_data};
$result_user_data{'pname'} = $result_user_data{'login'} = "testuser_$unique_id";
return \%result_user_data;
}
# "Compare" two hashrefs
# Sub for get info online tests
sub _compare {
my $checked = shift;
my $template = shift;
return '' unless ref $checked eq 'HASH' && ref $template eq 'HASH';
foreach my $key (keys %$template) {
my $key_name_from; # field name in response from Plesk
my $key_name_to; # field name
t/compoment.t view on Meta::CPAN
use warnings;
use Carp;
use Test::More;
use Data::Dumper;
use lib 't';
use TestData;
BEGIN {
plan tests => 10;
use_ok( 'API::Plesk::Component' );
}
my $c = API::Plesk::Component->new(
plesk => API::Plesk->new(%TestData::plesk_valid_params)
);
eval {
$c->check_required_params({ test => 123}, qw(test));
};
ok(!$@);
eval {
$c->check_required_params({ test => 123, test2 => 123}, [qw(test ddd)]);
};
ok(!$@);
eval {
$c->check_required_params({ test => 123}, qw(qqq));
};
like($@, qr/Required field qqq!/);
eval {
$c->check_required_params({ test => 123}, [qw(qqq ff)]);
};
like($@, qr/Required any of this fields: qqq, ff!/);
is_deeply(
$c->sort_params({key => 1, key2 => 2, key3 => 3, key4 => 4}, [qw(key3 key2)], 'key'),
[
{key3 => 3},
{key => 1},
]
);
t/customer.t view on Meta::CPAN
use warnings;
use Carp;
use Test::More;
use Data::Dumper;
use lib 't';
use TestData;
BEGIN {
plan tests => 3;
use_ok('API::Plesk::Customer');
}
my $api = API::Plesk->new( %TestData::plesk_valid_params );
my $customers = API::Plesk::Customer->new( plesk => $api );
isa_ok($customers, 'API::Plesk::Customer');
is_deeply(
t/database.t view on Meta::CPAN
use warnings;
use Carp;
use Test::More;
use Data::Dumper;
use lib qw(lib t);
use TestData;
BEGIN {
plan tests => 6;
use_ok('API::Plesk::Database');
}
my $api = API::Plesk->new( %TestData::plesk_valid_params );
isa_ok($api->database, 'API::Plesk::Database');
is_deeply(
$api->database->add_db(
'webspace-id' => 1,
name => 'test_db',
type => 'MySQL',
bulk_send => 1
),
{
'webspace-id' => 1,
name => 'test_db',
type => 'MySQL',
},
'add_db'
);
is_deeply(
$api->database->del_db(
name => 'test_db',
bulk_send => 1
),
{
filter => {name => 'test_db'},
},
'del_db'
);
is_deeply(
$api->database->add_db_user(
'db-id' => 1,
login => 'test_db_user',
password => '12345',
bulk_send => 1
),
[
{'db-id' => 1},
{login => 'test_db_user'},
{password => '12345'},
],
'add_db_user'
);
is_deeply(
$api->database->del_db_user(
'db-id' => 1,
bulk_send => 1
),
{
use warnings;
use Carp;
use Test::More;
use Data::Dumper;
use lib 't';
use TestData;
BEGIN {
plan tests => 2;
use_ok('API::Plesk::DNS');
}
my $api = API::Plesk->new( %TestData::plesk_valid_params );
isa_ok($api->dns, 'API::Plesk::DNS');
t/ftp_user.t view on Meta::CPAN
use warnings;
use Carp;
use Test::More;
use Data::Dumper;
use lib 't';
use TestData;
BEGIN {
plan tests => 2;
use_ok('API::Plesk::FTPUser');
}
my $api = API::Plesk->new( %TestData::plesk_valid_params );
isa_ok($api->ftp_user, 'API::Plesk::FTPUser');
use warnings;
use Carp;
use Test::More;
use Data::Dumper;
use lib 't';
use TestData;
BEGIN {
plan tests => 4;
use_ok('API::Plesk::Mail');
}
my $api = API::Plesk->new( %TestData::plesk_valid_params );
isa_ok($api->mail, 'API::Plesk::Mail');
is_deeply(
$api->mail->enable(
site_id => 123,
use warnings;
use Carp;
use Test::More;
use Data::Dumper;
use lib qw(t lib);
use TestData;
BEGIN {
plan tests => 6;
use_ok( 'API::Plesk::Mock' );
}
my $api = API::Plesk::Mock->new( %TestData::plesk_valid_params );
isa_ok( $api, 'API::Plesk::Mock', 'STATIC call new' );
$api->mock_response('some xml');
is($api->mock_response, 'some xml');
use warnings;
use Carp;
use Test::More;
use Data::Dumper;
use lib qw(t lib);
use TestData;
BEGIN {
plan tests => 8;
}
BEGIN {
use_ok( 'API::Plesk' );
}
my $api = API::Plesk->new( %TestData::plesk_valid_params );
isa_ok( $api, 'API::Plesk', 'STATIC call new' );
t/response.t view on Meta::CPAN
use Carp;
use Test::More;
use Data::Dumper;
use lib 't';
use TestData;
use XML::Fast;
BEGIN {
plan tests => 17;
use_ok('API::Plesk::Response');
}
isa_ok(
API::Plesk::Response->new(
operator => 'customer',
operation => 'get',
response => {}
),
t/response.t view on Meta::CPAN
response => xml2hash('
<?xml version="1.0" encoding="utf-8"?>
<packet>
<customer>
<get>
<result>
<status>ok</status>
<id>123</id>
<guid>123456</guid>
<data>
<test>qwerty</test>
</data>
</result>
</get>
</customer>
</packet>', array => ['get', 'result'])
);
ok($res->is_success);
is($res->id, 123);
is($res->guid, 123456);
is($res->results->[0]->{status}, 'ok');
is($res->data->[0]->{test}, 'qwerty');
$res = API::Plesk::Response->new(
operator => 'webspace',
operation => 'add',
response => xml2hash(q|
<?xml version="1.0" encoding="UTF-8"?>
<packet version="1.6.3.1"><webspace><add><result><status>error</status><errcode>1018</errcode><errtext>Unable to create hosting on ip 12.34.56.78. Ip address does not exist in client's pool</errtext></result></add></webspace></packet>
|, array => ['add', 'result'])
);
ok(!$res->is_success);
t/service-plan.t view on Meta::CPAN
use warnings;
use Carp;
use Test::More;
use Data::Dumper;
use lib 't';
use TestData;
BEGIN {
plan tests => 5;
use_ok('API::Plesk::ServicePlan');
}
my $api = API::Plesk->new( %TestData::plesk_valid_params );
isa_ok($api->service_plan, 'API::Plesk::ServicePlan');
is_deeply(
$api->service_plan->set(
filter => { name => '123' },
t/service-plan.t view on Meta::CPAN
{ ip_address => '123' },
]
},
},
],
'set'
);
is_deeply(
$api->service_plan->del(
name => 'test.ru',
bulk_send => 1
),
{
filter => {name => 'test.ru'},
},
'del'
);
is_deeply(
$api->service_plan->get(
filter => {
name => 'Host-Lite',
},
'owner-id' => 123,
t/site-alias.t view on Meta::CPAN
use warnings;
use Carp;
use Test::More;
use Data::Dumper;
use lib 't';
use TestData;
BEGIN {
plan tests => 5;
use_ok('API::Plesk::SiteAlias');
}
my $api = API::Plesk->new( %TestData::plesk_valid_params );
isa_ok($api->site_alias, 'API::Plesk::SiteAlias');
is_deeply(
$api->site_alias->create(
'site-id' => 12345,
t/site-alias.t view on Meta::CPAN
),
{
'site-id' => 12345,
name => 'www.ru',
},
'create'
);
is_deeply(
$api->site_alias->set(
filter => {'site-id' => 'test.ru'},
settings => { status => 1 },
bulk_send => 1
),
{
filter => {'site-id' => 'test.ru'},
settings => { status => 1 },
},
'set'
);
is_deeply(
$api->site_alias->del(
'site-id' => 123,
bulk_send => 1
),
use warnings;
use Carp;
use Test::More;
use Data::Dumper;
use lib 't';
use TestData;
BEGIN {
plan tests => 5;
use_ok('API::Plesk::Site');
}
my $api = API::Plesk->new( %TestData::plesk_valid_params );
isa_ok($api->site, 'API::Plesk::Site');
is_deeply(
$api->site->add(
gen_setup => {
name => 'test.ru',
'webspace-name' => 'main.ru',
},
hosting => {
type => 'std_fwd',
ip_address => '12.34.56.78',
dest_url => 'fwd.ru',
},
bulk_send => 1
),
[
{gen_setup => [
{name => 'test.ru'},
{'webspace-name' => 'main.ru'},
]},
{hosting => {
std_fwd => {
dest_url => 'fwd.ru',
ip_address => '12.34.56.78',
}
}}
],
'add'
);
is_deeply(
$api->site->set(
filter => {name => 'test.ru'},
gen_setup => {
name => 'test.ru',
},
hosting => {
type => 'vrt_hst',
ip_address => '12.34.56.78',
ftp_login => 'qwerty',
ftp_password => '12345',
ip_address => '12.34.56.78',
},
bulk_send => 1
),
{
filter => {name => 'test.ru'},
values => [
{gen_setup => {
name => 'test.ru',
}},
{hosting => {
vrt_hst => [
{ property => [
{name => 'ftp_login'},
{value => 'qwerty'}
]},
{ property => [
{name => 'ftp_password'},
{value => '12345'}
]
}}
]
},
'set'
);
is_deeply(
$api->site->del(
name => 'test.ru',
bulk_send => 1
),
{
filter => {name => 'test.ru'},
},
'del'
);
t/sitebuilder.t view on Meta::CPAN
use warnings;
use Carp;
use Test::More;
use Data::Dumper;
use lib 't';
use TestData;
BEGIN {
plan tests => 2;
use_ok('API::Plesk::SiteBuilder');
}
my $api = API::Plesk->new( %TestData::plesk_valid_params );
isa_ok($api->sitebuilder, 'API::Plesk::SiteBuilder');
use warnings;
use Carp;
use Test::More;
use Data::Dumper;
use lib 't';
use TestData;
BEGIN {
plan tests => 3;
use_ok('API::Plesk::User');
}
my $api = API::Plesk->new( %TestData::plesk_valid_params );
my $users = $api->user;
isa_ok($users, 'API::Plesk::User');
is_deeply(
t/webspace.t view on Meta::CPAN
use warnings;
use Carp;
use Test::More;
use Data::Dumper;
use lib 't';
use TestData;
BEGIN {
plan tests => 7;
use_ok('API::Plesk::Webspace');
}
my $api = API::Plesk->new( %TestData::plesk_valid_params );
isa_ok($api->webspace, 'API::Plesk::Webspace');
is_deeply(
$api->webspace->add(
'plan-name' => '123',
t/webuser.t view on Meta::CPAN
use warnings;
use Carp;
use Test::More;
use Data::Dumper;
use lib 't';
use TestData;
BEGIN {
plan tests => 2;
use_ok('API::Plesk::WebUser');
}
my $api = API::Plesk->new( %TestData::plesk_valid_params );
isa_ok($api->webuser, 'API::Plesk::WebUser');