diff --git a/.travis.yml b/.travis.yml index 32116a4c0..ea7d7c572 100644 --- a/.travis.yml +++ b/.travis.yml @@ -49,7 +49,6 @@ before_script: - mysql -u root -e "GRANT ALL ON TEST.* TO 'TEST'@'localhost' IDENTIFIED BY 'TEST';" - mysql -u root -e "GRANT FILE ON *.* TO 'TEST'@'localhost';" - mysql -u TEST -pTEST TEST < resources/db/schema/mysql-ddl.sql - - mysql --local-infile=1 -u TEST -pTEST -e "LOAD DATA LOCAL INFILE 'resources/db/schema/data/10-settings.tsv' IGNORE INTO TABLE TEST.settings FIELDS TERMINATED BY '\t' OPTIONALLY ENCLOSED BY '\'' LINES TERMINATED BY '\n' IGNORE 1 LINES (section,subsection,name,value,hint,setting);" # Disable apparmor. - if service apparmor status; then service apparmor stop; update-rc.d -f apparmor remove; service apparmor teardown; fi # Change MySQL settings. diff --git a/Changelog b/Changelog index 2789acca0..cfd739a81 100755 --- a/Changelog +++ b/Changelog @@ -1,4 +1,5 @@ 2018-01-18 DariusIII + * Fix: Fix installation and tests * Chg: Update scrutinizer config * Chg: Change installation, remove tsv files and related tables, use migrations and seeding for them 2018-01-17 DariusIII diff --git a/_install/install_nntmux.php b/_install/install_nntmux.php index 254a1650c..09a32173c 100644 --- a/_install/install_nntmux.php +++ b/_install/install_nntmux.php @@ -11,7 +11,6 @@ use nntmux\ColorCLI; use nntmux\db\DbUpdate; use nntmux\config\Configure; use App\Extensions\util\Versions; -use Illuminate\Database\Capsule\Manager as Capsule; $config = new Configure('install'); @@ -97,15 +96,18 @@ if (! $error) { ); $pdo->exec('SET FOREIGN_KEY_CHECKS=0;'); - try { - $DbSetup->processSQLFile(); // Setup default schema - ColorCLI::doEcho(ColorCLI::header('Migrating tables and populating them')); - passthru('php '.NN_ROOT.'artisan migrate'); - passthru('php '.NN_ROOT.'artisan db:seed'); - } catch (\RuntimeException $err) { + $DbSetup->processSQLFile(); // Setup default schema + //Insert admin user into database + if (env('ADMIN_USER') === '' || env('ADMIN_PASS') === '' || env('ADMIN_EMAIL') === '') { $error = true; - ColorCLI::doEcho(ColorCLI::error('Error ('.$err->getMessage().')')); + ColorCLI::doEcho(ColorCLI::error('Admin user data cannot be empty! Please edit .env file and fill in admin user details and run this script again!')); + exit(); } + $pdo->queryExec(sprintf('INSERT INTO users (username, email, password, user_roles_id, created_at) VALUES (%s, %s, %s, 2, NOW())', $pdo->escapeString(env('ADMIN_USER')), $pdo->escapeString(env('ADMIN_EMAIL')), $pdo->escapeString(User::hashPassword(env('ADMIN_PASS'))))); + ColorCLI::doEcho(ColorCLI::header('Migrating tables and populating them')); + passthru('php '.NN_ROOT.'artisan migrate'); + passthru('php '.NN_ROOT.'artisan db:seed'); + if (! $error) { // Check one of the standard tables was created and has data. @@ -128,7 +130,7 @@ if (! $error) { if ($dbInstallWorked) { $updateSettings = false; if ($patch > 0) { - $updateSettings = $pdo->exec( + $updateSettings = $pdo->queryExec( "UPDATE settings SET value = '$patch' WHERE section = '' AND subsection = '' AND name = 'sqlpatch'" ); } @@ -146,47 +148,6 @@ if (! $error) { } } } -//Insert admin user into database -if (env('ADMIN_USER') === '' || env('ADMIN_PASS') === '' || env('ADMIN_EMAIL') === '') { - $error = true; - ColorCLI::doEcho(ColorCLI::error('Admin user data cannot be empty! Please edit .env file and fill in admin user details and run this script again!')); - exit(); -} - - $capsule = new Capsule; - // Same as database configuration file of Laravel. - $capsule->addConnection([ - 'driver' => env('DB_SYSTEM'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_NAME', 'nntmux'), - 'username' => env('DB_USER', 'root'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8', - 'collation' => 'utf8_unicode_ci', - 'strict' => false, - ]); -$capsule->bootEloquent(); - -if (! User::isValidUsername(env('ADMIN_USER'))) { - $error = true; -} else { - $usrCheck = User::getByUsername(env('ADMIN_USER')); - if ($usrCheck) { - $error = true; - } -} -if (! User::isValidEmail(env('ADMIN_EMAIL'))) { - $error = true; -} - -if (! $error) { - $adminCheck = User::add(env('ADMIN_USER'), env('ADMIN_PASS'), env('ADMIN_EMAIL'), 2, '', ''); - if (! is_numeric($adminCheck)) { - $error = true; - } -} if (! $error) { $doCheck = true; diff --git a/tests/Install/InstallTest.php b/tests/Install/InstallTest.php index f65c5c9ea..2aa60c1ae 100644 --- a/tests/Install/InstallTest.php +++ b/tests/Install/InstallTest.php @@ -125,15 +125,17 @@ class InstallTest extends \PHPUnit\Framework\TestCase ); $pdo->exec('SET FOREIGN_KEY_CHECKS=0;'); - try { - $DbSetup->processSQLFile(); // Setup default schema - ColorCLI::doEcho(ColorCLI::header('Migrating tables and populating them')); - passthru('php '.NN_ROOT.'artisan migrate'); - passthru('php '.NN_ROOT.'artisan db:seed'); - } catch (\RuntimeException $err){ + $DbSetup->processSQLFile(); // Setup default schema + //Insert admin user into database + if (env('ADMIN_USER') === '' || env('ADMIN_PASS') === '' || env('ADMIN_EMAIL') === '') { $error = true; - ColorCLI::doEcho(ColorCLI::error('Error (' . $err->getMessage() . ')')); + ColorCLI::doEcho(ColorCLI::error('Admin user data cannot be empty! Please edit .env file and fill in admin user details and run this script again!')); + exit(); } + $pdo->queryExec(sprintf('INSERT INTO users (username, email, password, user_roles_id, created_at) VALUES (%s, %s, %s, 2, NOW())', $pdo->escapeString(env('ADMIN_USER')), $pdo->escapeString(env('ADMIN_EMAIL')), $pdo->escapeString(User::hashPassword(env('ADMIN_PASS'))))); + ColorCLI::doEcho(ColorCLI::header('Migrating tables and populating them')); + passthru('php '.NN_ROOT.'artisan migrate'); + passthru('php '.NN_ROOT.'artisan db:seed'); if (!$error) { // Check one of the standard tables was created and has data. @@ -156,7 +158,7 @@ class InstallTest extends \PHPUnit\Framework\TestCase if ($dbInstallWorked) { $updateSettings = false; if ($patch > 0) { - $updateSettings = $pdo->exec( + $updateSettings = $pdo->queryExec( "UPDATE settings SET value = '$patch' WHERE section = '' AND subsection = '' AND name = 'sqlpatch'" ); } @@ -176,48 +178,6 @@ class InstallTest extends \PHPUnit\Framework\TestCase } } } -//Insert admin user into database - if (env('ADMIN_USER') === '' || env('ADMIN_PASS') === '' || env('ADMIN_EMAIL') === '') { - $error = true; - ColorCLI::doEcho(ColorCLI::error('Admin user data cannot be empty! Please edit .env file and fill in admin user details and run this script again!')); - exit(); - } - - $capsule = new Capsule; - // Same as database configuration file of Laravel. - $capsule->addConnection([ - 'driver' => env('DB_SYSTEM'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_NAME', 'nntmux'), - 'username' => env('DB_USER', 'root'), - 'password' => env('DB_PASSWORD', ''), - 'unix_socket' => env('DB_SOCKET', ''), - 'charset' => 'utf8', - 'collation' => 'utf8_unicode_ci', - 'strict' => false - ], 'default' - ); - $capsule->bootEloquent(); - - if (!User::isValidUsername(env('ADMIN_USER'))) { - $error = true; - } else { - $usrCheck = User::getByUsername(env('ADMIN_USER')); - if ($usrCheck) { - $error = true; - } - } - if (!User::isValidEmail(env('ADMIN_EMAIL'))) { - $error = true; - } - - if (!$error) { - $adminCheck = User::add(env('ADMIN_USER'), env('ADMIN_PASS'), env('ADMIN_EMAIL'), 2, '', ''); - if (!is_numeric($adminCheck)) { - $error = true; - } - } if (!$error) { $doCheck = true;