From 1de179f68355a290ae30fa78503dc9f6081488fb Mon Sep 17 00:00:00 2001 From: Romain Quetiez Date: Sat, 18 May 2024 17:49:07 +0200 Subject: [PATCH] =?UTF-8?q?N=C2=B04459=20Make=20sure=20that=20every=20test?= =?UTF-8?q?=20will=20pass=20even=20if=20the=20CI=20provides=20an=20invalid?= =?UTF-8?q?=20configuration=20file.=20Also=20allow=20encryption=20mecanism?= =?UTF-8?q?=20to=20be=20fully=20controlled=20by=20the=20tests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/attributedef.class.inc.php | 45 ++----------------- .../src/BaseTestCase/ItopDataTestCase.php | 7 +++ .../QueryBuilderExpressionsTest.php | 8 ---- 3 files changed, 11 insertions(+), 49 deletions(-) diff --git a/core/attributedef.class.inc.php b/core/attributedef.class.inc.php index 983c60b70..181075f5f 100644 --- a/core/attributedef.class.inc.php +++ b/core/attributedef.class.inc.php @@ -4272,43 +4272,6 @@ class AttributeEncryptedString extends AttributeString implements iAttributeNoGr { const SEARCH_WIDGET_TYPE = self::SEARCH_WIDGET_TYPE_RAW; - static $sKey = null; // Encryption key used for all encrypted fields - static $sLibrary = null; // Encryption library used for all encrypted fields - - public function __construct($sCode, $aParams) - { - parent::__construct($sCode, $aParams); - if (self::$sKey == null) - { - self::$sKey = MetaModel::GetConfig()->GetEncryptionKey(); - } - if (self::$sLibrary == null) - { - self::$sLibrary = MetaModel::GetConfig()->GetEncryptionLibrary(); - } - } - - /** - * When the attribute definitions are stored in APC cache: - * 1) The static class variable $sKey is NOT serialized - * 2) The object's constructor is NOT called upon wakeup - * 3) mcrypt may crash the server if passed an empty key !! - * - * So let's restore the key (if needed) when waking up - **/ - public function __wakeup() - { - if (self::$sKey == null) - { - self::$sKey = MetaModel::GetConfig()->GetEncryptionKey(); - } - if (self::$sLibrary == null) - { - self::$sLibrary = MetaModel::GetConfig()->GetEncryptionLibrary(); - } - } - - protected function GetSQLCol($bFullSpec = false) { return "TINYBLOB"; @@ -4347,8 +4310,8 @@ class AttributeEncryptedString extends AttributeString implements iAttributeNoGr */ public function FromSQLToValue($aCols, $sPrefix = '') { - $oSimpleCrypt = new SimpleCrypt(self::$sLibrary); - $sValue = $oSimpleCrypt->Decrypt(self::$sKey, $aCols[$sPrefix]); + $oSimpleCrypt = new SimpleCrypt(MetaModel::GetConfig()->GetEncryptionLibrary()); + $sValue = $oSimpleCrypt->Decrypt(MetaModel::GetConfig()->GetEncryptionKey(), $aCols[$sPrefix]); return $sValue; } @@ -4363,8 +4326,8 @@ class AttributeEncryptedString extends AttributeString implements iAttributeNoGr */ public function GetSQLValues($value) { - $oSimpleCrypt = new SimpleCrypt(self::$sLibrary); - $encryptedValue = $oSimpleCrypt->Encrypt(self::$sKey, $value); + $oSimpleCrypt = new SimpleCrypt(MetaModel::GetConfig()->GetEncryptionLibrary()); + $encryptedValue = $oSimpleCrypt->Encrypt(MetaModel::GetConfig()->GetEncryptionKey(), $value); $aValues = array(); $aValues[$this->Get("sql")] = $encryptedValue; diff --git a/tests/php-unit-tests/src/BaseTestCase/ItopDataTestCase.php b/tests/php-unit-tests/src/BaseTestCase/ItopDataTestCase.php index 3ff845b10..525583097 100644 --- a/tests/php-unit-tests/src/BaseTestCase/ItopDataTestCase.php +++ b/tests/php-unit-tests/src/BaseTestCase/ItopDataTestCase.php @@ -129,6 +129,13 @@ abstract class ItopDataTestCase extends ItopTestCase { $this->CreateTestOrganization(); } + + $oConfig = MetaModel::GetConfig(); + if ($oConfig->GetEncryptionLibrary() != DEFAULT_ENCRYPTION_LIB + && $oConfig->GetEncryptionKey() == DEFAULT_ENCRYPTION_KEY) { + // Config file is corrupted, let's fix it + $oConfig->SetEncryptionKey("6eb9d9afa3ee0fbcebe622a33bf57aaeafb7c37998fd24c403c2522c2d60117f"); + } } /** diff --git a/tests/php-unit-tests/unitary-tests/core/querybuilderexpressions/QueryBuilderExpressionsTest.php b/tests/php-unit-tests/unitary-tests/core/querybuilderexpressions/QueryBuilderExpressionsTest.php index d2e036603..3f3af0e0e 100644 --- a/tests/php-unit-tests/unitary-tests/core/querybuilderexpressions/QueryBuilderExpressionsTest.php +++ b/tests/php-unit-tests/unitary-tests/core/querybuilderexpressions/QueryBuilderExpressionsTest.php @@ -14,14 +14,6 @@ class QueryBuilderExpressionsTest extends \Combodo\iTop\Test\UnitTest\ItopCustom return __DIR__."/Delta/all-attributes.xml"; } - protected function setUp(): void - { - parent::setUp(); - - // Workaround to cope with inconsistent settings in itop-config files from the CI - \AttributeEncryptedString::$sKey = "6eb9d9afa3ee0fbcebe622a33bf57aaeafb7c37998fd24c403c2522c2d60117f"; - } - public function testICanWriteAndReadAnyTypeOfAttribute() { $oTagA = \MetaModel::NewObject(\TagSetFieldData::GetTagDataClassName('TestObject', 'tagset'), [