mirror of
https://github.com/FOSSBilling/FOSSBilling.git
synced 2026-11-09 05:24:58 +09:00
* Update rector config to include tests * Run Rector against the tests * Delete test-results * Update .gitignore * Correctly set the PHP min to 8.1, split the configs * Corrected PHPDoc * Deleted tests we can't really get to pass PHPunit is hard-coded to fail when a class has a return type of `never`, which is the correct return type of our redirect function (and rightfully so). No way to disable the exception as far as we can tell
409 lines
13 KiB
PHP
409 lines
13 KiB
PHP
<?php
|
|
|
|
namespace Box\Mod\System;
|
|
|
|
use Twig\Environment;
|
|
|
|
class ServiceTest extends \BBTestCase
|
|
{
|
|
/**
|
|
* @var \Box\Mod\System\Service
|
|
*/
|
|
protected $service = null;
|
|
|
|
public function setup(): void
|
|
{
|
|
$this->service = new \Box\Mod\System\Service();
|
|
}
|
|
|
|
public function testgetParamValueMissingKeyParam()
|
|
{
|
|
$param = array();
|
|
$this->expectException(\FOSSBilling\Exception::class);
|
|
$this->expectExceptionMessage('Parameter key is missing');
|
|
|
|
$this->service->getParamValue($param);
|
|
}
|
|
|
|
public function testgetCompany()
|
|
{
|
|
$config = array('url' => 'www.fossbilling.org');
|
|
$expected = array(
|
|
'www' => 'http://localhost/',
|
|
'name' => 'Inc. Test',
|
|
'email' => 'work@example.eu',
|
|
'tel' => NULL,
|
|
'signature' => NULL,
|
|
'logo_url' => NULL,
|
|
'logo_url_dark' => NULL,
|
|
'favicon_url' => NULL,
|
|
'address_1' => NULL,
|
|
'address_2' => NULL,
|
|
'address_3' => NULL,
|
|
'account_number' => NULL,
|
|
'bank_name' => NULL,
|
|
'bic' => NULL,
|
|
'display_bank_info' => NULL,
|
|
'bank_info_pagebottom' => NULL,
|
|
'number' => NULL,
|
|
'note' => NULL,
|
|
'privacy_policy' => NULL,
|
|
'tos' => NULL,
|
|
'vat_number' => NULL,
|
|
);
|
|
|
|
$multParamsResults = array(
|
|
array(
|
|
'param' => 'company_name',
|
|
'value' => 'Inc. Test',
|
|
),
|
|
array(
|
|
'param' => 'company_email',
|
|
'value' => 'work@example.eu',
|
|
),
|
|
);
|
|
$dbMock = $this->getMockBuilder('\Box_Database')->getMock();
|
|
$dbMock->expects($this->atLeastOnce())
|
|
->method('getAll')
|
|
->will($this->returnValue($multParamsResults));
|
|
|
|
$di = new \Pimple\Container();
|
|
$di['db'] = $dbMock;
|
|
$di['config'] = $config;
|
|
|
|
$this->service->setDi($di);
|
|
|
|
$result = $this->service->getCompany();
|
|
$this->assertIsArray($result);
|
|
$this->assertEquals($expected, $result);
|
|
}
|
|
|
|
public function testgetLanguages()
|
|
{
|
|
$result = $this->service->getLanguages(true);
|
|
$this->assertIsArray($result);
|
|
}
|
|
|
|
public function testgetParams()
|
|
{
|
|
$expected = array(
|
|
'company_name' => 'Inc. Test',
|
|
'company_email' => 'work@example.eu',
|
|
);
|
|
$multParamsResults = array(
|
|
array(
|
|
'param' => 'company_name',
|
|
'value' => 'Inc. Test',
|
|
),
|
|
array(
|
|
'param' => 'company_email',
|
|
'value' => 'work@example.eu',
|
|
),
|
|
);
|
|
$dbMock = $this->getMockBuilder('\Box_Database')->getMock();
|
|
$dbMock->expects($this->atLeastOnce())
|
|
->method('getAll')
|
|
->will($this->returnValue($multParamsResults));
|
|
|
|
$di = new \Pimple\Container();
|
|
$di['db'] = $dbMock;
|
|
|
|
$this->service->setDi($di);
|
|
|
|
$result = $this->service->getParams(array());
|
|
$this->assertIsArray($result);
|
|
$this->assertEquals($expected, $result);
|
|
}
|
|
|
|
public function testupdateParams()
|
|
{
|
|
$data = array(
|
|
'company_name' => 'newValue'
|
|
);
|
|
|
|
$eventMock = $this->getMockBuilder('\Box_EventManager')->getMock();
|
|
$eventMock->expects($this->atLeastOnce())
|
|
->method('fire');
|
|
|
|
$logMock = $this->getMockBuilder('\Box_Log')->getMock();
|
|
|
|
$systemServiceMock = $this->getMockBuilder('\\' . \Box\Mod\System\Service::class)->onlyMethods(array('setParamValue'))->getMock();
|
|
$systemServiceMock->expects($this->atLeastOnce())
|
|
->method('setParamValue')
|
|
->will($this->returnValue(true));
|
|
|
|
$di = new \Pimple\Container();
|
|
$di['events_manager'] = $eventMock;
|
|
$di['logger'] = $logMock;
|
|
|
|
$systemServiceMock->setDi($di);
|
|
$result = $systemServiceMock->updateParams($data);
|
|
$this->assertIsBool($result);
|
|
$this->assertTrue($result);
|
|
}
|
|
|
|
public function testgetMessages()
|
|
{
|
|
$latestVersion = '1.0.0';
|
|
$type = 'info';
|
|
|
|
$systemServiceMock = $this->getMockBuilder('\\' . \Box\Mod\System\Service::class)->onlyMethods(['getParamValue'])->getMock();
|
|
$systemServiceMock->expects($this->atLeastOnce())
|
|
->method('getParamValue')
|
|
->will($this->returnValue(false));
|
|
|
|
$updaterMock = $this->getMockBuilder('\\' . \FOSSBilling\Update::class)->getMock();
|
|
$updaterMock->expects($this->atLeastOnce())
|
|
->method('isUpdateAvailable')
|
|
->will($this->returnValue(true));
|
|
$updaterMock->expects($this->atLeastOnce())
|
|
->method('getLatestVersion')
|
|
->will($this->returnValue($latestVersion));
|
|
|
|
$di = new \Pimple\Container();
|
|
$di['updater'] = $updaterMock;
|
|
$di['mod_service'] = $di->protect(fn() => $systemServiceMock);
|
|
|
|
$systemServiceMock->setDi($di);
|
|
|
|
$result = $systemServiceMock->getMessages($type);
|
|
$this->assertIsArray($result);
|
|
}
|
|
|
|
public function testtemplateExistsEmptyPaths()
|
|
{
|
|
$getThemeResults = array('paths' => array());
|
|
$systemServiceMock = $this->getMockBuilder('\\' . \Box\Mod\System\Service::class)->addMethods(array('getThemeConfig'))->getMock();
|
|
$systemServiceMock->expects($this->atLeastOnce())
|
|
->method('getThemeConfig')
|
|
->will($this->returnValue($getThemeResults));
|
|
|
|
$di = new \Pimple\Container();
|
|
$di['mod_service'] = $di->protect(fn() => $systemServiceMock);
|
|
$this->service->setDi($di);
|
|
|
|
$result = $this->service->templateExists('defaultFile.cp');
|
|
$this->assertIsBool($result);
|
|
$this->assertFalse($result);
|
|
}
|
|
|
|
public function testrenderStringTemplateException()
|
|
{
|
|
$vars = array(
|
|
'_client_id' => 1
|
|
);
|
|
|
|
|
|
$this
|
|
->getMockBuilder('Drupal\Core\Template\TwigEnvironment')
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
|
|
|
|
$twigMock = $this->getMockBuilder('\\' . \Twig\Environment::class)->disableOriginalConstructor()->getMock();
|
|
$twigMock->expects($this->atLeastOnce())
|
|
->method('addGlobal');
|
|
$twigMock->method('createTemplate')
|
|
->will($this->throwException(new \Error('Error')));
|
|
|
|
$dbMock = $this->getMockBuilder('\Box_Database')->getMock();
|
|
$dbMock->expects($this->atLeastOnce())
|
|
->method('load')
|
|
->will($this->returnValue(new \Model_Client()));
|
|
|
|
$di = new \Pimple\Container();
|
|
$di['db'] = $dbMock;
|
|
$di['twig'] = $twigMock;
|
|
$di['api_client'] = new \Model_Client();
|
|
$this->service->setDi($di);
|
|
|
|
$this->expectException(\Error::class);
|
|
$this->service->renderString('test', false, $vars);
|
|
}
|
|
|
|
public function testrenderStringTemplate()
|
|
{
|
|
$vars = array(
|
|
'_client_id' => 1
|
|
);
|
|
|
|
$twigMock = $this->getMockBuilder(Environment::class)
|
|
->disableOriginalConstructor()
|
|
->getMock();
|
|
|
|
$twigMock->expects($this->atLeastOnce())
|
|
->method('addGlobal');
|
|
// $twigMock->method('createTemplate')
|
|
// ->willReturn(new \FakeTemplateWrapper('test'));
|
|
// $twigMock->method('load')
|
|
// ->willReturn(new \FakeTemplateWrapper('test'));
|
|
$twigMock->method('render')
|
|
->willReturn('');
|
|
|
|
$dbMock = $this->getMockBuilder('\Box_Database')->getMock();
|
|
$dbMock->expects($this->atLeastOnce())
|
|
->method('load')
|
|
->will($this->returnValue(new \Model_Client()));
|
|
|
|
$di = new \Pimple\Container();
|
|
$di['db'] = $dbMock;
|
|
$di['twig'] = $twigMock;
|
|
$di['api_client'] = new \Model_Client();
|
|
$this->service->setDi($di);
|
|
|
|
$string = $this->service->renderString('test', true, $vars);
|
|
$this->assertEquals($string, 'test');
|
|
}
|
|
|
|
public function testclearCache()
|
|
{
|
|
$toolsMock = $this->getMockBuilder('\\' . \FOSSBilling\Tools::class)->getMock();
|
|
$toolsMock->expects($this->atLeastOnce())
|
|
->method('emptyFolder')
|
|
->will($this->returnValue(true));
|
|
|
|
$di = new \Pimple\Container();
|
|
$di['tools'] = $toolsMock;
|
|
|
|
$this->service->setDi($di);
|
|
|
|
$result = $this->service->clearCache();
|
|
$this->assertIsBool($result);
|
|
$this->assertTrue($result);
|
|
}
|
|
|
|
public function testgetPeriod()
|
|
{
|
|
$code = '1W';
|
|
$expexted = 'Every week';
|
|
$result = $this->service->getPeriod($code);
|
|
|
|
$this->assertIsString($result);
|
|
$this->assertEquals($expexted, $result);
|
|
}
|
|
|
|
public function testgetCountries()
|
|
{
|
|
|
|
$modMock = $this->getMockBuilder('\Box_Mod')->disableOriginalConstructor()->getMock();
|
|
$modMock->expects($this->atLeastOnce())
|
|
->method('getConfig')
|
|
->will($this->returnValue(array('countries' => 'US')));
|
|
|
|
$di = new \Pimple\Container();
|
|
$di['mod'] = $di->protect(fn() => $modMock);
|
|
|
|
$this->service->setDi($di);
|
|
$result = $this->service->getCountries();
|
|
$this->assertIsArray($result);
|
|
}
|
|
|
|
public function testgetEuCountries()
|
|
{
|
|
$modMock = $this->getMockBuilder('\Box_Mod')->disableOriginalConstructor()->getMock();
|
|
$modMock->expects($this->atLeastOnce())
|
|
->method('getConfig')
|
|
->will($this->returnValue(array('countries' => 'US')));
|
|
|
|
$di = new \Pimple\Container();
|
|
$di['mod'] = $di->protect(fn() => $modMock);
|
|
|
|
$this->service->setDi($di);
|
|
$result = $this->service->getEuCountries();
|
|
$this->assertIsArray($result);
|
|
}
|
|
|
|
public function testgetStates()
|
|
{
|
|
$result = $this->service->getStates();
|
|
$this->assertIsArray($result);
|
|
}
|
|
|
|
public function testgetPhoneCodes()
|
|
{
|
|
$data = array();
|
|
$result = $this->service->getPhoneCodes($data);
|
|
$this->assertIsArray($result);
|
|
}
|
|
|
|
public function testgetVersion()
|
|
{
|
|
$result = $this->service->getVersion();
|
|
$this->assertIsString($result);
|
|
$this->assertEquals(\FOSSBilling\Version::VERSION, $result);
|
|
}
|
|
|
|
public function testgetPendingMessages()
|
|
{
|
|
$di = new \Pimple\Container();
|
|
|
|
$sessionMock = $this->getMockBuilder('\\' . \FOSSBilling\Session::class)->disableOriginalConstructor()->getMock();
|
|
$sessionMock->expects($this->atLeastOnce())
|
|
->method('get')
|
|
->with('pending_messages')
|
|
->willReturn(array());
|
|
|
|
$di['session'] = $sessionMock;
|
|
|
|
$this->service->setDi($di);
|
|
$result = $this->service->getPendingMessages();
|
|
$this->assertIsArray($result);
|
|
}
|
|
|
|
public function testgetPendingMessages_GetReturnsNotArray()
|
|
{
|
|
$di = new \Pimple\Container();
|
|
|
|
$sessionMock = $this->getMockBuilder('\\' . \FOSSBilling\Session::class)->disableOriginalConstructor()->getMock();
|
|
$sessionMock->expects($this->atLeastOnce())
|
|
->method('get')
|
|
->with('pending_messages')
|
|
->willReturn(null);
|
|
|
|
$di['session'] = $sessionMock;
|
|
|
|
$this->service->setDi($di);
|
|
$result = $this->service->getPendingMessages();
|
|
$this->assertIsArray($result);
|
|
}
|
|
|
|
public function testsetPendingMessage()
|
|
{
|
|
$serviceMock = $this->getMockBuilder('\\' . \Box\Mod\System\Service::class)
|
|
->onlyMethods(array('getPendingMessages'))
|
|
->getMock();
|
|
$serviceMock->expects($this->atLeastOnce())
|
|
->method('getPendingMessages')
|
|
->willReturn(array());
|
|
|
|
$di = new \Pimple\Container();
|
|
|
|
$sessionMock = $this->getMockBuilder('\\' . \FOSSBilling\Session::class)->disableOriginalConstructor()->getMock();
|
|
$sessionMock->expects($this->atLeastOnce())
|
|
->method('set')
|
|
->with('pending_messages');
|
|
|
|
$di['session'] = $sessionMock;
|
|
|
|
$serviceMock->setDi($di);
|
|
|
|
$message = 'Important Message';
|
|
$result = $serviceMock->setPendingMessage($message);
|
|
$this->assertTrue($result);
|
|
}
|
|
|
|
public function testclearPendingMessages()
|
|
{
|
|
$di = new \Pimple\Container();
|
|
|
|
$sessionMock = $this->getMockBuilder('\\' . \FOSSBilling\Session::class)->disableOriginalConstructor()->getMock();
|
|
$sessionMock->expects($this->atLeastOnce())
|
|
->method('delete')
|
|
->with('pending_messages');
|
|
$di['session'] = $sessionMock;
|
|
$this->service->setDi($di);
|
|
$result = $this->service->clearPendingMessages();
|
|
$this->assertTrue($result);
|
|
}
|
|
}
|