DB placeholder comment fix, add hash hmac to Hashlib
This commit is contained in:
@@ -135,6 +135,7 @@ final class CoreLibsDBIOTest extends TestCase
|
||||
}
|
||||
// check if they already exist, drop them
|
||||
if ($db->dbShowTableMetaData('table_with_primary_key') !== false) {
|
||||
$db->dbExec("CREATE EXTENSION IF NOT EXISTS pgcrypto");
|
||||
$db->dbExec("DROP TABLE table_with_primary_key");
|
||||
$db->dbExec("DROP TABLE table_without_primary_key");
|
||||
$db->dbExec("DROP TABLE test_meta");
|
||||
@@ -4744,7 +4745,7 @@ final class CoreLibsDBIOTest extends TestCase
|
||||
$res = $db->dbReturnRowParams($query_select, ['CONVERT_TYPE_TEST']);
|
||||
// all hast to be string
|
||||
foreach ($res as $key => $value) {
|
||||
$this->assertIsString($value, 'Aseert string for column: ' . $key);
|
||||
$this->assertIsString($value, 'Assert string for column: ' . $key);
|
||||
}
|
||||
// convert base only
|
||||
$db->dbSetConvertFlag(Convert::on);
|
||||
@@ -4757,10 +4758,10 @@ final class CoreLibsDBIOTest extends TestCase
|
||||
}
|
||||
switch ($type_layout[$name]) {
|
||||
case 'int':
|
||||
$this->assertIsInt($value, 'Aseert int for column: ' . $key . '/' . $name);
|
||||
$this->assertIsInt($value, 'Assert int for column: ' . $key . '/' . $name);
|
||||
break;
|
||||
default:
|
||||
$this->assertIsString($value, 'Aseert string for column: ' . $key . '/' . $name);
|
||||
$this->assertIsString($value, 'Assert string for column: ' . $key . '/' . $name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -4774,13 +4775,13 @@ final class CoreLibsDBIOTest extends TestCase
|
||||
}
|
||||
switch ($type_layout[$name]) {
|
||||
case 'int':
|
||||
$this->assertIsInt($value, 'Aseert int for column: ' . $key . '/' . $name);
|
||||
$this->assertIsInt($value, 'Assert int for column: ' . $key . '/' . $name);
|
||||
break;
|
||||
case 'float':
|
||||
$this->assertIsFloat($value, 'Aseert float for column: ' . $key . '/' . $name);
|
||||
$this->assertIsFloat($value, 'Assert float for column: ' . $key . '/' . $name);
|
||||
break;
|
||||
default:
|
||||
$this->assertIsString($value, 'Aseert string for column: ' . $key . '/' . $name);
|
||||
$this->assertIsString($value, 'Assert string for column: ' . $key . '/' . $name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -4794,17 +4795,17 @@ final class CoreLibsDBIOTest extends TestCase
|
||||
}
|
||||
switch ($type_layout[$name]) {
|
||||
case 'int':
|
||||
$this->assertIsInt($value, 'Aseert int for column: ' . $key . '/' . $name);
|
||||
$this->assertIsInt($value, 'Assert int for column: ' . $key . '/' . $name);
|
||||
break;
|
||||
case 'float':
|
||||
$this->assertIsFloat($value, 'Aseert float for column: ' . $key . '/' . $name);
|
||||
$this->assertIsFloat($value, 'Assert float for column: ' . $key . '/' . $name);
|
||||
break;
|
||||
case 'json':
|
||||
case 'jsonb':
|
||||
$this->assertIsArray($value, 'Aseert array for column: ' . $key . '/' . $name);
|
||||
$this->assertIsArray($value, 'Assert array for column: ' . $key . '/' . $name);
|
||||
break;
|
||||
default:
|
||||
$this->assertIsString($value, 'Aseert string for column: ' . $key . '/' . $name);
|
||||
$this->assertIsString($value, 'Assert string for column: ' . $key . '/' . $name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -4818,25 +4819,25 @@ final class CoreLibsDBIOTest extends TestCase
|
||||
}
|
||||
switch ($type_layout[$name]) {
|
||||
case 'int':
|
||||
$this->assertIsInt($value, 'Aseert int for column: ' . $key . '/' . $name);
|
||||
$this->assertIsInt($value, 'Assert int for column: ' . $key . '/' . $name);
|
||||
break;
|
||||
case 'float':
|
||||
$this->assertIsFloat($value, 'Aseert float for column: ' . $key . '/' . $name);
|
||||
$this->assertIsFloat($value, 'Assert float for column: ' . $key . '/' . $name);
|
||||
break;
|
||||
case 'json':
|
||||
case 'jsonb':
|
||||
$this->assertIsArray($value, 'Aseert array for column: ' . $key . '/' . $name);
|
||||
$this->assertIsArray($value, 'Assert array for column: ' . $key . '/' . $name);
|
||||
break;
|
||||
case 'bytea':
|
||||
// for hex types it must not start with \x
|
||||
$this->assertStringStartsNotWith(
|
||||
'\x',
|
||||
$value,
|
||||
'Aseert bytes not starts with \x for column: ' . $key . '/' . $name
|
||||
'Assert bytes not starts with \x for column: ' . $key . '/' . $name
|
||||
);
|
||||
break;
|
||||
default:
|
||||
$this->assertIsString($value, 'Aseert string for column: ' . $key . '/' . $name);
|
||||
$this->assertIsString($value, 'Assert string for column: ' . $key . '/' . $name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -5235,6 +5236,9 @@ final class CoreLibsDBIOTest extends TestCase
|
||||
$3
|
||||
-- comment 3
|
||||
, $4
|
||||
-- ignore $5, $6
|
||||
-- $7, $8
|
||||
-- digest($9, 10)
|
||||
)
|
||||
SQL,
|
||||
'count' => 4,
|
||||
@@ -5305,8 +5309,57 @@ final class CoreLibsDBIOTest extends TestCase
|
||||
SQL,
|
||||
'count' => 2,
|
||||
'convert' => false,
|
||||
],
|
||||
// special $$ string case
|
||||
'text string, with $ placehoders that could be seen as $$ string' => [
|
||||
'query' => <<<SQL
|
||||
SELECT row_int
|
||||
FROM table_with_primary_key
|
||||
WHERE
|
||||
row_bytea = digest($3::VARCHAR, $4) OR
|
||||
row_varchar = encode(digest($3, $4), 'hex') OR
|
||||
row_bytea = hmac($3, $5, $4) OR
|
||||
row_varchar = encode(hmac($3, $5, $4), 'hex') OR
|
||||
row_bytea = pgp_sym_encrypt($3, $6) OR
|
||||
row_varchar = encode(pgp_sym_encrypt($1, $6), 'hex') OR
|
||||
row_varchar = CASE WHEN row_int = 1 THEN $1 ELSE $2 END
|
||||
SQL,
|
||||
'count' => 6,
|
||||
'convert' => false,
|
||||
],
|
||||
// NOTE, in SQL heredoc we cannot write $$ strings parts
|
||||
'text string, with $ placehoders are in $$ strings' => [
|
||||
'query' => '
|
||||
SELECT row_int
|
||||
FROM table_with_primary_key
|
||||
WHERE
|
||||
row_varchar = $$some string$$ OR
|
||||
row_varchar = $tag$some string$tag$ OR
|
||||
row_varchar = $btag$some $1 string$btag$ OR
|
||||
row_varchar = $btag$some $1 $subtag$ something $subtag$string$btag$ OR
|
||||
row_varchar = $1
|
||||
',
|
||||
'count' => 1,
|
||||
'convert' => false,
|
||||
],
|
||||
// a text string with escaped quite
|
||||
'text string, with escaped quote' => [
|
||||
'query' => <<<SQL
|
||||
SELECT row_int
|
||||
FROM table_with_primary_key
|
||||
WHERE
|
||||
row_varchar = 'foo bar bar baz $5' OR
|
||||
row_varchar = 'foo bar '' barbar $6' OR
|
||||
row_varchar = E'foo bar \' barbar $7' OR
|
||||
row_varchar = CASE WHEN row_int = 1 THEN $1 ELSE $2 END
|
||||
SQL,
|
||||
'count' => 2,
|
||||
'convert' => false,
|
||||
]
|
||||
];
|
||||
$string = <<<SQL
|
||||
'''
|
||||
SQL;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user