newInstanceWithoutConstructor(); foreach ([ 'username' => 'demo', 'prefix' => 'demo_', 'userConf' => $userConf, 'packageConf' => $packageConf, 'settings' => $settings, ] as $property => $value) { $prop = $class->getProperty($property); $prop->setAccessible(true); $prop->setValue($user, $value); } return $user; } $alwaysSettings = load_settings("always_enabled=1\nMYSQL_PLUGIN_DEFAULT_DB_LIMIT=5\n"); assert_true($alwaysSettings->alwaysEnabled(), 'always_enabled=1 should be enabled'); $alwaysUser = make_da_user($alwaysSettings, [ 'mysql_enabled' => 'no', 'mysql' => '0', 'plugins_deny' => 'alt-mysql', ], []); assert_true($alwaysUser->hasPluginAccess(), 'always_enabled=1 should bypass per-user enable and plugin deny rules'); assert_same(0, $alwaysUser->maxDatabases(), 'always_enabled=1 should make database limit unlimited'); $defaultSettings = load_settings(""); assert_true($defaultSettings->alwaysEnabled(), 'always_enabled should default to enabled'); $defaultUser = make_da_user($defaultSettings, [], []); assert_true($defaultUser->hasPluginAccess(), 'default always_enabled should grant access without custom package items'); assert_same(0, $defaultUser->maxDatabases(), 'default always_enabled should make database limit unlimited'); $legacySettings = load_settings("always_enabled=0\nMYSQL_PLUGIN_DEFAULT_DB_LIMIT=5\n"); assert_true(!$legacySettings->alwaysEnabled(), 'always_enabled=0 should disable automatic access'); $legacyUser = make_da_user($legacySettings, [ 'mysql_enabled' => 'no', 'mysql' => '0', ], []); assert_true(!$legacyUser->hasPluginAccess(), 'always_enabled=0 should preserve per-user access checks'); assert_same(0, $legacyUser->maxDatabases(), 'explicit mysql=0 remains zero in legacy mode'); echo "always_enabled_test: OK\n";