service= new \Box\Mod\System\Service(); } public function testgetParamValueMissingKeyParam() { $param = array(); $this->expectException(\Box_Exception::class); $this->expectExceptionMessage('Parameter key is missing'); $this->service->getParamValue($param); } public function testgetCompany() { $config = array('url' => 'www.fossbilling.org'); $expected = array( 'www' => $config['url'], 'name' => 'Inc. Test', 'email' => 'work@example.eu', 'tel' => NULL, 'signature' => NULL, 'logo_url' => NULL, 'logo_url_dark' => NULL, 'address_1' => NULL, 'address_2' => NULL, 'address_3' => NULL, 'account_number' => NULL, 'number' => NULL, 'note' => NULL, 'privacy_policy' => NULL, 'tos' => NULL, 'vat_number' => NULL, 'favicon_url' => 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')->setMethods(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')->setMethods(array('getParamValue'))->getMock(); $systemServiceMock->expects($this->atLeastOnce()) ->method('getParamValue') ->will($this->returnValue(false)); $updaterMock = $this->getMockBuilder('\FOSSBilling\Update')->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(function () use($systemServiceMock) {return $systemServiceMock;}); $di['tools'] = $toolsMock; $systemServiceMock->setDi($di); $result = $systemServiceMock->getMessages($type, true); $this->assertIsArray($result); } public function testtemplateExistsEmptyPaths() { $getThemeResults = array('paths' => array()); $systemServiceMock = $this->getMockBuilder('\Box\Mod\System\Service')->setMethods(array('getThemeConfig'))->getMock(); $systemServiceMock->expects($this->atLeastOnce()) ->method('getThemeConfig') ->will($this->returnValue($getThemeResults)); $di = new \Pimple\Container(); $di['mod_service'] = $di->protect(function () use($systemServiceMock) {return $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')->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')->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(function () use($modMock) {return $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(function () use($modMock) {return $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')->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')->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') ->setMethods(array('getPendingMessages')) ->getMock(); $serviceMock->expects($this->atLeastOnce()) ->method('getPendingMessages') ->willReturn(array()); $di = new \Pimple\Container(); $sessionMock = $this->getMockBuilder('\FOSSBilling\Session')->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')->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); } }