From b6d1e6cc61812e1199f0ce071eae348a12600569 Mon Sep 17 00:00:00 2001 From: Sanja Date: Tue, 13 Feb 2024 13:26:33 -0800 Subject: [PATCH 01/11] Update admin retrieval logic to use is_administrator --- ProcessMaker/ImportExport/Exporters/ScriptExecutorExporter.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ProcessMaker/ImportExport/Exporters/ScriptExecutorExporter.php b/ProcessMaker/ImportExport/Exporters/ScriptExecutorExporter.php index e3a0152c14..0f3e8a1444 100644 --- a/ProcessMaker/ImportExport/Exporters/ScriptExecutorExporter.php +++ b/ProcessMaker/ImportExport/Exporters/ScriptExecutorExporter.php @@ -23,7 +23,7 @@ public function export() : void public function import() : bool { $authenticatedUser = Auth::user(); - $userId = $authenticatedUser ? $authenticatedUser->id : User::where('username', 'admin')->pluck('id'); + $userId = $authenticatedUser ? $authenticatedUser->id : User::where('is_administrator', true)->first()->id; switch ($this->mode) { case 'copy': case 'new': From 3284ae64e646eb59166f9c49c946155513465756 Mon Sep 17 00:00:00 2001 From: Sanja Date: Wed, 14 Feb 2024 15:09:46 -0800 Subject: [PATCH 02/11] Seed Admin User in test database --- tests/bootstrap.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 586fd87c58..63e2906e85 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -96,6 +96,9 @@ Artisan::call('migrate:fresh', []); Artisan::call('db:seed', ['--class' => 'AnonymousUserSeeder']); + // Seed the super administrator user data + Artisan::call('db:seed', ['--class' => 'UserSeeder']); + \Illuminate\Foundation\Testing\RefreshDatabaseState::$migrated = true; ScriptExecutor::firstOrCreate( From 332da14b365b42b511a142b04cfba6aa616c063b Mon Sep 17 00:00:00 2001 From: Sanja Date: Wed, 14 Feb 2024 16:19:16 -0800 Subject: [PATCH 03/11] Create Admin User Seeder for PHPUnit Tests --- database/seeders/AdminUserSeeder.php | 57 ++++++++++++++++++++++++++++ tests/bootstrap.php | 2 +- 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 database/seeders/AdminUserSeeder.php diff --git a/database/seeders/AdminUserSeeder.php b/database/seeders/AdminUserSeeder.php new file mode 100644 index 0000000000..9868dc93b1 --- /dev/null +++ b/database/seeders/AdminUserSeeder.php @@ -0,0 +1,57 @@ + self::$INSTALLER_ADMIN_USERNAME, + 'is_administrator' => true, + ], [ + 'username' => self::$INSTALLER_ADMIN_USERNAME, + 'password' => Hash::make(env('INSTALL_ADMIN_PASSWORD', self::$INSTALLER_ADMIN_PASSWORD)), + 'email' => self::$INSTALLER_ADMIN_EMAIL, + 'firstname' => self::$INSTALLER_ADMIN_FIRSTNAME, + 'lastname' => self::$INSTALLER_ADMIN_LASTNAME, + 'address' => null, + 'city' => null, + 'state' => null, + 'postal' => null, + 'country' => null, + 'phone' => null, + 'fax' => null, + 'cell' => null, + 'title' => null, + 'birthdate' => null, + 'timezone' => 'America/Los_Angeles', + 'datetime_format' => 'm/d/Y H:i', + 'language' => 'en', + 'status' => 'ACTIVE', + ]); + } +} diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 63e2906e85..e1cb98da8c 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -97,7 +97,7 @@ Artisan::call('db:seed', ['--class' => 'AnonymousUserSeeder']); // Seed the super administrator user data - Artisan::call('db:seed', ['--class' => 'UserSeeder']); + Artisan::call('db:seed', ['--class' => 'AdminUserSeeder']); \Illuminate\Foundation\Testing\RefreshDatabaseState::$migrated = true; From e6e2343ee28f556bf03fb75267886059e8ee991f Mon Sep 17 00:00:00 2001 From: Sanja Date: Wed, 14 Feb 2024 16:31:01 -0800 Subject: [PATCH 04/11] Remove unused 'user' variable --- database/seeders/AdminUserSeeder.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/database/seeders/AdminUserSeeder.php b/database/seeders/AdminUserSeeder.php index 9868dc93b1..82f92836dc 100644 --- a/database/seeders/AdminUserSeeder.php +++ b/database/seeders/AdminUserSeeder.php @@ -28,8 +28,8 @@ class AdminUserSeeder extends Seeder */ public function run(ClientRepository $clients) { - //Create admin user - $user = User::updateOrCreate([ + // Create admin user + User::updateOrCreate([ 'username' => self::$INSTALLER_ADMIN_USERNAME, 'is_administrator' => true, ], [ From b68f58c5c5f678fb36b6ee167d547aca76893ed4 Mon Sep 17 00:00:00 2001 From: Sanja Date: Wed, 14 Feb 2024 16:40:09 -0800 Subject: [PATCH 05/11] SonarQube fixes --- ...UserSeeder.php => AdminTestUserSeeder.php} | 24 +++++++++---------- tests/bootstrap.php | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) rename database/seeders/{AdminUserSeeder.php => AdminTestUserSeeder.php} (56%) diff --git a/database/seeders/AdminUserSeeder.php b/database/seeders/AdminTestUserSeeder.php similarity index 56% rename from database/seeders/AdminUserSeeder.php rename to database/seeders/AdminTestUserSeeder.php index 82f92836dc..db6cace1c8 100644 --- a/database/seeders/AdminUserSeeder.php +++ b/database/seeders/AdminTestUserSeeder.php @@ -9,17 +9,17 @@ use ProcessMaker\Models\GroupMember; use ProcessMaker\Models\User; -class AdminUserSeeder extends Seeder +class AdminTestUserSeeder extends Seeder { - public static $INSTALLER_ADMIN_USERNAME = 'admin_test'; + public static $INSTALLER_ADMIN_TEST_USERNAME = 'admin_test'; - public static $INSTALLER_ADMIN_PASSWORD = 'admin'; + public static $INSTALLER_ADMIN_TEST_PASSWORD = 'admin'; - public static $INSTALLER_ADMIN_EMAIL = 'admin_test@processmaker.com'; + public static $INSTALLER_ADMIN_TEST_EMAIL = 'admin_test@processmaker.com'; - public static $INSTALLER_ADMIN_FIRSTNAME = 'Admin'; + public static $INSTALLER_ADMIN_TEST_FIRSTNAME = 'Admin'; - public static $INSTALLER_ADMIN_LASTNAME = 'TestUser'; + public static $INSTALLER_ADMIN_TEST_LASTNAME = 'TestUser'; /** * Run the database seeds. @@ -30,14 +30,14 @@ public function run(ClientRepository $clients) { // Create admin user User::updateOrCreate([ - 'username' => self::$INSTALLER_ADMIN_USERNAME, + 'username' => self::$INSTALLER_ADMIN_TEST_USERNAME, 'is_administrator' => true, ], [ - 'username' => self::$INSTALLER_ADMIN_USERNAME, - 'password' => Hash::make(env('INSTALL_ADMIN_PASSWORD', self::$INSTALLER_ADMIN_PASSWORD)), - 'email' => self::$INSTALLER_ADMIN_EMAIL, - 'firstname' => self::$INSTALLER_ADMIN_FIRSTNAME, - 'lastname' => self::$INSTALLER_ADMIN_LASTNAME, + 'username' => self::$INSTALLER_ADMIN_TEST_USERNAME, + 'password' => Hash::make(self::$INSTALLER_ADMIN_TEST_PASSWORD), + 'email' => self::$INSTALLER_ADMIN_TEST_EMAIL, + 'firstname' => self::$INSTALLER_ADMIN_TEST_FIRSTNAME, + 'lastname' => self::$INSTALLER_ADMIN_TEST_LASTNAME, 'address' => null, 'city' => null, 'state' => null, diff --git a/tests/bootstrap.php b/tests/bootstrap.php index e1cb98da8c..52737d48fd 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -97,7 +97,7 @@ Artisan::call('db:seed', ['--class' => 'AnonymousUserSeeder']); // Seed the super administrator user data - Artisan::call('db:seed', ['--class' => 'AdminUserSeeder']); + Artisan::call('db:seed', ['--class' => 'AdminTestUserSeeder']); \Illuminate\Foundation\Testing\RefreshDatabaseState::$migrated = true; From da74dfe2d656f6d3ba467153c52639ec307b83ac Mon Sep 17 00:00:00 2001 From: Sanja Date: Thu, 15 Feb 2024 08:30:10 -0800 Subject: [PATCH 06/11] Remove creation and deletion of admin user in test --- tests/Feature/ImportExport/Exporters/ScriptExporterTest.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/Feature/ImportExport/Exporters/ScriptExporterTest.php b/tests/Feature/ImportExport/Exporters/ScriptExporterTest.php index d692a300fd..b2665f3fcd 100644 --- a/tests/Feature/ImportExport/Exporters/ScriptExporterTest.php +++ b/tests/Feature/ImportExport/Exporters/ScriptExporterTest.php @@ -114,9 +114,9 @@ public function testHiddenUsesParentMode() public function testNoMatchingRunAsUser() { - $admin_user = User::factory()->create(['is_administrator' => true]); DB::beginTransaction(); $user = User::factory()->create(['username' => 'test']); + $admin_user = User::where('is_administrator', true)->first(); $script = Script::factory()->create(['title' => 'test', 'run_as_user_id' => $user->id]); $payload = $this->export($script, ScriptExporter::class, null, false); @@ -126,7 +126,6 @@ public function testNoMatchingRunAsUser() $script = Script::where('title', 'test')->firstOrFail(); $this->assertEquals($script->run_as_user_id, $admin_user->id); - $admin_user->delete(); } public function testRunAsUserIdNull() From cffacad60b7baadd53ab8cae727d69c79dfe85df Mon Sep 17 00:00:00 2001 From: Sanja Date: Thu, 15 Feb 2024 11:26:25 -0800 Subject: [PATCH 07/11] Trigger PR --- resources/js/components/templates/WizardTemplateDetails.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/js/components/templates/WizardTemplateDetails.vue b/resources/js/components/templates/WizardTemplateDetails.vue index 39056c3327..f1228b0654 100644 --- a/resources/js/components/templates/WizardTemplateDetails.vue +++ b/resources/js/components/templates/WizardTemplateDetails.vue @@ -72,6 +72,7 @@ export default { helperProcessId: null, startEvents: null, shouldImportProcessTemplate: true, + }; }, computed: { From 2d0a9fb26ea8e6f33ab6b029452c291b59f59a0e Mon Sep 17 00:00:00 2001 From: Sanja Date: Thu, 15 Feb 2024 15:55:03 -0800 Subject: [PATCH 08/11] Testing CICD --- database/seeders/DatabaseSeeder.php | 1 + 1 file changed, 1 insertion(+) diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 12848e826e..e54ecf1813 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -27,6 +27,7 @@ public function run() ScreenSystemSeeder::class, ScriptExecutorSeeder::class, SignalSeeder::class, + AdminTestUserSeeder::class, ]); $this->callPluginSeeders(); } From fe63ec5d6962cb59938d3529217c244994238bac Mon Sep 17 00:00:00 2001 From: Sanja Date: Thu, 15 Feb 2024 16:40:54 -0800 Subject: [PATCH 09/11] Seed the AdminTestUserSeeder when adding GlobalSignalProcesses --- database/seeders/DatabaseSeeder.php | 1 - tests/Feature/ImportExport/HelperTrait.php | 8 ++++++++ tests/bootstrap.php | 3 --- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index e54ecf1813..12848e826e 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -27,7 +27,6 @@ public function run() ScreenSystemSeeder::class, ScriptExecutorSeeder::class, SignalSeeder::class, - AdminTestUserSeeder::class, ]); $this->callPluginSeeders(); } diff --git a/tests/Feature/ImportExport/HelperTrait.php b/tests/Feature/ImportExport/HelperTrait.php index d9bec0c6e6..2bfbab6b75 100644 --- a/tests/Feature/ImportExport/HelperTrait.php +++ b/tests/Feature/ImportExport/HelperTrait.php @@ -2,6 +2,7 @@ namespace Tests\Feature\ImportExport; +use Database\Seeders\AdminTestUserSeeder; use Database\Seeders\SignalSeeder; use Illuminate\Http\UploadedFile; use ProcessMaker\ImportExport\Exporter; @@ -49,6 +50,8 @@ public function createScreen($screenPath, $attrs = [], $watchersPath = null) public function addGlobalSignalProcess() { + $this->addTestAdminUser(); + ProcessCategory::factory()->create(['is_system'=> true]); (new SignalSeeder())->run(); $this->globalSignal = new SignalData('test_global', 'test_global', ''); @@ -89,4 +92,9 @@ public function makeOptions($options = []) json_encode($options) ); } + + public function addTestAdminUser() + { + (new AdminTestUserSeeder())->run(); + } } diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 52737d48fd..586fd87c58 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -96,9 +96,6 @@ Artisan::call('migrate:fresh', []); Artisan::call('db:seed', ['--class' => 'AnonymousUserSeeder']); - // Seed the super administrator user data - Artisan::call('db:seed', ['--class' => 'AdminTestUserSeeder']); - \Illuminate\Foundation\Testing\RefreshDatabaseState::$migrated = true; ScriptExecutor::firstOrCreate( From 2412cc4d7a73291c8d1741aa4de2f071287ff896 Mon Sep 17 00:00:00 2001 From: Sanja Date: Thu, 15 Feb 2024 16:49:45 -0800 Subject: [PATCH 10/11] Update base test case to create test admin user --- database/seeders/AdminTestUserSeeder.php | 57 ---------------------- tests/Feature/ImportExport/HelperTrait.php | 7 --- tests/TestCase.php | 19 ++++++++ 3 files changed, 19 insertions(+), 64 deletions(-) delete mode 100644 database/seeders/AdminTestUserSeeder.php diff --git a/database/seeders/AdminTestUserSeeder.php b/database/seeders/AdminTestUserSeeder.php deleted file mode 100644 index db6cace1c8..0000000000 --- a/database/seeders/AdminTestUserSeeder.php +++ /dev/null @@ -1,57 +0,0 @@ - self::$INSTALLER_ADMIN_TEST_USERNAME, - 'is_administrator' => true, - ], [ - 'username' => self::$INSTALLER_ADMIN_TEST_USERNAME, - 'password' => Hash::make(self::$INSTALLER_ADMIN_TEST_PASSWORD), - 'email' => self::$INSTALLER_ADMIN_TEST_EMAIL, - 'firstname' => self::$INSTALLER_ADMIN_TEST_FIRSTNAME, - 'lastname' => self::$INSTALLER_ADMIN_TEST_LASTNAME, - 'address' => null, - 'city' => null, - 'state' => null, - 'postal' => null, - 'country' => null, - 'phone' => null, - 'fax' => null, - 'cell' => null, - 'title' => null, - 'birthdate' => null, - 'timezone' => 'America/Los_Angeles', - 'datetime_format' => 'm/d/Y H:i', - 'language' => 'en', - 'status' => 'ACTIVE', - ]); - } -} diff --git a/tests/Feature/ImportExport/HelperTrait.php b/tests/Feature/ImportExport/HelperTrait.php index 2bfbab6b75..fda9cc94a0 100644 --- a/tests/Feature/ImportExport/HelperTrait.php +++ b/tests/Feature/ImportExport/HelperTrait.php @@ -50,8 +50,6 @@ public function createScreen($screenPath, $attrs = [], $watchersPath = null) public function addGlobalSignalProcess() { - $this->addTestAdminUser(); - ProcessCategory::factory()->create(['is_system'=> true]); (new SignalSeeder())->run(); $this->globalSignal = new SignalData('test_global', 'test_global', ''); @@ -92,9 +90,4 @@ public function makeOptions($options = []) json_encode($options) ); } - - public function addTestAdminUser() - { - (new AdminTestUserSeeder())->run(); - } } diff --git a/tests/TestCase.php b/tests/TestCase.php index b1e1cdef86..779f559ba6 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -36,6 +36,8 @@ protected function setUp(): void $this->disableSetContentMiddleware(); + $this->createAdministrator(); + foreach (get_class_methods($this) as $method) { $imethod = strtolower($method); if (strpos($imethod, 'setup') === 0 && $imethod !== 'setup') { @@ -44,6 +46,23 @@ protected function setUp(): void } } + /** + * Creates an admin user for each test if one does not already exist + * + * @return void + */ + protected function createAdministrator(): void + { + if (User::where('is_administrator', true)->exists()) { + return; + } + + User::factory()->create([ + 'password' => Hash::make('password'), + 'is_administrator' => true, + ]); + } + /** * Disable middleware that calls setContent() otherwise we can't use assertViewIs() */ From 242cee924af027798c79b22efcc5de720706e429 Mon Sep 17 00:00:00 2001 From: Sanja Date: Thu, 15 Feb 2024 17:27:24 -0800 Subject: [PATCH 11/11] Add missing User Model --- tests/TestCase.php | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/TestCase.php b/tests/TestCase.php index 779f559ba6..260660777e 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -14,6 +14,7 @@ use ProcessMaker\Models\ProcessRequestLock; use ProcessMaker\Models\SecurityLog; use ProcessMaker\Models\Setting; +use ProcessMaker\Models\User; abstract class TestCase extends BaseTestCase {