Fix config save

This commit is contained in:
Taras Machyshyn
2020-03-12 15:41:09 +02:00
parent 1601a12e20
commit 67dea8fd5e
3 changed files with 66 additions and 74 deletions
@@ -229,6 +229,7 @@ class Manager
if (!$this->isDir($tmpDir)) return false;
$tmpPath = tempnam($tmpDir, 'tmp');
$tmpPath = $this->getRelativePath($tmpPath);
if (!$tmpPath) return false;
if (!$this->isFile($tmpPath)) return false;
@@ -978,4 +979,21 @@ class Manager
return $fullPath;
}
public function getRelativePath($path, $basePath = null, $dirSeparator = null)
{
if (!$basePath) {
$basePath = getcwd();
}
if (!$dirSeparator) {
$dirSeparator = Utils\Util::getSeparator();
}
if (substr($basePath, -1) != $dirSeparator) {
$basePath .= $dirSeparator;
}
return preg_replace('/^'. preg_quote($basePath, '/') . '/', '', $path);
}
}
@@ -506,4 +506,28 @@ class ManagerTest extends \PHPUnit\Framework\TestCase
}
}
public function relativePathData()
{
$tmpFile = tempnam('data/tmp', 'tmp');
return [
['data/config.php', 'data/config.php'],
[realpath('data/config.php'), 'data/config.php'],
[$tmpFile, 'data/tmp/' . basename($tmpFile)],
[realpath('application/Espo/Core'), 'application/Espo/Core'],
[realpath('application/Espo/Core') . '/', 'application/Espo/Core/'],
[realpath('application/Espo/Core/Application.php'), 'application/Espo/Core/Application.php'],
['C:\\espocrm\\data\\config.php', 'data\\config.php', 'C:\\espocrm', '\\'],
['C:espocrm\\data\\config.php', 'data\\config.php', 'C:espocrm', '\\'],
['C:\\espocrm\\data\\tmp\\' . basename($tmpFile), 'data\\tmp\\' . basename($tmpFile), 'C:\\espocrm', '\\'],
];
}
/**
* @dataProvider relativePathData
*/
public function testGetRelativePath($path, $expectedResult, $basePath = null, $dirSeparator = null)
{
$this->assertEquals($expectedResult, $this->object->getRelativePath($path, $basePath, $dirSeparator));
}
}
@@ -102,81 +102,31 @@ class PermissionTest extends \PHPUnit\Framework\TestCase
$this->assertEquals( $result, $this->object->arrangePermissionList($this->fileList) );
}
/*public function bestPossibleList()
public function requiredPermissionsData()
{
$fileList = array(
'application/Espo/Controllers',
'application/Espo/Core',
'application/Espo/Core/Cron',
'application/Espo/Core/Loaders',
'application/Espo/Core/Mail',
'application/Espo/Core/Mail/Storage/Imap.php',
'application/Espo/Core/SelectManagers/Base.php',
'application/Espo/Core/Utils/Database/Orm',
'application/Espo/Core/Utils/Database/Orm/Fields',
'application/Espo/Core/Utils/Database/Orm/Relations',
'application/Espo/Core/Utils',
'application/Espo/Core/defaults/config.php',
'application/Espo/Entities',
'application/Espo/Hooks/Common/Stream.php',
'application/Espo/Modules/Crm/Controllers/Opportunity.php',
'application/Espo/Modules/Crm/Jobs/CheckInboundEmails.php',
'application/Espo/Modules/Crm/Resources/i18n/de_DE',
'application/Espo/Modules/Crm/Resources/i18n/en_US',
'application/Espo/Modules/Crm/Resources/i18n/nl_NL',
'application/Espo/Modules/Crm/Resources/i18n/pl_PL',
'application/Espo/Modules/Crm/Resources/layouts/InboundEmail',
'application/Espo/Modules/Crm/Resources/metadata/clientDefs/InboundEmail.json',
'application/Espo/Modules/Crm/Resources/metadata/entityDefs',
'application/Espo/Modules/Crm/Services',
'application/Espo/Repositories',
'application/Espo/Resources/i18n/de_DE',
'application/Espo/Resources/i18n/en_US',
'application/Espo/Resources/i18n/nl_NL',
'application/Espo/Resources/i18n/pl_PL',
'application/Espo/Resources/layouts/Email',
'application/Espo/Resources/layouts/EmailAccount',
'application/Espo/Resources/layouts/User/filters.json',
'application/Espo/Resources/metadata/app',
'application/Espo/Resources/metadata/clientDefs',
'application/Espo/Resources/metadata/entityDefs',
'application/Espo/Resources/metadata/integrations/Google.json',
'application/Espo/Resources/metadata/scopes',
'application/Espo/SelectManagers/EmailAccount.php',
'application/Espo/Services',
'install/core',
'install/core/actions/settingsTest.php',
'install/core/i18n/de_DE/install.json',
'install/core/i18n/en_US/install.json',
'install/core/i18n/es_ES/install.json',
'install/core/i18n/nl_NL/install.json',
'install/core/i18n/pl_PL/install.json',
'install/core/i18n/ro_RO/install.json',
'install/core/i18n/tr_TR/install.json',
'install/js/install.js',
);
$result = array(
'application/Espo/Controllers',
'application/Espo/Core',
'application/Espo/Entities',
'application/Espo/Hooks/Common/Stream.php',
'application/Espo/Modules/Crm',
'application/Espo/Repositories',
'application/Espo/Resources',
'application/Espo/SelectManagers/EmailAccount.php',
'application/Espo/Services',
'install/core',
'install/js/install.js',
);
}*/
return [
['data/config.php', '0775', '0664'],
['data/tmp/tmpivqW1X', '0775', '0664'],
['application/Espo/Core/Application.php', '0755', '0644'],
['custom/Espo/Custom/Resources/metadata/entityDefs', '0775', '0664'],
['custom/Espo/Custom/Resources/metadata/entityDefs/Account.json', '0775', '0664'],
['application/Espo/Modules', '0775', '0664'],
['application/Espo/Modules/Crm/Resources', '0755', '0644'],
['application/Espo/Modules/Crm/Resources/layouts/Account/detail.json', '0755', '0644'],
['client/modules', '0775', '0664'],
['client/modules/crm/src', '0755', '0644'],
['client/modules/crm/src/views/account/detail.js', '0755', '0644'],
];
}
/**
* @dataProvider requiredPermissionsData
*/
public function testGetRequiredPermissions($path, $dirPermission, $filePermission)
{
$result = $this->object->getRequiredPermissions($path);
$this->assertEquals($dirPermission, $result['dir']);
$this->assertEquals($filePermission, $result['file']);
}
}
?>