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']);
 }
Exemple #2
0
 $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;