/**
  * Validates the given data and returns a mapped version back to the caller.
  *
  * @param array $data
  * @return array
  * @throws ValidationException
  */
 public static function validate($data)
 {
     // allow either email or Email
     if (isset($data['email'])) {
         $data['Email'] = $data['email'];
     }
     if (isset($data['password'])) {
         $data['Password'] = $data['password'];
     }
     if (!empty($data['Token'])) {
         return ['Token' => RestValidatorHelper::validate_string($data, 'Token'), 'AuthService' => RestValidatorHelper::validate_string($data, 'AuthService'), 'UserID' => RestValidatorHelper::validate_string($data, 'UserID')];
     } else {
         return ['Email' => RestValidatorHelper::validate_email($data, 'Email'), 'Password' => RestValidatorHelper::validate_string($data, 'Password', ['min' => 3])];
     }
 }
 public static function validate($data)
 {
     $mail = RestValidatorHelper::validate_email($data, 'email');
     $password = RestValidatorHelper::validate_string($data, 'password', ['min' => self::MinPasswordLength]);
     return ['Email' => $mail, 'Password' => $password];
 }
 public function testValidateDatetime()
 {
     $this->assertEquals('2015-08-07 12:13:14', RestValidatorHelper::validate_datetime(['date' => '2015-08-07 12:13:14'], 'date'));
     $this->assertEquals(null, RestValidatorHelper::validate_datetime([], 'date', ['required' => false]));
     TestHelper::assertException(function () {
         RestValidatorHelper::validate_datetime([], 'date');
     }, 'ValidationException');
     TestHelper::assertException(function () {
         RestValidatorHelper::validate_datetime(['date' => 'error'], 'date');
     }, 'ValidationException');
 }