|
- <?php
- /**
- * PhpUnderControl_PhalApiRequestVar_Test
- *
- * 针对 ../../PhalApi/Request/Var.php PhalApi_Request_Var 类的PHPUnit单元测试
- *
- * @author: dogstar 20141012
- */
-
- require_once dirname(__FILE__) . '/../test_env.php';
-
- if (!class_exists('PhalApi_Request_Var')) {
- require dirname(__FILE__) . '/../../PhalApi/Request/Var.php';
- }
-
- class PhpUnderControl_PhalApiRequestVar_Test extends PHPUnit_Framework_TestCase
- {
- public $coreRequestVar;
-
- protected function setUp()
- {
- parent::setUp();
-
- $this->coreRequestVar = new PhalApi_Request_Var();
- }
-
- protected function tearDown()
- {
- }
-
-
- /**
- * @group testFormat
- */
- public function testFormat()
- {
- $varName = 'testKey';
- $rule = array('type' => 'int', 'default' => '2014');
- $params = array();
-
- $rs = PhalApi_Request_Var::format($varName, $rule, $params);
-
- $this->assertSame(2014, $rs);
- }
-
- /**
- * @group testFormatString
- */
- public function testFormatString()
- {
- $rs = PhalApi_Request_Var::format(
- 'testKey', array('name' => 'testKey'), array('testKey' => 2014));
-
- $this->assertSame('2014', $rs);
- }
-
- /**
- * @group testFormatStringMinMax
- */
- public function testFormatStringMinMax()
- {
- $rs = PhalApi_Request_Var::format(
- 'testKey', array('name' => 'testKey', "max" => 9, 'min' => 9, "format" => 'utf8'), array('testKey' => 'PhalApi测试'));
-
- $this->assertSame('PhalApi测试', $rs);
- }
-
-
- /**
- * @group testFormatStringMinMax
- * @expectedException PhalApi_Exception_BadRequest
- */
- public function testFormatStringExceptionMinMax()
- {
- $rs = PhalApi_Request_Var::format(
- 'testKey', array('name' => 'testKey', "max" => 8, 'min' => 8, "format" => 'utf8'), array('testKey' => 'PhalApi测试'));
-
- }
-
- /**
- * @group testFormatString
- * @expectedException PhalApi_Exception_InternalServerError
- */
- public function testFormatStringWithRuleExceptionMinGtMax()
- {
- $rs = PhalApi_Request_Var::format(
- 'testKey', array('name' => 'testKey', 'min' => 9, 'max' => 5), array('testKey' => '2014'));
- }
-
- /**
- * @group testFormatString
- * @expectedException PhalApi_Exception_BadRequest
- */
- public function testFormatStringWithParamExceptionLtMin()
- {
- $rs = PhalApi_Request_Var::format(
- 'testKey', array('name' => 'testKey', 'min' => 8), array('testKey' => 2014));
- }
-
- /**
- * @group testFormatString
- * @expectedException PhalApi_Exception_BadRequest
- */
- public function testFormatStringWithParamExceptionGtMax()
- {
- $value = '2014';
- $rule = array('name' => 'testKey', 'max' => 2, );
-
- $rs = PhalApi_Request_Var::format(
- 'testKey', array('name' => 'testKey', 'max' => 2), array('testKey' => 2014));
- }
-
- /**
- * @group testFormatInt
- */
- public function testFormatInt()
- {
- $rs = PhalApi_Request_Var::format(
- 'testKey', array('name' => 'testKey', 'type' => 'int'), array('testKey' => 2014));
-
- $this->assertSame(2014, $rs);
- }
-
- /**
- * @group testFormatFloat
- */
- public function testFormatFloat()
- {
- $rs = PhalApi_Request_Var::format(
- 'testKey', array('name' => 'testKey', 'type' => 'float'), array('testKey' => '3.14'));
-
- $this->assertSame(3.14, $rs);
- }
-
- /**
- * @dataProvider provideDataForFormatBoolean
- * @group testFormatBoolean
- */
- public function testFormatBoolean($oriValue, $expValue)
- {
- $rs = PhalApi_Request_Var::format(
- 'testKey', array('name' => 'testKey', 'type' => 'boolean'), array('testKey' => $oriValue));
-
- $this->assertSame($expValue, $rs);
- }
-
- public function provideDataForFormatBoolean()
- {
- return array(
- array('on', true),
- array('yes', true),
- array('true', true),
- array('success', true),
- array('false', false),
- array('1', true),
- );
- }
-
- /**
- * @group testFormatDate
- */
- public function testFormatDate()
- {
- $rs = PhalApi_Request_Var::format(
- 'testKey', array('name' => 'testKey', 'type' => 'date', 'format' => 'timestamp'), array('testKey' => '2014-10-01 12:00:00'));
-
- $this->assertTrue(is_numeric($rs));
- $this->assertSame(1412136000, $rs);
- }
-
- /**
- * @group testFormatDate
- */
- public function testFormatDateIllegal()
- {
- $rs = PhalApi_Request_Var::format(
- 'testKey', array('name' => 'testKey', 'type' => 'date', 'format' => 'timestamp'), array('testKey' => '2014-99-99 XX:XX:XX'));
- $this->assertEquals(0, $rs);
- }
-
- /**
- * @group testFormatDate
- * @expectedException PhalApi_Exception_BadRequest
- */
- public function testFormatDateRange()
- {
- $rs = PhalApi_Request_Var::format(
- 'testKey', array('name' => 'testKey', 'type' => 'date', 'format' => 'timestamp', 'max' => 100), array('testKey' => '2014-10-01 12:00:00'));
- }
-
- /**
- * @group testFormatArray
- */
- public function testFormatArrayWithJson()
- {
- $arr = array('age' => 100, 'sex' => 'male');
-
- $rs = PhalApi_Request_Var::format(
- 'testKey',
- array('name' => 'testKey', 'type' => 'array', 'format' => 'json'),
- array('testKey' => json_encode($arr))
- );
-
- $this->assertSame($arr, $rs);
- }
-
- public function testFormatArrayWithExplode()
- {
- $rs = PhalApi_Request_Var::format(
- 'testKey',
- array('name' => 'testKey', 'type' => 'array', 'format' => 'explode', 'separator' => '|'),
- array('testKey' => '1|2|3|4|5')
- );
-
- $this->assertEquals(array(1, 2, 3, 4, 5), $rs);
- }
-
- public function testFormatArrayDefault()
- {
- $rs = PhalApi_Request_Var::format(
- 'testKey',
- array('name' => 'testKey', 'type' => 'array'),
- array('testKey' => 'phalapi')
- );
-
- $this->assertEquals(array('phalapi'), $rs);
- }
-
- /**
- * @expectedException PhalApi_Exception_BadRequest
- */
- public function testFormatArrayRange()
- {
- $rs = PhalApi_Request_Var::format(
- 'testKey',
- array('name' => 'testKey', 'type' => 'array', 'format' => 'explode', 'separator' => '|', 'max' => 3),
- array('testKey' => '1|2|3|4|5')
- );
- }
-
- /**
- * @group testFile
- */
- public function testFormatFile()
- {
- $_FILES['aFile'] = array('name' => 'aHa~', 'type' => 'image/jpeg', 'size' => 100, 'tmp_name' => '/tmp/123456', 'error' => 0);
-
- $rule = array('name' => 'aFile', 'range' => array('image/jpeg'), 'min' => 50, 'max' => 1024, 'require' => true, 'default' => array(), 'type' => 'file');
-
- $rs = PhalApi_Request_Var::format('aFile', $rule, array());
-
- $this->assertEquals($_FILES['aFile'], $rs);
- }
-
- /**
- * @group testFile
- */
- public function testFormatFileInsensiveCase()
- {
- $_FILES['aFile'] = array('name' => 'aHa~', 'type' => 'image/jpeg', 'size' => 100, 'tmp_name' => '/tmp/123456', 'error' => 0);
-
- $rule = array('name' => 'aFile', 'range' => array('image/JPEG'), 'min' => 50, 'max' => 1024, 'require' => true, 'default' => array(), 'type' => 'file');
-
- $rs = PhalApi_Request_Var::format('aFile', $rule, array());
-
- $this->assertEquals($_FILES['aFile'], $rs);
- }
-
- /**
- * @group testFile
- * @expectedException PhalApi_Exception_BadRequest
- */
- public function testFormatFileButTooLarge()
- {
- $_FILES['aFile'] = array('name' => 'aHa~', 'type' => 'image/jpeg', 'size' => 9999, 'tmp_name' => '/tmp/123456', 'error' => 0);
-
- $rule = array('name' => 'aFile', 'range' => array('image/jpeg'), 'min' => 50, 'max' => 1024, 'require' => true, 'default' => array(), 'type' => 'file');
-
- $rs = PhalApi_Request_Var::format('aFile', $rule, array());
- }
-
- /**
- * @group testFile
- * @expectedException PhalApi_Exception_BadRequest
- */
- public function testFormatFileButWrongType()
- {
- $_FILES['aFile'] = array('name' => 'aHa~', 'type' => 'image/png', 'size' => 100, 'tmp_name' => '/tmp/123456', 'error' => 0);
-
- $rule = array('name' => 'aFile', 'range' => array('image/jpeg'), 'min' => 50, 'max' => 1024, 'require' => true, 'default' => array(), 'type' => 'file');
-
- $rs = PhalApi_Request_Var::format('aFile', $rule, array());
- }
-
- /**
- * @group testFile
- * @expectedException PhalApi_Exception_BadRequest
- */
- public function testFormatFileButError()
- {
- $_FILES['aFile'] = array('name' => 'aHa~', 'type' => 'image/png', 'size' => 100, 'tmp_name' => '/tmp/123456', 'error' => 2);
-
- $rule = array('name' => 'aFile', 'range' => array('image/jpeg'), 'min' => 50, 'max' => 1024, 'require' => true, 'default' => array(), 'type' => 'file');
-
- $rs = PhalApi_Request_Var::format('aFile', $rule, array());
- }
-
- /**
- * @group testFile
- * @expectedException PhalApi_Exception_BadRequest
- */
- public function testFormatFileEmptyButRequire()
- {
- $rule = array('name' => 'aFile', 'type' => 'file');
-
- $rs = PhalApi_Request_Var::format('aFile', $rule, array());
- $this->assertEquals(NULL, $rs);
- }
-
- /**
- * $group testFile
- */
- public function testFormatFileEmptyWithDefualt()
- {
- $default = array('name' => 'test.txt', 'type' => 'txt', 'tmp_name' => '/tmp/test.txt');
- $rule = array('name' => 'aFile', 'default' => $default, 'type' => 'file');
- $_FILES['aFile'] = null;
-
- $rs = PhalApi_Request_Var::format('aFile', $rule, array());
- $this->assertEquals($default, $rs);
- }
-
- /**
- * @group testFormatEnum
- */
- public function testFormatEnum()
- {
- $rs = PhalApi_Request_Var::format(
- 'testKey', array('range' => array('ios', 'android'), 'type' => 'enum'), array('testKey' => 'ios'));
-
- $this->assertSame('ios', $rs);
- }
-
- /**
- * @group testFormatEnum
- * @expectedException PhalApi_Exception_InternalServerError
- */
- public function testFormatEnumWithRuleException()
- {
- $rs = PhalApi_Request_Var::format(
- 'testKey', array('type' => 'enum', 'name' => 'testKey'), array('testKey' => 'ios'));
- }
-
- /**
- * @group testFormatEnum
- * @expectedException PhalApi_Exception_BadRequest
- */
- public function testFormatEnumWithParamException()
- {
- $rs = PhalApi_Request_Var::format(
- 'testKey', array('type' => 'enum', 'name' => 'testKey', 'range' => array('ios', 'android')), array('testKey' => 'pc'));
- }
-
- public function testFormatAllTypes()
- {
- $params = array(
- 'floatVal' => '1.0',
- 'booleanVal' => '1',
- 'dateVal' => '2015-02-05 00:00:00',
- 'arrayVal' => 'a,b,c',
- 'enumVal' => 'male',
- );
-
- $rule = array('name' => 'floatVal', 'type' => 'float');
- $rs = PhalApi_Request_Var::format('floatVal', $rule, $params);
- $this->assertSame(1.0, $rs);
-
- $rule = array('name' => 'booleanVal', 'type' => 'boolean');
- $rs = PhalApi_Request_Var::format('booleanVal', $rule, $params);
- $this->assertSame(true, $rs);
-
- $rule = array('name' => 'dateVal', 'type' => 'date', 'format' => 'timestamp');
- $rs = PhalApi_Request_Var::format('dateVal', $rule, $params);
- $this->assertSame( 1423065600, $rs);
-
- $rule = array('name' => 'arrayVal', 'type' => 'array', 'format' => 'explode');
- $rs = PhalApi_Request_Var::format('arrayVal', $rule, $params);
- $this->assertSame(array('a', 'b', 'c'), $rs);
-
- $rule = array('name' => 'enumVal', 'type' => 'enum', 'range' => array('female', 'male'));
- $rs = PhalApi_Request_Var::format('enumVal', $rule, $params);
- $this->assertSame('male', $rs);
-
- $rule = array('name' => 'noThisKey');
- $rs = PhalApi_Request_Var::format('noThisKey', $rule, $params);
- $this->assertSame(null, $rs);
-
- $rule = array('name' => 'noThisKey', 'type' => 'noThisType');
- $rs = PhalApi_Request_Var::format('noThisKey', $rule, $params);
- $this->assertSame(null, $rs);
-
- $_FILES['aFile'] = array('name' => 'aHa~', 'type' => 'image/jpeg', 'size' => 100, 'tmp_name' => '/tmp/123456', 'error' => 0);
- $rule = array('name' => 'aFile', 'range' => array('image/jpeg'), 'min' => 50, 'max' => 1024, 'require' => true, 'default' => array(), 'type' => 'file');
- $rs = PhalApi_Request_Var::format('aFile', $rule, $params);
- $this->assertNotEmpty($rs);
- }
-
- /**
- * @expectedException PhalApi_Exception_InternalServerError
- */
- public function testGetEnumWithEmptyRange()
- {
- PhalApi_Request_Var::format('key', array('name' => 'key', 'type' => 'enum', 'range' => array()), array('key' => 'aHa~'));
- }
-
- public function testStringWithRegxRight()
- {
- //very simple mobile phone
- $rule = array('name' => 'key', 'type' => 'string', 'regex' => '/^[0-9]{11}/');
- PhalApi_Request_Var::format('testKey', $rule, array('testKey' => '13800138000'));
- }
-
- /**
- * @expectedException PhalApi_Exception_BadRequest
- */
- public function testStringWithRegxWrong()
- {
- $rule = array('name' => 'key', 'type' => 'string', 'regex' => '/^[0-9]{11}/');
- PhalApi_Request_Var::format('key', $rule, array('key' => 'no a number'));
- }
-
- public function testFormatCallable()
- {
- $rs = PhalApi_Request_Var::format(
- 'testKey',
- array('name' => 'testKey', 'type' => 'callable', 'callback' => array('PhalApi_Request_Var_MyCallback', 'go')),
- array('testKey' => 1)
- );
-
- $this->assertSame(2, $rs);
- }
-
- /**
- * @expectedException PhalApi_Exception_InternalServerError
- */
- public function testFormatCallableButWroing()
- {
- $rs = PhalApi_Request_Var::format(
- 'testKey',
- array('name' => 'testKey', 'type' => 'callable', 'callback' => 'xxx'),
- array('testKey' => 1)
- );
- }
- }
-
- class PhalApi_Request_Var_MyCallback {
-
- public static function go($value, $rule) {
- return $value + 1;
- }
- }
|