<?php
|
/**
|
* PhpUnderControl_PhalApiApiFactory_Test
|
*
|
* 针对 ../../PhalApi/ApiFactory.php PhalApi_ApiFactory 类的PHPUnit单元测试
|
*
|
* @author: dogstar 20141002
|
*/
|
|
require_once dirname(__FILE__) . '/test_env.php';
|
|
if (!class_exists('PhalApi_ApiFactory')) {
|
require dirname(__FILE__) . '/../PhalApi/ApiFactory.php';
|
}
|
|
class PhpUnderControl_PhalApiApiFactory_Test extends PHPUnit_Framework_TestCase
|
{
|
public $coreApiFactory;
|
|
protected function setUp()
|
{
|
parent::setUp();
|
}
|
|
protected function tearDown()
|
{
|
DI()->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()
|
{
|
}
|
}
|