Example #1
0
 public function test_validate_zone()
 {
     // Wrong identifier, type, master and templates.
     $data = array("identifier" => "\$_example.com", "name" => "example.com", "type" => "master", "master" => "85.158.202.321", "templates" => "test_template++", "query" => "example*");
     $validator = new ZoneValidator($data);
     $this->assertFalse($validator->validates());
     $this->assertCount(4, $validator->getErrors());
     // Wrong type, and templates
     unset($data['master']);
     $data['identifier'] = "example.com";
     $data['type'] = "MASTERRRR";
     $data['templates'] = array($data['templates']);
     $validator = new ZoneValidator($data);
     $this->assertFalse($validator->validates());
     $this->assertCount(2, $validator->getErrors());
     // Master should not have IP, invalid IP, empty template object
     $data['templates'][0] = new stdClass();
     $data['master'] = "85.158.202.321";
     $data['type'] = "MASTER";
     $validator = new ZoneValidator($data);
     $this->assertFalse($validator->validates());
     $this->assertCount(2, $validator->getErrors());
     // Invalid ip
     $data['templates'][0]->identifier = "test_template";
     $data['type'] = "SLAVE";
     $validator = new ZoneValidator($data);
     $this->assertFalse($validator->validates());
     $this->assertCount(1, $validator->getErrors());
     // Slave without IP
     unset($data['master']);
     $validator = new ZoneValidator($data);
     $this->assertFalse($validator->validates());
     $this->assertCount(1, $validator->getErrors());
     // All valid
     $data['master'] = "85.158.202.123";
     $validator = new ZoneValidator($data);
     $this->assertTrue($validator->validates());
     $this->assertEmpty($validator->getErrors());
     // Changing SLAVE zone records
     $data['records'] = array();
     $validator = new ZoneValidator($data);
     $this->assertFalse($validator->validates());
     $this->assertCount(1, $validator->getErrors());
     // Reset to valid NATIVE zone
     unset($data['query']);
     unset($data['templates']);
     unset($data['master']);
     $data['type'] = "NATIVE";
     $validator = new ZoneValidator($data);
     $this->assertTrue($validator->validates());
     $this->assertEmpty($validator->getErrors());
     // Invalid records type
     $data['records'] = new StdClass();
     $validator = new ZoneValidator($data);
     $this->assertFalse($validator->validates());
     $this->assertCount(1, $validator->getErrors());
     // Invalid record content
     $data['records'] = array(array("name" => "example.com", "type" => "A", "content" => "127.0.0.22222"));
     $validator = new ZoneValidator($data);
     $this->assertFalse($validator->validates());
     $this->assertCount(1, $validator->getErrors());
     // Record name label too long
     $data['records'] = array(array("name" => str_repeat("a", 253) . ".com", "type" => "A", "content" => "127.0.0.2"));
     $validator = new ZoneValidator($data);
     $this->assertFalse($validator->validates());
     $this->assertCount(1, $validator->getErrors());
     // Record name total size too long
     $data['records'] = array(array("name" => str_repeat(str_repeat("a", 60) . ".", 10) . "com", "type" => "A", "content" => "127.0.0.2"));
     $validator = new ZoneValidator($data);
     $this->assertFalse($validator->validates());
     $this->assertCount(1, $validator->getErrors());
     // All valid
     $data['records'] = array(array("name" => "example.com", "type" => "A", "content" => "127.0.0.2"));
     $validator = new ZoneValidator($data);
     $this->assertTrue($validator->validates());
     $this->assertEmpty($validator->getErrors());
 }
Example #2
0
 /**
  * Validates the properties of a zone.
  *
  * To validator Zone records, use the RecordResource.
  *
  * ### Request: ###
  *
  * ~~~
  * {
  *     "name": <string>,
  *     "type": MASTER|SLAVE|NATIVE,
  *     "master": <ipv4 optional>
  * }
  * ~~~
  *
  * ### Response: ###
  *
  * ~~~
  * true
  * ~~~
  *
  * ### Errors: ###
  *
  * * 508 - Invalid request, missing required parameters or input validation failed.
  *
  * @access public
  * @param mixed $request Request parameters
  * @return Response True if record is valid, error message with parse errors otherwise.
  */
 public function validate($request)
 {
     $response = new FormattedResponse($request);
     $data = $request->parseData();
     if (empty($data) || !isset($data->name)) {
         $response->code = Response::BADREQUEST;
         $response->error = "Request body was malformed. Ensure that all mandatory properties have been set.";
         $response->error_detail = "BODY_MALFORMED";
         return $response;
     }
     $validator = new ZoneValidator($data);
     if ($validator->validates()) {
         $response->code = Response::OK;
         $response->body = true;
         $response->log_message = "Zone was successfully validated.";
     } else {
         $response->code = Response::BADREQUEST;
         $response->error = $validator->getFormattedErrors();
         $response->error_detail = $validator->getErrorDetails();
     }
     return $response;
 }
Example #3
0
 /**
  * @param int $transfersOut
  *
  * @return self Instance
  */
 public function setTransfersOut($transfersOut)
 {
     ZoneValidator::checkIfZoneIsSlaveAndThrowExceptionIfNot($this->_type);
     $this->_transfersOut = intval($transfersOut);
     return $this;
 }