305 lines
8.9 KiB
PHP
305 lines
8.9 KiB
PHP
<?php
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
use Froxlor\Api\Commands\Admins;
|
|
use Froxlor\Api\Commands\Customers;
|
|
use Froxlor\Api\Commands\IpsAndPorts;
|
|
|
|
/**
|
|
*
|
|
* @covers \Froxlor\Api\ApiCommand
|
|
* @covers \Froxlor\Api\ApiParameter
|
|
* @covers \Froxlor\Api\Commands\IpsAndPorts
|
|
*/
|
|
class IpsAndPortsTest extends TestCase
|
|
{
|
|
|
|
public function testAdminIpsAndPortsList()
|
|
{
|
|
global $admin_userdata;
|
|
$json_result = IpsAndPorts::getLocal($admin_userdata)->listing();
|
|
$result = json_decode($json_result, true)['data'];
|
|
$this->assertEquals(2, $result['count']);
|
|
$this->assertEquals('82.149.225.46', $result['list'][0]['ip']);
|
|
|
|
$json_result = IpsAndPorts::getLocal($admin_userdata)->listingCount();
|
|
$result = json_decode($json_result, true)['data'];
|
|
$this->assertEquals(2, $result);
|
|
}
|
|
|
|
public function testResellerIpsAndPortsListHasNone()
|
|
{
|
|
global $admin_userdata;
|
|
// update reseller to allow no ip access
|
|
$json_result = Admins::getLocal($admin_userdata, array(
|
|
'loginname' => 'reseller',
|
|
'ipaddress' => array()
|
|
))->update();
|
|
$reseller_userdata = json_decode($json_result, true)['data'];
|
|
$reseller_userdata['adminsession'] = 1;
|
|
$this->expectExceptionCode(403);
|
|
$this->expectExceptionMessage("Not allowed to execute given command.");
|
|
$json_result = IpsAndPorts::getLocal($reseller_userdata)->listing();
|
|
}
|
|
|
|
public function testAdminIpsAndPortsAdd()
|
|
{
|
|
global $admin_userdata;
|
|
$data = [
|
|
'ip' => '82.149.225.47'
|
|
];
|
|
$json_result = IpsAndPorts::getLocal($admin_userdata, $data)->add();
|
|
$result = json_decode($json_result, true)['data'];
|
|
$this->assertEquals(3, $result['id']);
|
|
$this->assertEquals(80, $result['port']);
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @depends testAdminIpsAndPortsAdd
|
|
*/
|
|
public function testAdminIpsAndPortsAddExists()
|
|
{
|
|
global $admin_userdata;
|
|
$this->expectExceptionMessage("This IP/Port combination already exists.");
|
|
$data = [
|
|
'ip' => '82.149.225.47'
|
|
];
|
|
IpsAndPorts::getLocal($admin_userdata, $data)->add();
|
|
}
|
|
|
|
public function testAdminIpsAndPortsAddIpv6()
|
|
{
|
|
global $admin_userdata;
|
|
$data = [
|
|
'ip' => '2a01:440:1:12:82:149:225:46',
|
|
'docroot' => '/var/www/html'
|
|
];
|
|
$json_result = IpsAndPorts::getLocal($admin_userdata, $data)->add();
|
|
$result = json_decode($json_result, true)['data'];
|
|
$this->assertEquals(4, $result['id']);
|
|
$this->assertEquals('/var/www/html/', $result['docroot']);
|
|
}
|
|
|
|
public function testAdminIpsAndPortsGetNotFound()
|
|
{
|
|
global $admin_userdata;
|
|
$this->expectExceptionCode(404);
|
|
$this->expectExceptionMessage("IP/port with id #999 could not be found");
|
|
IpsAndPorts::getLocal($admin_userdata, array(
|
|
'id' => 999
|
|
))->get();
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @depends testAdminIpsAndPortsAdd
|
|
*/
|
|
public function testResellerIpsAndPortsList()
|
|
{
|
|
global $admin_userdata;
|
|
// update reseller to allow ip access to ip id #3
|
|
$json_result = Admins::getLocal($admin_userdata, array(
|
|
'loginname' => 'reseller',
|
|
'ipaddress' => array(
|
|
3
|
|
)
|
|
))->update();
|
|
$reseller_userdata = json_decode($json_result, true)['data'];
|
|
$reseller_userdata['adminsession'] = 1;
|
|
$json_result = IpsAndPorts::getLocal($reseller_userdata)->listing();
|
|
$result = json_decode($json_result, true)['data'];
|
|
$this->assertEquals(1, $result['count']);
|
|
$this->assertEquals('82.149.225.47', $result['list'][0]['ip']);
|
|
|
|
$json_result = IpsAndPorts::getLocal($reseller_userdata)->listingCount();
|
|
$result = json_decode($json_result, true)['data'];
|
|
$this->assertEquals(1, $result);
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @depends testResellerIpsAndPortsList
|
|
*/
|
|
public function testResellerIpsAndPortsGet()
|
|
{
|
|
global $admin_userdata;
|
|
// update reseller to allow ip access to ip id #2
|
|
$json_result = Admins::getLocal($admin_userdata, array(
|
|
'loginname' => 'reseller'
|
|
))->get();
|
|
$reseller_userdata = json_decode($json_result, true)['data'];
|
|
$reseller_userdata['adminsession'] = 1;
|
|
$json_result = IpsAndPorts::getLocal($reseller_userdata, array(
|
|
'id' => 3
|
|
))->get();
|
|
$result = json_decode($json_result, true)['data'];
|
|
$this->assertEquals('82.149.225.47', $result['ip']);
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @depends testResellerIpsAndPortsList
|
|
*/
|
|
public function testResellerIpsAndPortsGetRestrictedNotOwned()
|
|
{
|
|
global $admin_userdata;
|
|
// get reseller
|
|
$json_result = Admins::getLocal($admin_userdata, array(
|
|
'loginname' => 'reseller'
|
|
))->get();
|
|
$reseller_userdata = json_decode($json_result, true)['data'];
|
|
$reseller_userdata['adminsession'] = 1;
|
|
$this->expectExceptionCode(405);
|
|
$this->expectExceptionMessage("You cannot access this resource");
|
|
IpsAndPorts::getLocal($reseller_userdata, array(
|
|
'id' => 1
|
|
))->get();
|
|
}
|
|
|
|
public function testResellerIpsAndPortsAdd()
|
|
{
|
|
global $admin_userdata;
|
|
// get reseller
|
|
$json_result = Admins::getLocal($admin_userdata, array(
|
|
'loginname' => 'reseller'
|
|
))->get();
|
|
$reseller_userdata = json_decode($json_result, true)['data'];
|
|
$reseller_userdata['adminsession'] = 1;
|
|
$this->expectExceptionCode(403);
|
|
$this->expectExceptionMessage("Not allowed to execute given command.");
|
|
$data = [
|
|
'ip' => '82.149.225.48'
|
|
];
|
|
IpsAndPorts::getLocal($reseller_userdata, $data)->add();
|
|
}
|
|
|
|
public function testCustomerIpsAndPortsGetNotAllowed()
|
|
{
|
|
global $admin_userdata;
|
|
// get customer
|
|
$json_result = Customers::getLocal($admin_userdata, array(
|
|
'loginname' => 'test1'
|
|
))->get();
|
|
$customer_userdata = json_decode($json_result, true)['data'];
|
|
$this->expectExceptionCode(403);
|
|
$this->expectExceptionMessage("Not allowed to execute given command.");
|
|
IpsAndPorts::getLocal($customer_userdata, array(
|
|
'id' => 1
|
|
))->get();
|
|
}
|
|
|
|
public function testAdminIpsAndPortsEdit()
|
|
{
|
|
global $admin_userdata;
|
|
$data = [
|
|
'id' => 1,
|
|
'listen_statement' => 1,
|
|
'docroot' => '/var/www/html'
|
|
];
|
|
$json_result = IpsAndPorts::getLocal($admin_userdata, $data)->update();
|
|
$result = json_decode($json_result, true)['data'];
|
|
$this->assertEquals(1, $result['listen_statement']);
|
|
$this->assertEquals('/var/www/html/', $result['docroot']);
|
|
}
|
|
|
|
public function testResellerIpsAndPortsEditNotAllowed()
|
|
{
|
|
global $admin_userdata;
|
|
// get reseller
|
|
$json_result = Admins::getLocal($admin_userdata, array(
|
|
'loginname' => 'reseller'
|
|
))->get();
|
|
$reseller_userdata = json_decode($json_result, true)['data'];
|
|
$reseller_userdata['adminsession'] = 1;
|
|
$data = [
|
|
'id' => 1,
|
|
'listen_statement' => 0
|
|
];
|
|
$this->expectExceptionCode(405);
|
|
$this->expectExceptionMessage("You cannot access this resource");
|
|
IpsAndPorts::getLocal($reseller_userdata, $data)->update();
|
|
}
|
|
|
|
public function testCustomerIpsAndPortsEditNotAllowed()
|
|
{
|
|
global $admin_userdata;
|
|
// get customer
|
|
$json_result = Customers::getLocal($admin_userdata, array(
|
|
'loginname' => 'test1'
|
|
))->get();
|
|
$customer_userdata = json_decode($json_result, true)['data'];
|
|
$data = [
|
|
'id' => 1,
|
|
'listen_statement' => 0
|
|
];
|
|
$this->expectExceptionCode(403);
|
|
$this->expectExceptionMessage("Not allowed to execute given command.");
|
|
IpsAndPorts::getLocal($customer_userdata, $data)->update();
|
|
}
|
|
|
|
public function testAdminIpsAndPortsEditCantChangeSystemIp()
|
|
{
|
|
global $admin_userdata;
|
|
$data = [
|
|
'id' => 1,
|
|
'ip' => '123.123.123.123'
|
|
];
|
|
$this->expectExceptionMessage("You cannot change the last system IP, either create another new IP/Port combination for the system IP or change the system IP.");
|
|
$json_result = IpsAndPorts::getLocal($admin_userdata, $data)->update();
|
|
}
|
|
|
|
public function testResellerIpsAndPortsEditNoDuplicate()
|
|
{
|
|
global $admin_userdata;
|
|
$json_result = Admins::getLocal($admin_userdata, array(
|
|
'loginname' => 'reseller'
|
|
))->get();
|
|
$reseller_userdata = json_decode($json_result, true)['data'];
|
|
$reseller_userdata['adminsession'] = 1;
|
|
$data = [
|
|
'id' => 3,
|
|
'ip' => '82.149.225.46'
|
|
];
|
|
$this->expectExceptionMessage("This IP/Port combination already exists.");
|
|
IpsAndPorts::getLocal($reseller_userdata, $data)->update();
|
|
}
|
|
|
|
public function testAdminIpsAndPortsDeleteCantDeleteDefaultIp()
|
|
{
|
|
global $admin_userdata;
|
|
$data = [
|
|
'id' => 1
|
|
];
|
|
$this->expectExceptionMessage("You cannot delete the default IP/Port combination, please make another IP/Port combination default for before deleting this IP/Port combination.");
|
|
IpsAndPorts::getLocal($admin_userdata, $data)->delete();
|
|
}
|
|
|
|
public function testAdminIpsAndPortsDelete()
|
|
{
|
|
global $admin_userdata;
|
|
$data = [
|
|
'id' => 3
|
|
];
|
|
$json_result = IpsAndPorts::getLocal($admin_userdata, $data)->delete();
|
|
$result = json_decode($json_result, true)['data'];
|
|
$this->assertEquals('82.149.225.47', $result['ip']);
|
|
}
|
|
|
|
public function testResellerIpsAndPortsDeleteNotAllowed()
|
|
{
|
|
global $admin_userdata;
|
|
$json_result = Admins::getLocal($admin_userdata, array(
|
|
'loginname' => 'reseller'
|
|
))->get();
|
|
$reseller_userdata = json_decode($json_result, true)['data'];
|
|
$reseller_userdata['adminsession'] = 1;
|
|
$data = [
|
|
'id' => 1
|
|
];
|
|
$this->expectExceptionCode(403);
|
|
$this->expectExceptionMessage("Not allowed to execute given command.");
|
|
IpsAndPorts::getLocal($reseller_userdata, $data)->delete();
|
|
}
|
|
}
|