From 782ba439f004ef1db13b7ccb81cc07455c9e3bfc Mon Sep 17 00:00:00 2001 From: Paula Quispe Date: Tue, 23 Jul 2019 11:47:36 -0400 Subject: [PATCH] PMC-992 --- phpunit.xml | 2 + tests/bootstrap.php | 149 ++++++++++++++++++++++---------------------- 2 files changed, 78 insertions(+), 73 deletions(-) mode change 100644 => 100755 phpunit.xml diff --git a/phpunit.xml b/phpunit.xml old mode 100644 new mode 100755 index a5a5f121f..69862355d --- a/phpunit.xml +++ b/phpunit.xml @@ -52,6 +52,8 @@ + + diff --git a/tests/bootstrap.php b/tests/bootstrap.php index ecb0a9f07..1314d19e7 100755 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -3,14 +3,13 @@ /** * Test harness bootstrap that sets up initial defines and builds up the initial database schema */ -// Bring in our standard bootstrap + include_once(__DIR__ . '/../bootstrap/autoload.php'); use Illuminate\Contracts\Console\Kernel; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Schema; -// Setup our required defines /** * @todo Migrate to configuration parameters */ @@ -35,20 +34,14 @@ define('PMTABLE_KEY', 'pmtable'); define('PATH_WORKFLOW_MYSQL_DATA', PATH_TRUNK . '/workflow/engine/data/mysql/'); define('PATH_RBAC_MYSQL_DATA', PATH_TRUNK . '/rbac/engine/data/mysql/'); define('PATH_LANGUAGECONT', PATH_DATA . '/META-INF/'); -define('PM_NEW_PROCESS_SAVE', 1006); -define('PATH_DATA_SITE', PATH_DATA . 'sites/' . SYS_SYS . '/'); -define("PATH_DATA_MAILTEMPLATES", PATH_DATA_SITE . "mailTemplates/"); -define('PATH_DATA_PUBLIC', PATH_DATA_SITE . 'public/'); define('DB_ADAPTER', 'mysql'); define('PATH_RBAC_HOME', PATH_TRUNK . '/rbac/'); define('PATH_RBAC', PATH_RBAC_HOME . 'engine/classes/'); define("PATH_CUSTOM_SKINS", PATH_DATA . "skins/"); define("PATH_TPL", PATH_CORE . "templates/"); -//timezone -$_SESSION['__SYSTEM_UTC_TIME_ZONE__'] = (int) (env('MAIN_SYSTEM_UTC_TIME_ZONE', 'workflow')) == 1; - -//Set Time Zone +// Set Time Zone +$_SESSION['__SYSTEM_UTC_TIME_ZONE__'] = (int)(env('MAIN_SYSTEM_UTC_TIME_ZONE', 'workflow')) == 1; ini_set('date.timezone', $_SESSION['__SYSTEM_UTC_TIME_ZONE__'] ? 'UTC' : env('MAIN_TIME_ZONE', 'America/New_York')); define('TIME_ZONE', ini_get('date.timezone')); @@ -56,25 +49,28 @@ define('TIME_ZONE', ini_get('date.timezone')); $app = require __DIR__ . '/../bootstrap/app.php'; $app->make(Kernel::class)->bootstrap(); -//Overwrite with the Processmaker env.ini configuration used in production environments +// Overwrite with the ProcessMaker env.ini configuration used in production environments //@todo: move env.ini configuration to .env ini_set('date.timezone', TIME_ZONE); //Set Time Zone date_default_timezone_set(TIME_ZONE); +// Configuration values config(['app.timezone' => TIME_ZONE]); - -//configuration values config([ "system.workspace" => SYS_SYS ]); +// Defining constants related to the workspace define("PATH_DATA_SITE", PATH_DATA . "sites/" . config("system.workspace") . "/"); define("PATH_DYNAFORM", PATH_DATA_SITE . "xmlForms/"); define("PATH_DATA_MAILTEMPLATES", PATH_DATA_SITE . "mailTemplates/"); define("PATH_DATA_PUBLIC", PATH_DATA_SITE . "public/"); - G::defineConstants(); -// Setup our testexternal database -config(['database.connections.testexternal' => [ +/** + * Database configurations + */ +// Setup connection to database SQLServer +config([ + 'database.connections.testexternal' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', '127.0.0.1'), 'database' => 'testexternal', @@ -86,31 +82,25 @@ config(['database.connections.testexternal' => [ 'prefix' => '', 'strict' => true, 'engine' => null -]]); - -// Now, drop all test tables and repopulate with schema -Schema::connection('testexternal')->dropIfExists('test'); - -Schema::connection('testexternal')->create('test', function($table) { - $table->increments('id'); - $table->string('value'); -}); -DB::connection('testexternal')->table('test')->insert([ - 'value' => 'testvalue' + ] ]); -// Only do if we are supporting MSSql tests +/** + * Configuration for MSSQL + */ if (env('RUN_MSSQL_TESTS')) { - config(['database.connections.mssql' => [ + config([ + 'database.connections.mssql' => [ 'driver' => 'sqlsrv', 'host' => env('MSSQL_HOST', '127.0.0.1'), 'database' => env('MSSQL_DATABASE', 'testexternal'), 'username' => env('MSSQL_USERNAME', 'root'), 'password' => env('MSSQL_PASSWORD', 'password'), - ]]); + ] + ]); Schema::connection('mssql')->dropIfExists('test'); - Schema::connection('mssql')->create('test', function($table) { + Schema::connection('mssql')->create('test', function ($table) { $table->increments('id'); $table->string('value'); }); @@ -119,50 +109,63 @@ if (env('RUN_MSSQL_TESTS')) { ]); } +/** + * This is for standard ProcessMaker tables + */ +if (!env('POPULATE_DATABASE')) { + // Create a table for define the connection + Schema::connection('testexternal')->dropIfExists('test'); + Schema::connection('testexternal')->create('test', function ($table) { + $table->increments('id'); + $table->string('value'); + }); + DB::connection('testexternal')->table('test')->insert([ + 'value' => 'testvalue' + ]); -// THIS IS FOR STANDARD PROCESSMAKER TABLES -// Now, drop all test tables and repopulate with schema -DB::unprepared('SET FOREIGN_KEY_CHECKS = 0'); -$colname = 'Tables_in_' . env('DB_DATABASE'); -$tables = DB::select('SHOW TABLES'); -$drop = []; -foreach ($tables as $table) { - $drop[] = $table->$colname; + // Now, drop all test tables and repopulate with schema + DB::unprepared('SET FOREIGN_KEY_CHECKS = 0'); + $colname = 'Tables_in_' . env('DB_DATABASE', 'test'); + $tables = DB::select('SHOW TABLES'); + $drop = []; + foreach ($tables as $table) { + $drop[] = $table->$colname; + } + if (count($drop)) { + $drop = implode(',', $drop); + DB::statement("DROP TABLE $drop"); + DB::unprepared('SET FOREIGN_KEY_CHECKS = 1'); + } + + // Repopulate with schema and standard inserts + DB::unprepared(file_get_contents(PATH_CORE . 'data/mysql/schema.sql')); + DB::unprepared(file_get_contents(PATH_RBAC_CORE . 'data/mysql/schema.sql')); + DB::unprepared(file_get_contents(PATH_CORE . 'data/mysql/insert.sql')); + DB::unprepared(file_get_contents(PATH_RBAC_CORE . 'data/mysql/insert.sql')); + + // Set our APP_SEQUENCE val + DB::table('APP_SEQUENCE')->insert([ + 'ID' => 1 + ]); + + // Setup our initial oauth client for our web designer + DB::table('OAUTH_CLIENTS')->insert([ + 'CLIENT_ID' => 'x-pm-local-client', + 'CLIENT_SECRET' => '179ad45c6ce2cb97cf1029e212046e81', + 'CLIENT_NAME' => 'PM Web Designer', + 'CLIENT_DESCRIPTION' => 'ProcessMaker Web Designer App', + 'CLIENT_WEBSITE' => 'www.processmaker.com', + 'REDIRECT_URI' => config('app.url') . '/sys' . config('system.workspace') . '/en/neoclassic/oauth2/grant', + 'USR_UID' => '00000000000000000000000000000001' + ]); + DB::table('OAUTH_ACCESS_TOKENS')->insert([ + 'ACCESS_TOKEN' => '39704d17049f5aef45e884e7b769989269502f83', + 'CLIENT_ID' => 'x-pm-local-client', + 'USER_ID' => '00000000000000000000000000000001', + 'EXPIRES' => '2017-06-15 17:55:19', + 'SCOPE' => 'view_processes edit_processes *' + ]); } -if (count($drop)) { - $drop = implode(',', $drop); - DB::statement("DROP TABLE $drop"); - DB::unprepared('SET FOREIGN_KEY_CHECKS = 1'); -} - -// Repopulate with schema and standard inserts -DB::unprepared(file_get_contents(PATH_CORE . 'data/mysql/schema.sql')); -DB::unprepared(file_get_contents(PATH_RBAC_CORE . 'data/mysql/schema.sql')); -DB::unprepared(file_get_contents(PATH_CORE . 'data/mysql/insert.sql')); -DB::unprepared(file_get_contents(PATH_RBAC_CORE . 'data/mysql/insert.sql')); - -// Set our APP_SEQUENCE val -DB::table('APP_SEQUENCE')->insert([ - 'ID' => 1 -]); - -// Setup our initial oauth client for our web designer -DB::table('OAUTH_CLIENTS')->insert([ - 'CLIENT_ID' => 'x-pm-local-client', - 'CLIENT_SECRET' => '179ad45c6ce2cb97cf1029e212046e81', - 'CLIENT_NAME' => 'PM Web Designer', - 'CLIENT_DESCRIPTION' => 'ProcessMaker Web Designer App', - 'CLIENT_WEBSITE' => 'www.processmaker.com', - 'REDIRECT_URI' => config('app.url') . '/sys' . config('system.workspace') . '/en/neoclassic/oauth2/grant', - 'USR_UID' => '00000000000000000000000000000001' -]); -DB::table('OAUTH_ACCESS_TOKENS')->insert([ - 'ACCESS_TOKEN' => '39704d17049f5aef45e884e7b769989269502f83', - 'CLIENT_ID' => 'x-pm-local-client', - 'USER_ID' => '00000000000000000000000000000001', - 'EXPIRES' => '2017-06-15 17:55:19', - 'SCOPE' => 'view_processes edit_processes *' -]); // We need to manually initialize Propel with our test database Propel::initConfiguration([