/** * Validate the options passed * @throws InvalidOptionException */ protected function validateOptions() { $optionsPassed = array_keys($this->options); //check for invalid options $validOptions = array_keys($this->definition->getAvailableFields()); $unknownOptions = array_diff($optionsPassed, $validOptions); if (count($unknownOptions) > 0) { throw new InvalidOptionException("Invalid option(s) [" . implode(", ", $unknownOptions) . "] passed for request [{$this->type}]"); } //check for missing options $requiredOptions = array_keys($this->definition->getRequiredFields()); $missingOptions = array_diff($requiredOptions, $optionsPassed); if (count($missingOptions) > 0) { throw new InvalidOptionException("Missing option(s) [" . implode(", ", $missingOptions) . "] which are required for request [{$this->type}]"); } //validate each field foreach ($this->options as $option => $value) { $this->validateOption($option, $value); } }
public function testGetRequiredFields() { $this->assertEquals(["type" => "type", "key" => "string", "domain" => "domain"], $this->instance->getRequiredFields()); }