public function test_validate_params() { $params = array('text' => 'aaa', 'someid' => '6'); $description = new external_function_parameters(array('someid' => new external_value(PARAM_INT, 'Some int value'), 'text' => new external_value(PARAM_ALPHA, 'Some text value'))); $result = external_api::validate_parameters($description, $params); $this->assertCount(2, $result); reset($result); $this->assertSame('someid', key($result)); $this->assertSame(6, $result['someid']); $this->assertSame('aaa', $result['text']); $params = array('someids' => array('1', 2, 'a' => '3'), 'scalar' => 666); $description = new external_function_parameters(array('someids' => new external_multiple_structure(new external_value(PARAM_INT, 'Some ID')), 'scalar' => new external_value(PARAM_ALPHANUM, 'Some text value'))); $result = external_api::validate_parameters($description, $params); $this->assertCount(2, $result); reset($result); $this->assertSame('someids', key($result)); $this->assertEquals(array(0 => 1, 1 => 2, 2 => 3), $result['someids']); $this->assertSame('666', $result['scalar']); $params = array('text' => 'aaa'); $description = new external_function_parameters(array('someid' => new external_value(PARAM_INT, 'Some int value', false), 'text' => new external_value(PARAM_ALPHA, 'Some text value'))); $result = external_api::validate_parameters($description, $params); $this->assertCount(2, $result); reset($result); $this->assertSame('someid', key($result)); $this->assertNull($result['someid']); $this->assertSame('aaa', $result['text']); $params = array('text' => 'aaa'); $description = new external_function_parameters(array('someid' => new external_value(PARAM_INT, 'Some int value', false, 6), 'text' => new external_value(PARAM_ALPHA, 'Some text value'))); $result = external_api::validate_parameters($description, $params); $this->assertCount(2, $result); reset($result); $this->assertSame('someid', key($result)); $this->assertSame(6, $result['someid']); $this->assertSame('aaa', $result['text']); }
$testclient = new $testclientclass(); $serverurl = "{$CFG->wwwroot}/webservice/{$protocol}/"; if ($authmethod == 'simple') { $serverurl .= 'simpleserver.php'; $serverurl .= '?wsusername='******'&wspassword='******'token') { $serverurl .= 'server.php'; $serverurl .= '?wstoken=' . urlencode($data->token); } } // now get the function parameters $params = $mform->get_params(); // now test the parameters, this also fixes PHP data types $params = external_api::validate_parameters($functioninfo->parameters_desc, $params); echo $OUTPUT->header(); echo $OUTPUT->heading(get_string('pluginname', 'webservice_' . $protocol) . ': ' . $function); echo 'URL: ' . s($serverurl); echo $OUTPUT->box_start(); try { $response = $testclient->simpletest($serverurl, $function, $params); echo str_replace("\n", '<br />', s(var_export($response, true))); } catch (Exception $ex) { //TODO: handle exceptions and faults without exposing of the sensitive information such as debug traces! echo str_replace("\n", '<br />', s($ex)); } echo $OUTPUT->box_end(); $mform->display(); echo $OUTPUT->footer(); die;