diff --git a/tests/automated/workflow/engine/classes/classFieldValidatorTest.php b/tests/automated/workflow/engine/classes/classFieldValidatorTest.php index d71c052b7..7a24d57f0 100644 --- a/tests/automated/workflow/engine/classes/classFieldValidatorTest.php +++ b/tests/automated/workflow/engine/classes/classFieldValidatorTest.php @@ -1,18 +1,13 @@ object); + + //isInt $this->assertTrue( in_array('isInt', $methods ), 'exists method isInt' ); $r = new ReflectionMethod('FieldValidator', 'isInt'); $params = $r->getParameters(); $this->assertTrue( $params[0]->getName() == 'num'); $this->assertTrue( $params[0]->isArray() == false); $this->assertTrue( $params[0]->isOptional () == false); - } - /** - * @covers FieldValidator::isReal - * @todo Implement testisReal(). - */ - public function testisReal() - { - $methods = get_class_methods($this->object); + //isReal $this->assertTrue( in_array('isReal', $methods ), 'exists method isReal' ); $r = new ReflectionMethod('FieldValidator', 'isReal'); $params = $r->getParameters(); $this->assertTrue( $params[0]->getName() == 'num'); $this->assertTrue( $params[0]->isArray() == false); $this->assertTrue( $params[0]->isOptional () == false); - } - /** - * @covers FieldValidator::isBool - * @todo Implement testisBool(). - */ - public function testisBool() - { - $methods = get_class_methods($this->object); + //isBool $this->assertTrue( in_array('isBool', $methods ), 'exists method isBool' ); $r = new ReflectionMethod('FieldValidator', 'isBool'); $params = $r->getParameters(); $this->assertTrue( $params[0]->getName() == 'bool'); $this->assertTrue( $params[0]->isArray() == false); $this->assertTrue( $params[0]->isOptional () == false); - } - /** - * @covers FieldValidator::isUrl - * @todo Implement testisUrl(). - */ - public function testisUrl() - { - $methods = get_class_methods($this->object); + //isUrl $this->assertTrue( in_array('isUrl', $methods ), 'exists method isUrl' ); $r = new ReflectionMethod('FieldValidator', 'isUrl'); $params = $r->getParameters(); $this->assertTrue( $params[0]->getName() == 'url'); $this->assertTrue( $params[0]->isArray() == false); $this->assertTrue( $params[0]->isOptional () == false); - } - /** - * @covers FieldValidator::isEmail - * @todo Implement testisEmail(). - */ - public function testisEmail() - { - $methods = get_class_methods($this->object); + //isEmail $this->assertTrue( in_array('isEmail', $methods ), 'exists method isEmail' ); $r = new ReflectionMethod('FieldValidator', 'isEmail'); $params = $r->getParameters(); $this->assertTrue( $params[0]->getName() == 'email'); $this->assertTrue( $params[0]->isArray() == false); $this->assertTrue( $params[0]->isOptional () == false); - } - /** - * @covers FieldValidator::isIp - * @todo Implement testisIp(). - */ - public function testisIp() - { - $methods = get_class_methods($this->object); + //isIp $this->assertTrue( in_array('isIp', $methods ), 'exists method isIp' ); $r = new ReflectionMethod('FieldValidator', 'isIp'); $params = $r->getParameters(); $this->assertTrue( $params[0]->getName() == 'ip'); $this->assertTrue( $params[0]->isArray() == false); $this->assertTrue( $params[0]->isOptional () == false); - } - /** - * @covers FieldValidator::validate - * @todo Implement testvalidate(). - */ - public function testvalidate() - { - $methods = get_class_methods($this->object); + //validate $this->assertTrue( in_array('validate', $methods ), 'exists method validate' ); $r = new ReflectionMethod('FieldValidator', 'validate'); $params = $r->getParameters(); @@ -158,34 +112,68 @@ class classFieldValidatorTest extends PHPUnit_Framework_TestCase /** * @covers FieldValidator::isInt */ - public function testIsIntAllCovers() + public function testIsInt() { + $this->assertTrue($this->object->isInt(0)); + $this->assertTrue($this->object->isInt("0")); + $this->assertTrue($this->object->isInt(+0)); + $this->assertTrue($this->object->isInt("+0")); + $this->assertTrue($this->object->isInt(-0)); + $this->assertTrue($this->object->isInt("-0")); + $this->assertTrue($this->object->isInt(55)); $this->assertTrue($this->object->isInt("55")); + $this->assertTrue($this->object->isInt(+55)); + $this->assertTrue($this->object->isInt("+55")); + $this->assertTrue($this->object->isInt(-55)); + $this->assertTrue($this->object->isInt("-55")); + + $this->assertFalse($this->object->isInt("")); $this->assertFalse($this->object->isInt(55.5)); $this->assertFalse($this->object->isInt("55.5")); + $this->assertFalse($this->object->isInt(+55.5)); + $this->assertFalse($this->object->isInt("+55.5")); + $this->assertFalse($this->object->isInt(-55.5)); + $this->assertFalse($this->object->isInt("-55.5")); } /** * @covers FieldValidator::isReal */ - public function testIsRealAllCovers() + public function testIsReal() { + $this->assertTrue($this->object->isReal(0)); + $this->assertTrue($this->object->isReal("0")); + $this->assertTrue($this->object->isReal(+0)); + $this->assertTrue($this->object->isReal("+0")); + $this->assertTrue($this->object->isReal(-0)); + $this->assertTrue($this->object->isReal("-0")); + $this->assertTrue($this->object->isReal(55)); $this->assertTrue($this->object->isReal("55")); + $this->assertTrue($this->object->isReal(+55)); + $this->assertTrue($this->object->isReal("+55")); + $this->assertTrue($this->object->isReal(-55)); + $this->assertTrue($this->object->isReal("-55")); $this->assertTrue($this->object->isReal(55.5)); $this->assertTrue($this->object->isReal("55.5")); + $this->assertTrue($this->object->isReal(+55.5)); + $this->assertTrue($this->object->isReal("+55.5")); + $this->assertTrue($this->object->isReal(-55.5)); + $this->assertTrue($this->object->isReal("-55.5")); - $this->assertFalse($this->object->isInt(.5)); - $this->assertFalse($this->object->isInt(".5")); + $this->assertFalse($this->object->isReal("")); + + $this->assertFalse($this->object->isReal(".5")); + $this->assertFalse($this->object->isReal("a")); } /** * @covers FieldValidator::isBool */ - public function testIsBoolAllCovers() + public function testIsBool() { $this->assertTrue($this->object->isBool(true)); $this->assertTrue($this->object->isBool(false)); @@ -193,30 +181,210 @@ class classFieldValidatorTest extends PHPUnit_Framework_TestCase $this->assertTrue($this->object->isBool("true")); $this->assertTrue($this->object->isBool("false")); + $this->assertFalse($this->object->isBool("")); + $this->assertFalse($this->object->isBool(1)); $this->assertFalse($this->object->isBool(0)); $this->assertFalse($this->object->isBool("1")); $this->assertFalse($this->object->isBool("0")); } + /** + * @covers FieldValidator::isUrl + */ + public function testIsUrl() + { + $this->assertTrue($this->object->isUrl("http://www.myweb.com")); + $this->assertTrue($this->object->isUrl("http://www.myweb.com/")); + $this->assertTrue($this->object->isUrl("https://www.myweb.com")); + $this->assertTrue($this->object->isUrl("https://www.myweb.com/")); + $this->assertTrue($this->object->isUrl("https://www.myweb.com.bo")); + $this->assertTrue($this->object->isUrl("https://myweb.com")); + $this->assertTrue($this->object->isUrl("https://myweb.com.bo")); + $this->assertTrue($this->object->isUrl("http://192.168.10.58")); + $this->assertTrue($this->object->isUrl("https://192.168.10.58")); + $this->assertTrue($this->object->isUrl("http://192.168.10.58:8080")); + $this->assertTrue($this->object->isUrl("https://192.168.10.58:8080/")); + $this->assertTrue($this->object->isUrl("http://www.myweb.com/project/01/activity/01/steps")); + $this->assertTrue($this->object->isUrl("http://www.myweb.com/project/01/activity/01/steps.php")); + + $this->assertFalse($this->object->isUrl("")); + + $this->assertFalse($this->object->isUrl("www.myweb.com")); + $this->assertFalse($this->object->isUrl("www.myweb.com.bo")); + $this->assertFalse($this->object->isUrl("http ://www.myweb.com/")); + $this->assertFalse($this->object->isUrl("http://myweb")); + $this->assertFalse($this->object->isUrl("myweb")); + $this->assertFalse($this->object->isUrl("192.168.10.58")); + $this->assertFalse($this->object->isUrl("xttp://192.168.10.58")); + $this->assertFalse($this->object->isUrl("http:://192.168.10.58:8080/")); + $this->assertFalse($this->object->isUrl("http://")); + $this->assertFalse($this->object->isUrl("https://")); + } + /** * @covers FieldValidator::isEmail */ - public function testIsEmailAllCovers() + public function testIsEmail() { - $this->assertTrue($this->object->isEmail("my-email@gmail.com")); + $this->assertTrue($this->object->isEmail("my-email@myweb.com")); + $this->assertTrue($this->object->isEmail("my.email@myweb.com.bo")); + $this->assertTrue($this->object->isEmail("my-email.sample@myweb.com")); + $this->assertTrue($this->object->isEmail("my-email@my-web.com")); + $this->assertTrue($this->object->isEmail("my-2013-email@my-web.com")); + $this->assertTrue($this->object->isEmail("2013-my-email@my-web.com")); - $this->assertFalse($this->object->isEmail("my--email@gmail.com")); + $this->assertFalse($this->object->isEmail("")); + + $this->assertFalse($this->object->isEmail(" @myweb.com")); + $this->assertFalse($this->object->isEmail("my@email@myweb.com.bo")); + $this->assertFalse($this->object->isEmail("my-2013-email")); + $this->assertFalse($this->object->isEmail("my-email@myweb")); + $this->assertFalse($this->object->isEmail(".@myweb.com")); + $this->assertFalse($this->object->isEmail("-@myweb.com")); + $this->assertFalse($this->object->isEmail("@myweb.com")); + $this->assertFalse($this->object->isEmail("sample@.com")); + $this->assertFalse($this->object->isEmail("sample.com")); } /** * @covers FieldValidator::isIp */ - public function testIsIpAllCovers() + public function testIsIp() { + $this->assertTrue($this->object->isIp("255.255.255.255")); + $this->assertTrue($this->object->isIp("0.0.0.0")); $this->assertTrue($this->object->isIp("127.0.0.1")); + $this->assertFalse($this->object->isIp("")); + + $this->assertFalse($this->object->isIp("127.o.0.1")); + $this->assertFalse($this->object->isIp("127.0.0.")); $this->assertFalse($this->object->isIp("127.0.0")); + $this->assertFalse($this->object->isIp(".0.0.1")); + $this->assertFalse($this->object->isIp("127..0.1")); + } + + /** + * @covers FieldValidator::validate + */ + public function testValidate() + { + //Data OK + $arrayField = array( + "name" => "peter", + "lastname" => "parker", + "age" => 33, + "weight" => 56.55, + "website" => "http://www.myweb.com/", + "email" => "spider-man@myweb.com", + "alive" => true + ); + + $arrayValidators = array( + "name" => array( + "type" => "string", + "required" => true, + "min_size" => 5 + ), + "lastname" => array( + "type" => "string", + "min_size" => 2 + ), + "age" => array( + "type" => "int", + "required" => true + ), + "weight" => array( + "type" => "real", + "required" => true + ), + "website" => array( + "validation" => "url" + ), + "email" => array( + "type" => "string", + "required" => false, + "validation" => "email" + ), + "alive" => array( + "type" => "boolean" + ), + "ip" => array( + "validation" => "ip", + "required" => false + ) + ); + + $result = $this->object->validate($arrayField, $arrayValidators); + + $expectedSuccess = true; + $expectedErrors = array(); + + $this->assertEquals($result["success"], $expectedSuccess); + $this->assertEquals($result["errors"], $expectedErrors); + + //Data failed + $arrayField = array( + "name" => "Dan", + "lastname" => "", + "age" => "hello", + "weight" => "", + "website" => "www.myweb.com", + "email" => "spider-man@myweb", + "alive" => 1 + ); + + $arrayValidators = array( + "name" => array( + "type" => "string", + "required" => true, + "min_size" => 4 + ), + "lastname" => array( + "type" => "string", + "required" => true + ), + "age" => array( + "type" => "int" + ), + "weight" => array( + "type" => "real", + "required" => true + ), + "website" => array( + "validation" => "url" + ), + "email" => array( + "type" => "string", + "required" => false, + "validation" => "email" + ), + "alive" => array( + "type" => "boolean" + ), + "ip" => array( + "validation" => "ip", + "required" => false + ) + ); + + $result = $this->object->validate($arrayField, $arrayValidators); + + $expectedSuccess = false; + $expectedErrors = array( + "Field \"name\" should be min 4 chars, 3 given", + "Field \"lastname\" is required", + "Field \"age\" not is an integer number", + "Field \"weight\" not is an real number", + "Field \"weight\" is required", + "Field \"website\" have not an valid URL format", + "Field \"email\" have not an valid email format", + "Field \"alive\" not is an boolean" + ); + + $this->assertEquals($result["success"], $expectedSuccess); + $this->assertEquals($result["errors"], $expectedErrors); } /** @@ -254,7 +422,7 @@ class classFieldValidatorTest extends PHPUnit_Framework_TestCase array(array("flag" => 1), array("flag" => array("type" => "bool")), false), array(array("name" => "peter"), array("name" => array("type" => "string")), true), - array(array("email" => "my--email@gmail.com"), array("email" => array("validation" => "email")), false), + array(array("email" => "my--email@myweb.com"), array("email" => array("validation" => "email")), false), array(array("ip" => "127.0.0"), array("ip" => array("validation" => "ip")), false), array(array("name" => "peter"), array("name" => array("min_size" => 6)), false), diff --git a/workflow/engine/classes/class.fieldValidator.php b/workflow/engine/classes/class.fieldValidator.php index 94b37c381..4ab9462aa 100644 --- a/workflow/engine/classes/class.fieldValidator.php +++ b/workflow/engine/classes/class.fieldValidator.php @@ -56,7 +56,7 @@ class FieldValidator */ public static function isUrl($url) { - return (preg_match("/(((^https?)|(^ftp)):\/\/([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*\/?)/i", $url))? true : false; + return (preg_match("/(((^https?)|(^ftp)):\/\/([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\/+\\@&#;`~=%!]*)(\.\w{2,})?)*\/?)/i", $url))? true : false; } /**