filter = NULL; } /** * @group testGenerateService */ public function testGenerateService() { $rs = PhalApi_ApiFactory::generateService(); $this->assertNotNull($rs); $this->assertInstanceOf('PhalApi_Api', $rs); } public function testGenerateNormalClientService() { $data['service'] = 'Default.Index'; $data['sign'] = '1ec92737c7c287c7249e0adef566544a'; DI()->request = new PhalApi_Request($data); $rs = PhalApi_ApiFactory::generateService(); $this->assertNotNull($rs); $this->assertInstanceOf('PhalApi_Api', $rs); $this->assertInstanceOf('Api_Default', $rs); } /** * @expectedException PhalApi_Exception_BadRequest */ public function testGenerateIllegalApiService() { $data['service'] = 'NoThisService.Index'; DI()->request = new PhalApi_Request($data); $rs = PhalApi_ApiFactory::generateService(); } /** * @expectedException PhalApi_Exception_BadRequest */ public function testGenerateIllegalActionService() { $data['service'] = 'Default.noThisFunction'; DI()->request = new PhalApi_Request($data); $rs = PhalApi_ApiFactory::generateService(); } /** * @expectedException PhalApi_Exception_BadRequest */ public function testIllegalServiceName() { $data['service'] = 'Default'; DI()->request = new PhalApi_Request($data); $rs = PhalApi_ApiFactory::generateService(); } /** * @expectedException PhalApi_Exception_InternalServerError */ public function testNotPhalApiSubclass() { $data['service'] = 'Crazy.What'; DI()->request = new PhalApi_Request($data); $rs = PhalApi_ApiFactory::generateService(); } /** * @expectedException PhalApi_Exception_BadRequest */ public function testServiceWhitelistNOTInclude() { DI()->filter = 'PhalApi_Filter_Impl_Exception'; $data['service'] = 'ServiceWhitelist.GetTime'; DI()->request = new PhalApi_Request($data); $rs = PhalApi_ApiFactory::generateService(); } /** * @dataProvider provideDataForWhilelist */ public function testServiceWhitelistInclude($service) { DI()->filter = 'PhalApi_Filter_Impl_Exception'; $data['service'] = $service; DI()->request = new PhalApi_Request($data); $rs = PhalApi_ApiFactory::generateService(); $this->assertInstanceOf('PhalApi_Api', $rs); } public function provideDataForWhilelist() { return array( array('ServiceWhitelist.Index'), array('ServiceWhitelist.PoPo'), array('Default.Index'), ); } } class Api_Default extends PhalApi_Api { public function index() { } } class Api_Crazy { public function what() { } } class Api_ServiceWhitelist extends PhalApi_Api { public function index() { } public function getTime() { } public function popo() { } }