⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.177
Server IP:
50.6.168.112
Server:
Linux server-617809.webnetzimbabwe.com 5.14.0-570.25.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jul 9 04:57:09 EDT 2025 x86_64
Server Software:
Apache
PHP Version:
8.4.10
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
home
/
.cpan
/
build
/
cPanel-PublicAPI-2.8-0
/
t
/
View File Name :
01-api-format.t
#!/usr/bin/perl use strict; use warnings; use Test::More; # last test to print use lib 't/lib'; use PubApiTest (); my $pubapi = PubApiTest->new( 'ip' => '127.0.0.1', 'usessl' => 1, 'user' => 'someuser', 'pass' => 'somepass', 'error_log' => '/dev/null', ); # test WHM $PubApiTest::test_config = { 'service' => 'whostmgr', 'uri' => '/json-api/loadavg', 'method' => 'POST', 'call' => 'whm_api-noform', 'return_format' => 'json', }; my $res = $pubapi->whm_api('loadavg'); is( ref $res, 'HASH', 'Returned format ok for ' . $PubApiTest::test_config->{'call'} ); $PubApiTest::test_config->{'test_formdata'} = 'hash'; $PubApiTest::test_config->{'formdata'} = { 'key' => 'value', 'api.version' => 1 }; $PubApiTest::test_config->{'call'} = 'whm_api-refform'; $res = $pubapi->whm_api( 'loadavg', { 'key' => 'value' } ); is( ref $res, 'HASH', 'Returned format ok for ' . $PubApiTest::test_config->{'call'} ); $PubApiTest::test_config->{'test_formdata'} = 'hash'; $PubApiTest::test_config->{'formdata'} = { 'key' => 'value', 'api.version' => 0 }; $PubApiTest::test_config->{'call'} = 'whm_api-refapi0'; $res = $pubapi->whm_api( 'loadavg', $PubApiTest::test_config->{'formdata'} ); is( ref $res, 'HASH', 'Returned format ok for ' . $PubApiTest::test_config->{'call'} ); $PubApiTest::test_config->{'test_formdata'} = 'hash'; $PubApiTest::test_config->{'formdata'} = { 'key' => 'value', 'api.version' => 1 }; $PubApiTest::test_config->{'call'} = 'whm_api-refapi1'; $res = $pubapi->whm_api( 'loadavg', $PubApiTest::test_config->{'formdata'} ); is( ref $res, 'HASH', 'Returned format ok for ' . $PubApiTest::test_config->{'call'} ); $PubApiTest::test_config->{'test_formdata'} = 'string'; $PubApiTest::test_config->{'formdata'} = 'api.version=1&one&two'; $PubApiTest::test_config->{'call'} = 'whm_api-stringform'; $res = $pubapi->whm_api( 'loadavg', 'one&two' ); is( ref $res, 'HASH', 'Returned format ok for ' . $PubApiTest::test_config->{'call'} ); $PubApiTest::test_config->{'test_formdata'} = 'string'; $PubApiTest::test_config->{'formdata'} = 'api.version=0&one&two'; $PubApiTest::test_config->{'call'} = 'whm_api-stringapi0'; $res = $pubapi->whm_api( 'loadavg', 'api.version=0&one&two' ); is( ref $res, 'HASH', 'Returned format ok for ' . $PubApiTest::test_config->{'call'} ); delete $PubApiTest::test_config->{'formdata'}; delete $PubApiTest::test_config->{'test_formdata'}; $PubApiTest::test_config->{'return_format'} = 'json'; $res = $pubapi->whm_api( 'loadavg', undef, 'json' ); is( $res, '{"something":"somethinglese"}', 'raw JSON data returned raw correctly from whm_api' ); $PubApiTest::test_config->{'test_format'} = 'xml'; $PubApiTest::test_config->{'return_format'} = 'xml'; $PubApiTest::test_config->{'uri'} = '/xml-api/loadavg'; $res = $pubapi->whm_api( 'loadavg', undef, 'xml' ); is( $res, '
somethingelse
', 'raw XML data returned raw correctly from whm_api' ); # test API1 $PubApiTest::test_config = { 'service' => 'cpanel', 'uri' => '/json-api/cpanel', 'method' => 'GET', 'call' => 'api1-noargs', 'return_format' => 'json', 'test_formdata' => 'hash', }; # Without arguments $PubApiTest::test_config->{'formdata'} = { 'cpanel_jsonapi_module' => 'Test', 'cpanel_jsonapi_func' => 'test', 'cpanel_jsonapi_apiversion' => 1, }; my $call_config = { 'module' => 'Test', 'func' => 'test', }; $res = $pubapi->cpanel_api1_request( 'cpanel', $call_config ); is( ref $res, 'HASH', 'Returned format ok for ' . $PubApiTest::test_config->{'call'} ); # with arguments $PubApiTest::test_config->{'call'} = 'api1-args'; $PubApiTest::test_config->{'formdata'}->{'arg-0'} = 'one'; $PubApiTest::test_config->{'formdata'}->{'arg-1'} = 'two'; $res = $pubapi->cpanel_api1_request( 'cpanel', $call_config, [ 'one', 'two' ] ); is( ref $res, 'HASH', 'Returned format ok for ' . $PubApiTest::test_config->{'call'} ); # WHM # with arguments $PubApiTest::test_config->{'call'} = 'whm-api1-args'; $PubApiTest::test_config->{'formdata'}->{'cpanel_jsonapi_user'} = 'someuser'; $PubApiTest::test_config->{'service'} = 'whostmgr'; $call_config->{'user'} = 'someuser'; $res = $pubapi->cpanel_api1_request( 'whostmgr', $call_config, [ 'one', 'two' ] ); is( ref $res, 'HASH', 'Returned format ok for ' . $PubApiTest::test_config->{'call'} ); # without arguments $PubApiTest::test_config->{'call'} = 'whm-api1-noargs'; delete $PubApiTest::test_config->{'formdata'}->{'arg-1'}; delete $PubApiTest::test_config->{'formdata'}->{'arg-0'}; $res = $pubapi->cpanel_api1_request( 'whostmgr', $call_config ); is( ref $res, 'HASH', 'Returned format ok for ' . $PubApiTest::test_config->{'call'} ); # Test JSON $PubApiTest::test_config->{'call'} = 'whm-api1-rawjson'; $PubApiTest::test_config->{'return_format'} = 'json'; $res = $pubapi->cpanel_api1_request( 'whostmgr', $call_config, undef, 'json' ); is( $res, '{"something":"somethinglese"}', 'raw JSON data returned raw correctly from cpanel_api1_request' ); # Test XML $PubApiTest::test_config->{'call'} = 'whm-api1-rawxml'; $PubApiTest::test_config->{'test_format'} = 'xml'; $PubApiTest::test_config->{'return_format'} = 'xml'; $PubApiTest::test_config->{'uri'} = '/xml-api/cpanel'; $PubApiTest::test_config->{'formdata'} = { 'cpanel_xmlapi_user' => 'someuser', 'cpanel_xmlapi_module' => 'Test', 'cpanel_xmlapi_func' => 'test', 'cpanel_xmlapi_apiversion' => '1', }; $res = $pubapi->cpanel_api1_request( 'whostmgr', $call_config, [], 'xml' ); is( $res, '
somethingelse
', 'raw XML data returned raw correctly from cpanel_api1_request' ); # API2 $PubApiTest::test_config = { 'service' => 'cpanel', 'uri' => '/json-api/cpanel', 'method' => 'GET', 'call' => 'api2-noargs', 'return_format' => 'json', 'test_formdata' => 'hash', }; $PubApiTest::test_config->{'formdata'} = { 'cpanel_jsonapi_func' => 'test', 'cpanel_jsonapi_module' => 'Api2Test', 'cpanel_jsonapi_apiversion' => '2', }; $call_config = { 'module' => 'Api2Test', 'func' => 'test', }; # without args $res = $pubapi->cpanel_api2_request( 'cpanel', $call_config ); is( ref $res, 'HASH', 'Returned format ok for ' . $PubApiTest::test_config->{'call'} ); # with args $PubApiTest::test_config->{'call'} = 'whm-api2-args'; my $args = { 'testing' => 'one two three', 'earth below' => 'us', }; foreach my $key ( keys %{$args} ) { $PubApiTest::test_config->{'formdata'}->{$key} = $args->{$key}; } $res = $pubapi->cpanel_api2_request( 'cpanel', $call_config, $args ); is( ref $res, 'HASH', 'Returned format ok for ' . $PubApiTest::test_config->{'call'} ); # XML/JSON response tests delete $PubApiTest::test_config->{'formdata'}->{'testing'}; delete $PubApiTest::test_config->{'formdata'}->{'earth below'}; $PubApiTest::test_config->{'call'} = 'api2-rawjson'; $res = $pubapi->cpanel_api2_request( 'cpanel', $call_config, undef, 'json' ); is( $res, '{"something":"somethinglese"}', 'raw JSON data returned raw correctly from cpanel_api2_request' ); #xml $PubApiTest::test_config->{'call'} = 'api2-rawxml'; $PubApiTest::test_config->{'formdata'} = { 'cpanel_xmlapi_module' => 'Api2Test', 'cpanel_xmlapi_func' => 'test', 'cpanel_xmlapi_apiversion' => '2' }; $PubApiTest::test_config->{'format'} = 'xml'; $PubApiTest::test_config->{'return_format'} = 'xml'; $PubApiTest::test_config->{'uri'} = '/xml-api/cpanel'; $res = $pubapi->cpanel_api2_request( 'cpanel', $call_config, undef, 'xml' ); is( $res, '
somethingelse
', 'raw XML data returned raw correctly from cpanel_api2_request' ); # test call failure situations $PubApiTest::test_config->{'badcall'} = 'whmapi'; $pubapi->whm_api('version'); like( $pubapi->{'error'}, qr/cPanel::PublicAPI::whm_api was called with the invalid API call of/, 'whm_api invalid call checking works' ); $PubApiTest::test_config->{'badcall'} = 'cpanelapi1'; $pubapi->cpanel_api1_request( 'cpanel', { 'module' => 'test', 'func' => 'test' } ); like( $pubapi->{'error'}, qr/cPanel::PublicAPI::cpanel_api1_request was called with the invalid API1 call of:/, 'cpanel_api1_request invalid call checking works' ); $PubApiTest::test_config->{'badcall'} = 'cpanelapi2'; $pubapi->cpanel_api2_request( 'cpanel', { 'module' => 'test', 'func' => 'test' } ); like( $pubapi->{'error'}, qr/cPanel::PublicAPI::cpanel_api2_request was called with the invalid API2 call of:/, 'cpanel_api1_request invalid call checking works' ); done_testing();