Applied changes to the tests based on review

This commit is contained in:
Jenny Tam 2017-12-08 11:50:44 -08:00
parent cf9e54fb74
commit 5a270e2d57
9 changed files with 40 additions and 82 deletions

View file

@ -10,10 +10,9 @@ require_once('MsCommon.inc');
function runTest($fieldType)
{
prepareParams($params);
// change the input field type for each run
$params['fieldType'] = $fieldType;
prepareParams($params, $fieldType);
$conn = AE\connect();
$originalStream = populateTestTable($conn, $params);
@ -46,7 +45,7 @@ function runTest($fieldType)
}
runTest("varchar(max)");
runTest("varbinary(max)");
// runTest("varbinary(max)");
runTest("nvarchar(max)");
echo "Test successful.\n";
@ -57,8 +56,8 @@ function populateTestTable($conn, $params)
$colName = $params['columnName'];
$fieldType = $params['fieldType'];
// Create a test table of a column of type 'nvarchar(MAX)'
$columns = array(new AE\ColumnMeta('nvarchar(MAX)', $colName));
// Create a test table of a single column of a certain field type
$columns = array(new AE\ColumnMeta($fieldType, $colName));
$stmt = AE\createTable($conn, $tblName, $columns);
if (!$stmt) {
fatalError("Failed to create table $tblName\n");
@ -94,18 +93,17 @@ function populateTestTable($conn, $params)
return fopen($params['testImageURL'], "rb");
}
function prepareParams(&$arr)
function prepareParams(&$arr, $fieldType)
{
if (IsWindows()) {
if (isWindows()) {
$phpgif = '\\php.gif';
} else {
$phpgif = '/php.gif';
}
// the test table always has a column of type 'nvarchar(MAX)'
$arr['tableName'] = $tblName = "B64TestTable";
$arr['columnName'] = $colName = "Base64Image";
$arr['fieldType'] = $fieldType = "nvarchar(MAX)";
$arr['fieldType'] = $fieldType;
$arr['insertQuery'] = "INSERT INTO $tblName ($colName) VALUES (?)";
$arr['selectQuery'] = "SELECT TOP 1 $colName FROM $tblName";
$arr['testImageURL'] = dirname($_SERVER['PHP_SELF']) . $phpgif; // use this when no http access

View file

@ -12,12 +12,13 @@ sqlsrv_configure('LogSeverity', SQLSRV_LOG_SEVERITY_ALL);
require_once('MsCommon.inc');
$c = AE\connect();
$tableName = 'utf8test';
$columns = array(new AE\ColumnMeta('varchar(100)', 'c1'),
new AE\ColumnMeta('nvarchar(100)', 'c2'),
new AE\ColumnMeta('nvarchar(max)', 'c3'));
$stmt = AE\createTable($c, "utf8test", $columns);
$stmt = AE\createTable($c, $tableName, $columns);
if (!$stmt) {
fatalError("Failed to create table 'utf8test'\n");
fatalError("Failed to create table $tableName\n");
}
$utf8 = "Şơмė śäოрŀề ΆŚĈĨİ-ť℮×ŧ";
@ -25,17 +26,12 @@ $utf8 = "Şơмė śäოрŀề ΆŚĈĨİ-ť℮×ŧ";
$params = array(array(&$utf8, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STRING('utf-8')),
array(&$utf8, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STRING('utf-8')),
array(&$utf8, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STRING('utf-8')));
$insertSql = "INSERT INTO utf8test (c1, c2, c3) VALUES (?,?,?)";
$insertSql = "INSERT INTO $tableName (c1, c2, c3) VALUES (?,?,?)";
$s = AE\executeQueryParams($c, $insertSql, $params);
$s = sqlsrv_query(
$c,
"DROP PROCEDURE IntDoubleProc;
DROP PROCEDURE Utf8OutProc;
DROP PROCEDURE Utf8OutWithResultsetProc;
DROP PROCEDURE Utf8InOutProc;
DROP TABLE Utf8TestTable;"
);
$query = "DROP PROCEDURE IntDoubleProc; DROP PROCEDURE Utf8OutProc; DROP PROCEDURE Utf8OutWithResultsetProc; DROP PROCEDURE Utf8InOutProc; DROP TABLE Utf8TestTable;";
$s = sqlsrv_query($c, $query);
$create_proc = <<<PROC
CREATE PROCEDURE Utf8OutProc
@ -50,48 +46,25 @@ if ($s === false) {
die(print_r(sqlsrv_errors(), true));
}
$create_proc = <<<PROC
CREATE PROCEDURE Utf8OutWithResultsetProc
@param nvarchar(25) output
AS
BEGIN
select c1, c2, c3 from utf8test
set @param = convert(nvarchar(25), 0x5E01A1013C04170120005B01E400DD1040044001C11E200086035A010801280130012D0065012E21D7006701);
END;
PROC;
$s = sqlsrv_query($c, $create_proc);
$createProc = "CREATE PROCEDURE Utf8OutWithResultsetProc @param NVARCHAR(25) OUTPUT AS BEGIN SELECT c1, c2, c3 FROM $tableName SET @param = CONVERT(NVARCHAR(25), 0x5E01A1013C04170120005B01E400DD1040044001C11E200086035A010801280130012D0065012E21D7006701); END";
$s = sqlsrv_query($c, $createProc);
if ($s === false) {
die(print_r(sqlsrv_errors(), true));
}
$create_proc = <<<PROC
CREATE PROCEDURE Utf8InOutProc
@param nvarchar(25) output
AS
BEGIN
-- INSERT INTO utf8test (c1, c2, c3) VALUES (@param, @param, @param);
set @param = convert(nvarchar(25), 0x6001E11EDD10130120006101E200DD1040043A01BB1E2000C5005A01C700CF0007042D006501BF1E45046301);
END;
PROC;
$s = sqlsrv_query($c, $create_proc);
$createProc = "CREATE PROCEDURE Utf8InOutProc @param NVARCHAR(25) OUTPUT AS BEGIN SET @param = CONVERT(NVARCHAR(25), 0x6001E11EDD10130120006101E200DD1040043A01BB1E2000C5005A01C700CF0007042D006501BF1E45046301); END";
$s = sqlsrv_query($c, $createProc);
if ($s === false) {
die(print_r(sqlsrv_errors(), true));
}
$create_proc = <<<PROC
CREATE PROCEDURE IntDoubleProc
@param int output
AS
BEGIN
set @param = @param + @param;
END;
PROC;
$s = sqlsrv_query($c, $create_proc);
$createProc = "CREATE PROCEDURE IntDoubleProc @param INT OUTPUT AS BEGIN SET @param = @param + @param; END;";
$s = sqlsrv_query($c, $createProc);
if ($s === false) {
die(print_r(sqlsrv_errors(), true));
}
$s = sqlsrv_query($c, 'SELECT c1, c2, c3 FROM utf8test');
$s = sqlsrv_query($c, "SELECT c1, c2, c3 FROM $tableName");
if ($s === false) {
die(print_r(sqlsrv_errors(), true));
}
@ -219,12 +192,12 @@ $t = pack('H*', '7a61cc86c7bdceb2f18fb3bf');
$params = array(array(&$t, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STRING('utf-8')),
array(&$t, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STRING('utf-8')),
array(&$t, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STRING('utf-8')));
$insertSql = "INSERT INTO utf8test (c1, c2, c3) VALUES (?,?,?)";
$insertSql = "INSERT INTO $tableName (c1, c2, c3) VALUES (?,?,?)";
$s = AE\executeQueryParams($c, $insertSql, $params);
print_r(sqlsrv_errors());
$s = sqlsrv_query($c, 'SELECT c1, c2, c3 FROM utf8test');
$s = sqlsrv_query($c, "SELECT c1, c2, c3 FROM $tableName");
if ($s === false) {
die(print_r(sqlsrv_errors(), true));
}
@ -253,7 +226,7 @@ $params = array(array(&$t, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STRING('utf-8')));
$query = "{call IntDoubleProc(?)}";
$s = AE\executeQueryParams($c, $query, $params, true, "no error from an invalid utf-8 string");
dropTable($c, 'utf8test');
dropTable($c, $tableName);
sqlsrv_close($c);

View file

@ -269,13 +269,9 @@ function createUniqueIndexEx($conn, $tableName, $tableIndex, $colIndex)
trace(" completed successfully.\n");
}
function dropTable($conn, $tableName, $check = false)
function dropTable($conn, $tableName)
{
if ($check) {
$stmt = sqlsrv_query($conn, "IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'" . $tableName . "') AND type in (N'U')) DROP TABLE [$tableName]");
} else {
$stmt = sqlsrv_query($conn, "DROP TABLE [$tableName]");
}
$stmt = sqlsrv_query($conn, "IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'" . $tableName . "') AND type in (N'U')) DROP TABLE [$tableName]");
if ($stmt === false) {
} else {
sqlsrv_free_stmt($stmt);

View file

@ -396,7 +396,7 @@ function connect($options = array(), $disableCE = false)
function createTable($conn, $tbname, $columnMetaArr)
{
require_once("MsCommon.inc");
dropTable($conn, $tbname, true);
dropTable($conn, $tbname);
$colDef = "";
foreach ($columnMetaArr as $meta) {
$colDef = $colDef . $meta->getColDef() . ", ";

View file

@ -27,20 +27,11 @@ function insertTest($conn, $tableName, $inputs, $query)
foreach ($inputs as $key => $input) {
array_push($params, $inputs[$key]);
}
if (! is_null($query)) {
// this contains a batch of sql statements,
// with set identity_insert on or off
// thus, sqlsrv_query should be called
$sql = str_replace("SQL", $insertSql, $query);
$stmt = sqlsrv_query($conn, $sql, $params);
} else {
// just a regular insert, so use sqlsrv_prepare
$sql = $insertSql;
$stmt = sqlsrv_prepare($conn, $sql, $params);
if ($stmt) {
sqlsrv_execute($stmt);
}
}
// this contains a batch of sql statements,
// with set identity_insert on or off
// thus, sqlsrv_query should be called
$sql = str_replace("SQL", $insertSql, $query);
$stmt = sqlsrv_query($conn, $sql, $params);
}
return $stmt;

View file

@ -44,7 +44,7 @@ Fetch data from a prepopulated test table given a custom keystore provider
sqlsrv_configure('WarningsReturnAsErrors', 1);
sqlsrv_configure('LogSeverity', SQLSRV_LOG_SEVERITY_ALL);
require_once('MsHelper.inc');
require_once('MsCommon.inc');
$conn = AE\connect(array('ReturnDatesAsStrings'=>true));
if ($conn !== false) {
echo "Connected successfully with ColumnEncryption enabled.\n";

View file

@ -7,7 +7,7 @@ Fetch encrypted data from a prepopulated test table given a custom keystore prov
sqlsrv_configure('WarningsReturnAsErrors', 1);
sqlsrv_configure('LogSeverity', SQLSRV_LOG_SEVERITY_ALL);
require_once('MsHelper.inc');
require_once('MsCommon.inc');
$conn = AE\connect(array('ReturnDatesAsStrings'=>true));
if ($conn === false) {
fatalError("Failed to connect.\n");

View file

@ -46,7 +46,7 @@ function execProcedure($conn, $tsql, $params)
function testOutputParam($conn, $tableName)
{
// First, create a stored procedure
$procName = getTempProcName('sqlVariant', false);
$procName = 'sqlVariant_out_proc';
$spArgs = "@p2 sql_variant OUTPUT";
@ -77,7 +77,7 @@ function testOutputParam($conn, $tableName)
function testInputAndOutputParam($conn, $tableName)
{
$procName = getTempProcName('sqlVariant', false);
$procName = 'sqlVariant_inout_proc';
$spArgs = "@p1 int, @p2 sql_variant OUTPUT";
$spCode = "SET @p2 = ( SELECT [c2_variant] FROM $tableName WHERE [c1_int] = @p1)";
$stmt = sqlsrv_query($conn, "CREATE PROC [$procName] ($spArgs) AS BEGIN $spCode END");

View file

@ -15,7 +15,7 @@ $tableName = 'testDataTypes_GH231_VC';
$columnNames = array("c1", "c2");
for ($k = 1; $k <= 8; $k++) {
$sqlType = getFieldType($k);
$sqlType = SQLType($k);
$columns = array(new AE\ColumnMeta('int', $columnNames[0]),
new AE\ColumnMeta($sqlType, $columnNames[1]));
AE\createTable($conn, $tableName, $columns);
@ -123,7 +123,7 @@ function getPhpType($k)
return $phpType;
}
function getFieldType($k)
function SQLType($k)
{
switch ($k) {
case 1: return ("char(512)");