Esempio n. 1
0
 /**
  * Test validator service
  */
 public function testValidator()
 {
     $config = array('server' => array('url' => '/', 'hostname' => 'localhost'));
     $app = new \Duality\App(dirname(__FILE__), $config);
     $server = $app->call('server');
     $request = new Request(new Url('http://localhost/dummy'));
     $request->setParams(array('key' => 'value'));
     $request->setMethod('GET');
     $server->setRequest($request);
     $validator = $app->call('validator');
     $item = new RuleItem('key', $request->getParam('key'), 'required|number|alpha|email|equals|password|length:2:3', 'The key is valid', 'The key is invalid');
     $item->setPassMessage('The key is valid');
     $item->setFailMessage('The key is invalid');
     $validator->addRuleItem($item);
     $validator->validate();
     $expected = false;
     $result = $validator->ok();
     $this->assertEquals($expected, $result);
     $expected = array('key' => 'The key is invalid');
     $result = $validator->getMessages();
     $this->assertEquals($expected, $result);
     $expected = array('key' => 'The key is invalid');
     $result = $validator->getErrorMessages();
     $this->assertEquals($expected, $result);
     $expected = 'The key is invalid';
     $result = $validator->getMessage('key');
     $this->assertEquals($expected, $result);
     $validator->terminate();
 }
Esempio n. 2
0
 /**
  * Validate one named rule
  * 
  * @param string $key    Give the message key
  * @param array  $params Give the rule configuration
  * 
  * @return boolean The rule result
  */
 protected function validateRule(RuleItem $rule)
 {
     $result = true;
     $filters = $rule->getFilters();
     foreach ($filters as $item) {
         $values = explode(':', $item);
         $method = 'is' . ucfirst(array_shift($values));
         $rule->setResult(call_user_func_array(array($this, $method), array($rule->getValue(), $values)));
         $this->msgStorage->set($rule->getKey(), $rule->getMessage());
         $result = $result & $rule->getResult();
     }
     return $result;
 }