routines = new Routines(
$GLOBALS['dbi'],
new Template(),
ResponseRenderer::getInstance()
);
}
/**
* Test for getDataFromRequest
*
* @param array $in Input
* @param array $out Expected output
*
* @dataProvider providerGetDataFromRequest
*/
public function testGetDataFromRequest(array $in, array $out): void
{
unset($_POST);
unset($_REQUEST);
foreach ($in as $key => $value) {
if ($value === '') {
continue;
}
$_POST[$key] = $value;
$_REQUEST[$key] = $value;
}
$this->assertEquals($out, $this->routines->getDataFromRequest());
}
/**
* Data provider for testGetDataFromRequest
*
* @return array
*/
public function providerGetDataFromRequest(): array
{
return [
[
[
'item_name' => '',
'item_original_name' => '',
'item_returnlength' => '',
'item_returnopts_num' => '',
'item_returnopts_text' => '',
'item_definition' => '',
'item_comment' => '',
'item_definer' => '',
'item_type' => '',
'item_type_toggle' => '',
'item_original_type' => '',
'item_param_dir' => '',
'item_param_name' => '',
'item_param_type' => '',
'item_param_length' => '',
'item_param_opts_num' => '',
'item_param_opts_text' => '',
'item_returntype' => '',
'item_isdeterministic' => '',
'item_securitytype' => '',
'item_sqldataaccess' => '',
],
[
'item_name' => '',
'item_original_name' => '',
'item_returnlength' => '',
'item_returnopts_num' => '',
'item_returnopts_text' => '',
'item_definition' => '',
'item_comment' => '',
'item_definer' => '',
'item_type' => 'PROCEDURE',
'item_type_toggle' => 'FUNCTION',
'item_original_type' => 'PROCEDURE',
'item_num_params' => 0,
'item_param_dir' => [],
'item_param_name' => [],
'item_param_type' => [],
'item_param_length' => [],
'item_param_opts_num' => [],
'item_param_opts_text' => [],
'item_returntype' => '',
'item_isdeterministic' => '',
'item_securitytype_definer' => '',
'item_securitytype_invoker' => '',
'item_sqldataaccess' => '',
],
],
[
[
'item_name' => 'proc2',
'item_original_name' => 'proc',
'item_returnlength' => '',
'item_returnopts_num' => '',
'item_returnopts_text' => '',
'item_definition' => 'SELECT NULL',
'item_comment' => 'some text',
'item_definer' => 'root@localhost',
'item_type' => 'PROCEDURE',
'item_type_toggle' => 'FUNCTION',
'item_original_type' => 'PROCEDURE',
'item_param_dir' => [
0 => 'IN',
1 => 'FAIL',
],
'item_param_name' => [
0 => 'bar',
1 => 'baz',
],
'item_param_type' => [
0 => 'INT',
1 => 'FAIL',
],
'item_param_length' => [
0 => '20',
1 => '',
],
'item_param_opts_num' => [
0 => 'UNSIGNED',
1 => '',
],
'item_param_opts_text' => [
0 => '',
1 => 'latin1',
],
'item_returntype' => '',
'item_isdeterministic' => 'ON',
'item_securitytype' => 'INVOKER',
'item_sqldataaccess' => 'NO SQL',
],
[
'item_name' => 'proc2',
'item_original_name' => 'proc',
'item_returnlength' => '',
'item_returnopts_num' => '',
'item_returnopts_text' => '',
'item_definition' => 'SELECT NULL',
'item_comment' => 'some text',
'item_definer' => 'root@localhost',
'item_type' => 'PROCEDURE',
'item_type_toggle' => 'FUNCTION',
'item_original_type' => 'PROCEDURE',
'item_num_params' => 2,
'item_param_dir' => [
0 => 'IN',
1 => '',
],
'item_param_name' => [
0 => 'bar',
1 => 'baz',
],
'item_param_type' => [
0 => 'INT',
1 => '',
],
'item_param_length' => [
0 => '20',
1 => '',
],
'item_param_opts_num' => [
0 => 'UNSIGNED',
1 => '',
],
'item_param_opts_text' => [
0 => '',
1 => 'latin1',
],
'item_returntype' => '',
'item_isdeterministic' => ' checked=\'checked\'',
'item_securitytype_definer' => '',
'item_securitytype_invoker' => ' selected=\'selected\'',
'item_sqldataaccess' => 'NO SQL',
],
],
[
[
'item_name' => 'func2',
'item_original_name' => 'func',
'item_returnlength' => '20',
'item_returnopts_num' => '',
'item_returnopts_text' => 'CHARSET utf8',
'item_definition' => 'SELECT NULL',
'item_comment' => 'some text',
'item_definer' => 'root@localhost',
'item_type' => 'FUNCTION',
'item_type_toggle' => 'PROCEDURE',
'item_original_type' => 'FUNCTION',
'item_param_dir' => [
0 => '',
1 => '',
],
'item_param_name' => [
0 => 'bar',
1 => 'baz',
],
'item_param_type' => [
0 => 'XSS',
1 => 'TEXT',
],
'item_param_length' => [
0 => '10,10',
1 => '',
],
'item_param_opts_num' => [
0 => 'UNSIGNED',
1 => '',
],
'item_param_opts_text' => [
0 => '',
1 => 'utf8',
],
'item_returntype' => 'VARCHAR',
'item_isdeterministic' => '',
'item_securitytype' => 'DEFINER',
'item_sqldataaccess' => '',
],
[
'item_name' => 'func2',
'item_original_name' => 'func',
'item_returnlength' => '20',
'item_returnopts_num' => '',
'item_returnopts_text' => 'CHARSET utf8',
'item_definition' => 'SELECT NULL',
'item_comment' => 'some text',
'item_definer' => 'root@localhost',
'item_type' => 'FUNCTION',
'item_type_toggle' => 'PROCEDURE',
'item_original_type' => 'FUNCTION',
'item_num_params' => '2',
'item_param_dir' => [],
'item_param_name' => [
0 => 'bar',
1 => 'baz',
],
'item_param_type' => [
0 => '',
1 => 'TEXT',
],
'item_param_length' => [
0 => '10,10',
1 => '',
],
'item_param_opts_num' => [
0 => 'UNSIGNED',
1 => '',
],
'item_param_opts_text' => [
0 => '',
1 => 'utf8',
],
'item_returntype' => 'VARCHAR',
'item_isdeterministic' => '',
'item_securitytype_definer' => ' selected=\'selected\'',
'item_securitytype_invoker' => '',
'item_sqldataaccess' => '',
],
],
];
}
/**
* Test for getParameterRow
*/
public function testGetParameterRowEmpty(): void
{
$this->assertEquals('', $this->routines->getParameterRow([], 0));
}
/**
* Test for getParameterRow
*
* @param array $data Data for routine
*
* @depends testGetParameterRowEmpty
* @dataProvider providerGetParameterRow
*/
public function testGetParameterRow(array $data, int $index, string $matcher): void
{
$this->assertStringContainsString(
$matcher,
$this->routines->getParameterRow($data, $index)
);
}
/**
* Data provider for testGetParameterRow
*
* @return array
*/
public function providerGetParameterRow(): array
{
$data = [
'item_name' => '',
'item_original_name' => '',
'item_returnlength' => '',
'item_returnopts_num' => '',
'item_returnopts_text' => '',
'item_definition' => '',
'item_comment' => '',
'item_definer' => '',
'item_type' => 'PROCEDURE',
'item_type_toggle' => 'FUNCTION',
'item_original_type' => 'PROCEDURE',
'item_num_params' => 1,
'item_param_dir' => [0 => 'IN'],
'item_param_name' => [0 => 'foo'],
'item_param_type' => [0 => 'INT'],
'item_param_length' => [0 => ''],
'item_param_opts_num' => [0 => 'UNSIGNED'],
'item_param_opts_text' => [0 => ''],
'item_returntype' => '',
'item_isdeterministic' => '',
'item_securitytype_definer' => '',
'item_securitytype_invoker' => '',
'item_sqldataaccess' => '',
];
return [
[
$data,
0,
'