mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-27 14:14:11 +01:00
# Conflicts: # tests/manual-visual-tests/Backoffice/RenderAllUiBlocks.php # tests/php-unit-tests/ItopDataTestCase.php # tests/php-unit-tests/ItopTestCase.php # tests/php-unit-tests/integration-tests/dictionaries-test/fr.dictionary.itop.core.KO.wrong_php # tests/php-unit-tests/integration-tests/dictionaries-test/fr.dictionary.itop.core.OK.php # tests/php-unit-tests/integration-tests/iTopModulesPhpVersionChecklistTest.php # tests/php-unit-tests/integration-tests/iTopXmlVersionChecklistTest.php # tests/php-unit-tests/phpunit.xml.dist # tests/php-unit-tests/unitary-tests/application/SCSSCompilationTest.php # tests/php-unit-tests/unitary-tests/application/Session/SessionTest.php # tests/php-unit-tests/unitary-tests/application/ThemeHandlerTest.php # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/DO_NOT_CHANGE.css-variables.scss # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/DO_NOT_CHANGE.light-grey.scss # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/README.md # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/_included_file3.scss # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/cross_reference1.scss # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/cross_reference2.scss # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/feature1/_feature1.scss # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/included_file1.scss # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/included_scss/included_file2.scss # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/included_scss/included_file4.scss # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/multi_imports.scss # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/shortcut.scss # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/shortcut2.scss # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/simple_import.scss # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/simple_import2.scss # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/typography.scss # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/css/ui-lightness/DO_NOT_CHANGE.jqueryui.scss # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/css/ui-lightness/images/ui-icons_1c94c4_256x240.png # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/css/ui-lightness/images/ui-icons_222222_256x240.png # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/css/ui-lightness/images/ui-icons_E87C1E_256x240.png # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/css/ui-lightness/images/ui-icons_F26522_256x240.png # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/css/ui-lightness/images/ui-icons_ffd27a_256x240.png # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/css/ui-lightness/images/ui-icons_ffffff_256x240.png # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/ac-background.gif # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/actions_right.png # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/bg.gif # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/breadcrumb-separator.png # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/calendar.png # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/delete.png # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/desc.gif # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/error.png # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/eye-closed-555.png # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/eye-closed-fff.png # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/eye-open-555.png # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/eye-open-fff.png # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/full-screen.png # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/green-header.gif # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/green-square.gif # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/indicator.gif # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/info-mini.png # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/minus.gif # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/ok.png # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/orange-header.gif # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/plus.gif # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/red-header.gif # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/truncated.png # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/tv-collapsable-last.gif # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/tv-collapsable.gif # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/tv-expandable-last.gif # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/tv-expandable.gif # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/tv-item-last.gif # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/testimages/images/tv-item.gif # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/themes/basque-red/main.css # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/themes/basque-red/main_imagemodified.css # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/themes/basque-red/main_importmodified.css # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/themes/basque-red/main_stylesheet.css # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/themes/basque-red/main_testcompilethemes.css # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/themes/basque-red/main_varchanged.css # tests/php-unit-tests/unitary-tests/application/theme-handler/expected/themes/basque-red/theme-parameters.json # tests/php-unit-tests/unitary-tests/application/theme-handler/getimages/expected-getimages.json # tests/php-unit-tests/unitary-tests/application/theme-handler/getimages/test-getimages.scss # tests/php-unit-tests/unitary-tests/core/ActionEmailTest.php # tests/php-unit-tests/unitary-tests/core/AttributeDefTest.inc.php # tests/php-unit-tests/unitary-tests/core/AttributeURLDefaultPattern.php # tests/php-unit-tests/unitary-tests/core/AttributeURLTest.php # tests/php-unit-tests/unitary-tests/core/BulkChangeTest.inc.php # tests/php-unit-tests/unitary-tests/core/CSVParserTest.php # tests/php-unit-tests/unitary-tests/core/DBObjectTest.php # tests/php-unit-tests/unitary-tests/core/DBSearchAddConditionPointingTo.php # tests/php-unit-tests/unitary-tests/core/ExpressionEvaluateTest.php # tests/php-unit-tests/unitary-tests/core/GetSelectFilterTest.php # tests/php-unit-tests/unitary-tests/core/InlineImageTest.php # tests/php-unit-tests/unitary-tests/core/Log/ExceptionLogTest.php # tests/php-unit-tests/unitary-tests/core/Log/ExceptionLogTest/Exceptions.php # tests/php-unit-tests/unitary-tests/core/Log/LogAPITest.php # tests/php-unit-tests/unitary-tests/core/Log/LogFileNameBuilderTest.php # tests/php-unit-tests/unitary-tests/core/LogAPITest.php # tests/php-unit-tests/unitary-tests/core/LogFileNameBuilderTest.php # tests/php-unit-tests/unitary-tests/core/MetaModelTest.php # tests/php-unit-tests/unitary-tests/core/OQLTest.php # tests/php-unit-tests/unitary-tests/core/UniquenessConstraintTest.php # tests/php-unit-tests/unitary-tests/core/XMLDataLoaderTest.php # tests/php-unit-tests/unitary-tests/core/dictApcuTest.php # tests/php-unit-tests/unitary-tests/core/dictTest.php # tests/php-unit-tests/unitary-tests/core/ormCaseLogTest.php # tests/php-unit-tests/unitary-tests/core/ormPasswordTest.php # tests/php-unit-tests/unitary-tests/core/ormStyleTest.php # tests/php-unit-tests/unitary-tests/setup/MFCompilerTest.php # tests/php-unit-tests/unitary-tests/setup/SubMFCompiler.php # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/1.7_to_1.6.expected.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/1.7_to_1.6.input.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/1.6_to_1.7_2.expected.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/1.6_to_1.7_2.input.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/1.7.input.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/1.7_to_1.6.expected.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/1.7_to_1.6.input.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/1.7_to_1.6_2.expected.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/1.7_to_1.6_2.input.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/1.7_to_3.0.expected.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/1.7_to_3.0.input.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/3.0_to_1.7.expected.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/3.0_to_1.7.input.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/Bug_4569.expected.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/Convert-samples/Bug_4569.input.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_deleted_to_deleted.expected.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_deleted_to_deleted.input.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_deleted_to_in-definition.expected.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_deleted_to_in-definition.input.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_deleted_to_not-in-definition.expected.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_deleted_to_not-in-definition.input.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_in-definition_to_deleted.expected.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_in-definition_to_deleted.input.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_in-definition_to_in-definition.expected.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_in-definition_to_in-definition.input.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_in-definition_to_not-in-definition.expected.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_in-definition_to_not-in-definition.input.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_not-in-definition_to_deleted.expected.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_not-in-definition_to_deleted.input.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_not-in-definition_to_in-definition.expected.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_not-in-definition_to_in-definition.input.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_not-in-definition_to_not-in-definition.expected.xml # tests/php-unit-tests/unitary-tests/setup/iTopDesignFormat/MoveNode-samples/from_not-in-definition_to_not-in-definition.input.xml # tests/php-unit-tests/unitary-tests/setup/ressources/datamodels/datamodel-branding.xml # tests/php-unit-tests/unitary-tests/sources/application/Helper/WebResourcesHelperTest.php # tests/php-unit-tests/unitary-tests/sources/application/status/StatusIncTest.php # tests/php-unit-tests/unitary-tests/sources/application/status/status.php # tests/php-unit-tests/unitary-tests/synchro/DataSynchroTest.php
405 lines
14 KiB
PHP
405 lines
14 KiB
PHP
<?php
|
|
|
|
namespace Combodo\iTop\Test\UnitTest\Core;
|
|
|
|
use CMDBSource;
|
|
use Combodo\iTop\Test\UnitTest\ItopDataTestCase;
|
|
use MetaModel;
|
|
|
|
/**
|
|
* @runTestsInSeparateProcesses
|
|
* @preserveGlobalState disabled
|
|
* @backupGlobals disabled
|
|
*/
|
|
class BulkChangeTest extends ItopDataTestCase {
|
|
const CREATE_TEST_ORG = true;
|
|
|
|
protected function setUp(): void
|
|
{
|
|
parent::setUp();
|
|
$this->RequireOnceItopFile('core/bulkchange.class.inc.php');
|
|
|
|
}
|
|
|
|
//bug 2888: csv import / data synchro issue with password validation
|
|
public function testPasswordBulkChangeIssue() {
|
|
/** @var Personn $oPerson */
|
|
$oPerson = $this->createObject('Person', array(
|
|
'first_name' => 'isaac',
|
|
'name' => 'asimov',
|
|
'email' => 'isaac.asimov@fundation.org',
|
|
'org_id' => $this->getTestOrgId(),
|
|
));
|
|
|
|
$aData = array(
|
|
array(
|
|
$oPerson->Get("first_name"),
|
|
$oPerson->Get("name"),
|
|
$oPerson->Get("email"),
|
|
"EN US",
|
|
"iasimov",
|
|
"harryseldon",
|
|
"profileid->name:Administrator",
|
|
),
|
|
);
|
|
$aAttributes = array("language" => 3, "login" => 4, "password" => 5, "profile_list" => 6);
|
|
$aExtKeys = array(
|
|
"contactid" =>
|
|
array("first_name" => 0, "name" => 1, "email" => 2),
|
|
);
|
|
$oBulk = new \BulkChange(
|
|
"UserLocal",
|
|
$aData,
|
|
$aAttributes,
|
|
$aExtKeys,
|
|
array("login"),
|
|
null,
|
|
null,
|
|
"Y-m-d H:i:s", // date format
|
|
true // localize
|
|
);
|
|
|
|
$oChange = \CMDBObject::GetCurrentChange();
|
|
$aRes = $oBulk->Process($oChange);
|
|
static::assertNotNull($aRes);
|
|
|
|
foreach ($aRes as $aRow) {
|
|
if (array_key_exists('__STATUS__', $aRow)) {
|
|
$sStatus = $aRow['__STATUS__'];
|
|
$this->assertFalse(strstr($sStatus->GetDescription(), "CoreCannotSaveObjectException"),
|
|
"CSVimport/Datasynchro: Password validation failed with: ".$sStatus->GetDescription());
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* test $oBulk->Process with server 1 from demo datas
|
|
* @dataProvider BulkChangeProvider
|
|
*
|
|
* @param $aData
|
|
* @param $aAttributes
|
|
* @param $aExtKeys
|
|
* @param $aReconcilKeys
|
|
*/
|
|
public function testBulkChangeIssue($aData, $aAttributes, $aExtKeys, $aReconcilKeys, $aResult) {
|
|
$this->debug("aReconcilKeys:".$aReconcilKeys[0]);
|
|
$oBulk = new \BulkChange(
|
|
"Server",
|
|
$aData,
|
|
$aAttributes,
|
|
$aExtKeys,
|
|
$aReconcilKeys,
|
|
null,
|
|
null,
|
|
"Y-m-d H:i:s", // date format
|
|
true // localize
|
|
);
|
|
|
|
$oChange = \CMDBObject::GetCurrentChange();
|
|
$aRes = $oBulk->Process($oChange);
|
|
static::assertNotNull($aRes);
|
|
|
|
foreach ($aRes as $aRow) {
|
|
if (array_key_exists('__STATUS__', $aRow)) {
|
|
$sStatus = $aRow['__STATUS__'];
|
|
//$this->debug("sStatus:".$sStatus->GetDescription());
|
|
$this->assertEquals($sStatus->GetDescription(), $aResult["__STATUS__"]);
|
|
foreach ($aRow as $i => $oCell) {
|
|
if ($i != "finalclass" && $i != "__STATUS__") {
|
|
$this->debug("i:".$i);
|
|
$this->debug('GetDisplayableValue:'.$oCell->GetDisplayableValue());
|
|
$this->debug("aResult:".$aResult[$i]);
|
|
$this->assertEquals($oCell->GetDisplayableValue(), $aResult[$i]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public function BulkChangeProvider() {
|
|
return [
|
|
"Case 3, 5 et 8 : unchanged" => [
|
|
[["Demo", "Server1", "1", "production", ""]],
|
|
["name" => 1, "id" => 2, "status" => 3, "purchase_date" => 4],
|
|
["org_id" => ["name" => 0]],
|
|
["id"],
|
|
[0 => "Demo", "org_id" => "3", 1 => "Server1", 2 => "1", 3 => "production", 4 => "", "id" => 1, "__STATUS__" => "unchanged"],
|
|
],
|
|
"Case 9 : wrong date format" => [
|
|
[["Demo", "Server1", "1", "production", "date"]],
|
|
["name" => 1, "id" => 2, "status" => 3, "purchase_date" => 4],
|
|
["org_id" => ["name" => 0]],
|
|
["id"],
|
|
[ 0 => "Demo", "org_id" => "n/a", 1 => "Server1", 2 => "1", 3 => "production", 4 => "date", "id" => 1, "__STATUS__" => "Issue: wrong date format"],
|
|
],
|
|
"Case 1 : no match" => [
|
|
[["Bad", "Server1", "1", "production", ""]],
|
|
["name" => 1, "id" => 2, "status" => 3, "purchase_date" => 4],
|
|
["org_id" => ["name" => 0]],
|
|
["id"],
|
|
["org_id" => "",1 => "Server1",2 => "1", 3 => "production", 4 => "", "id" => 1, "__STATUS__" => "Issue: Unexpected attribute value(s)"],
|
|
],
|
|
"Case 10 : Missing mandatory value" => [
|
|
[["", "Server1", "1", "production", ""]],
|
|
["name" => 1, "id" => 2, "status" => 3, "purchase_date" => 4],
|
|
["org_id" => ["name" => 0]],
|
|
["id"],
|
|
[ "org_id" => "", 1 => "Server1", 2 => "1", 3 => "production", 4 => "", "id" => 1, "__STATUS__" => "Issue: Unexpected attribute value(s)"],
|
|
],
|
|
"Case 6 : Unexpected value" => [
|
|
[["Demo", "Server1", "1", "<svg onclick\"alert(1)\">", ""]],
|
|
["name" => 1, "id" => 2, "status" => 3, "purchase_date" => 4],
|
|
["org_id" => ["name" => 0]],
|
|
["id"],
|
|
[0 => "Demo", "org_id" => "3", 1 => "Server1", 2 => "1", 3 => "<svg onclick"alert(1)">", 4 => "", "id" => 1, "__STATUS__" => "Issue: Unexpected attribute value(s)"],
|
|
],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* test $oBulk->Process with new server datas
|
|
* @dataProvider CSVImportProvider
|
|
*
|
|
* @param $aInitData
|
|
* @param $aCsvData
|
|
* @param $aAttributes
|
|
* @param $aExtKeys
|
|
* @param $aReconcilKeys
|
|
*/
|
|
public function testCas1BulkChangeIssue($aInitData, $aCsvData, $aAttributes, $aExtKeys, $aReconcilKeys, $aResult) {
|
|
CMDBSource::Query('START TRANSACTION');
|
|
//change value during the test
|
|
$db_core_transactions_enabled=MetaModel::GetConfig()->Get('db_core_transactions_enabled');
|
|
MetaModel::GetConfig()->Set('db_core_transactions_enabled',false);
|
|
/** @var Server $oServer */
|
|
$oServer = $this->createObject('Server', array(
|
|
'name' => $aInitData[1],
|
|
'status' => $aInitData[2],
|
|
'org_id' => $aInitData[0],
|
|
'purchase_date' => $aInitData[3],
|
|
));
|
|
$aCsvData[0][2]=$oServer->GetKey();
|
|
$aResult[2]=$oServer->GetKey();
|
|
$aResult["id"]=$oServer->GetKey();
|
|
$this->debug("oServer->GetKey():".$oServer->GetKey());
|
|
$this->debug("aCsvData:".json_encode($aCsvData[0]));
|
|
$this->debug("aReconcilKeys:".$aReconcilKeys[0]);
|
|
$oBulk = new \BulkChange(
|
|
"Server",
|
|
$aCsvData,
|
|
$aAttributes,
|
|
$aExtKeys,
|
|
$aReconcilKeys,
|
|
null,
|
|
null,
|
|
"Y-m-d H:i:s", // date format
|
|
true // localize
|
|
);
|
|
$this->debug("BulkChange:");
|
|
$oChange = \CMDBObject::GetCurrentChange();
|
|
$this->debug("GetCurrentChange:");
|
|
$aRes = $oBulk->Process($oChange);
|
|
$this->debug("Process:");
|
|
static::assertNotNull($aRes);
|
|
$this->debug("assertNotNull:");
|
|
foreach ($aRes as $aRow) {
|
|
if (array_key_exists('__STATUS__', $aRow)) {
|
|
$sStatus = $aRow['__STATUS__'];
|
|
$this->debug("sStatus:".$sStatus->GetDescription());
|
|
$this->assertEquals($sStatus->GetDescription(), $aResult["__STATUS__"]);
|
|
foreach ($aRow as $i => $oCell) {
|
|
if ($i != "finalclass" && $i != "__STATUS__") {
|
|
$this->debug("i:".$i);
|
|
$this->debug('GetDisplayableValue:'.$oCell->GetDisplayableValue());
|
|
$this->debug("aResult:".$aResult[$i]);
|
|
$this->assertEquals( $aResult[$i], $oCell->GetDisplayableValue());
|
|
}
|
|
}
|
|
$this->assertEquals( $aResult[0], $aRow[0]->GetDisplayableValue());
|
|
}
|
|
}
|
|
CMDBSource::Query('ROLLBACK');
|
|
MetaModel::GetConfig()->Set('db_core_transactions_enabled',$db_core_transactions_enabled);
|
|
}
|
|
|
|
public function CSVImportProvider() {
|
|
return [
|
|
"Case 6 - 1 : Unexpected value" => [
|
|
["1", "ServerTest", "production", ""],
|
|
[["Demo", "ServerTest", "key", "BadValue", ""]],
|
|
["name" => 1, "id" => 2, "status" => 3, "purchase_date" => 4],
|
|
["org_id" => ["name" => 0]],
|
|
["id"],
|
|
[0 => "Demo", "org_id" => "3", 1 => "ServerTest", 2 => "1", 3 => "BadValue", 4 => "", "id" => 1, "__STATUS__" => "Issue: Unexpected attribute value(s)"],
|
|
],
|
|
"Case 6 - 2 : Unexpected value" => [
|
|
["1", "ServerTest", "production", ""],
|
|
[["Demo", "ServerTest", "key", "<svg onclick\"alert(1)\">", ""]],
|
|
["name" => 1, "id" => 2, "status" => 3, "purchase_date" => 4],
|
|
["org_id" => ["name" => 0]],
|
|
["id"],
|
|
[0 => "Demo", "org_id" => "3", 1 => "ServerTest", 2 => "1", 3 => "<svg onclick"alert(1)">", 4 => "", "id" => 1, "__STATUS__" => "Issue: Unexpected attribute value(s)"],
|
|
],
|
|
"Case 8 : unchanged name" => [
|
|
["1", "<svg onclick\"alert(1)\">", "production", ""],
|
|
[["Demo", "<svg onclick\"alert(1)\">", "key", "production", ""]],
|
|
["name" => 1, "id" => 2, "status" => 3, "purchase_date" => 4],
|
|
["org_id" => ["name" => 0]],
|
|
["id"],
|
|
[0 => "Demo", "org_id" => "3", 1 => "<svg onclick"alert(1)">", 2 => "1", 3 => "production", 4 => "", "id" => 1, "__STATUS__" => "updated 1 cols"],
|
|
],
|
|
"Case 3, 5 et 8 : unchanged 2" => [
|
|
["1", "ServerTest", "production", ""],
|
|
[["Demo", "ServerTest", "1", "production", ""]],
|
|
["name" => 1, "id" => 2, "status" => 3, "purchase_date" => 4],
|
|
["org_id" => ["name" => 0]],
|
|
["id"],
|
|
[0 => "Demo", "org_id" => "3", 1 => "ServerTest", 2 => "1", 3 => "production", 4 => "", "id" => 1, "__STATUS__" => "updated 1 cols"],
|
|
],
|
|
"Case 9 - 1: wrong date format" => [
|
|
["1", "ServerTest", "production", ""],
|
|
[["Demo", "ServerTest", "1", "production", "date"]],
|
|
["name" => 1, "id" => 2, "status" => 3, "purchase_date" => 4],
|
|
["org_id" => ["name" => 0]],
|
|
["id"],
|
|
[ 0 => "Demo", "org_id" => "n/a", 1 => "ServerTest", 2 => "1", 3 => "production", 4 => "date", "id" => 1, "__STATUS__" => "Issue: wrong date format"],
|
|
],
|
|
"Case 9 - 2: wrong date format" => [
|
|
["1", "ServerTest", "production", ""],
|
|
[["Demo", "ServerTest", "1", "production", "<svg onclick\"alert(1)\">"]],
|
|
["name" => 1, "id" => 2, "status" => 3, "purchase_date" => 4],
|
|
["org_id" => ["name" => 0]],
|
|
["id"],
|
|
[ 0 => "Demo", "org_id" => "n/a", 1 => "ServerTest", 2 => "1", 3 => "production", 4 => "<svg onclick"alert(1)">", "id" => 1, "__STATUS__" => "Issue: wrong date format"],
|
|
],
|
|
"Case 1 - 1 : no match" => [
|
|
["1", "ServerTest", "production", ""],
|
|
[["Bad", "ServerTest", "1", "production", ""]],
|
|
["name" => 1, "id" => 2, "status" => 3, "purchase_date" => 4],
|
|
["org_id" => ["name" => 0]],
|
|
["id"],
|
|
[ 0 => "Bad", "org_id" => "",1 => "ServerTest",2 => "1", 3 => "production", 4 => "", "id" => 1, "__STATUS__" => "Issue: Unexpected attribute value(s)"],
|
|
],
|
|
"Case 1 - 2 : no match" => [
|
|
["1", "ServerTest", "production", ""],
|
|
[["<svg fonclick\"alert(1)\">", "ServerTest", "1", "production", ""]],
|
|
["name" => 1, "id" => 2, "status" => 3, "purchase_date" => 4],
|
|
["org_id" => ["name" => 0]],
|
|
["id"],
|
|
[ 0 => "<svg fonclick"alert(1)">", "org_id" => "",1 => "ServerTest",2 => "1", 3 => "production", 4 => "", "id" => 1, "__STATUS__" => "Issue: Unexpected attribute value(s)"],
|
|
],
|
|
"Case 10 : Missing mandatory value" => [
|
|
["1", "ServerTest", "production", ""],
|
|
[["", "ServerTest", "1", "production", ""]],
|
|
["name" => 1, "id" => 2, "status" => 3, "purchase_date" => 4],
|
|
["org_id" => ["name" => 0]],
|
|
["id"],
|
|
[ 0 => "", "org_id" => "", 1 => "ServerTest", 2 => "1", 3 => "production", 4 => "", "id" => 1, "__STATUS__" => "Issue: Unexpected attribute value(s)"],
|
|
],
|
|
|
|
"Case 0 : Date format" => [
|
|
["1", "ServerTest", "production", "2020-02-01"],
|
|
[["Demo", "ServerTest", "1", "production", "2020-20-03"]],
|
|
["name" => 1, "id" => 2, "status" => 3, "purchase_date" => 4],
|
|
["org_id" => ["name" => 0]],
|
|
["id"],
|
|
[ 0 => "Demo", "org_id" => "n/a", 1 => "ServerTest", 2 => "1", 3 => "production", 4 => "2020-20-03", "id" => 1, "__STATUS__" => "Issue: wrong date format"],
|
|
],
|
|
];
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* test $oBulk->Process with new server and new organization datas
|
|
* @dataProvider CSVImportProvider2
|
|
*
|
|
* @param $aInitData
|
|
* @param $aCsvData
|
|
* @param $aAttributes
|
|
* @param $aExtKeys
|
|
* @param $aReconcilKeys
|
|
*/
|
|
public function testCas2BulkChangeIssue($aInitData, $aCsvData, $aAttributes, $aExtKeys, $aReconcilKeys, $aResult) {
|
|
CMDBSource::Query('START TRANSACTION');
|
|
//change value during the test
|
|
$db_core_transactions_enabled=MetaModel::GetConfig()->Get('db_core_transactions_enabled');
|
|
MetaModel::GetConfig()->Set('db_core_transactions_enabled',false);
|
|
/** @var Server $oServer */
|
|
$oOrganisation = $this->createObject('Organization', array(
|
|
'name' =>$aInitData[0]
|
|
));
|
|
$aResult["org_id"]=$oOrganisation->GetKey();
|
|
$oServer = $this->createObject('Server', array(
|
|
'name' => $aInitData[1],
|
|
'status' => $aInitData[2],
|
|
'org_id' => $oOrganisation->GetKey(),
|
|
'purchase_date' => $aInitData[3],
|
|
));
|
|
$aCsvData[0][2]=$oServer->GetKey();
|
|
$aResult[2]=$oServer->GetKey();
|
|
$aResult["id"]=$oServer->GetKey();
|
|
$oBulk = new \BulkChange(
|
|
"Server",
|
|
$aCsvData,
|
|
$aAttributes,
|
|
$aExtKeys,
|
|
$aReconcilKeys,
|
|
null,
|
|
null,
|
|
"Y-m-d H:i:s", // date format
|
|
true // localize
|
|
);
|
|
$oChange = \CMDBObject::GetCurrentChange();
|
|
$aRes = $oBulk->Process($oChange);
|
|
static::assertNotNull($aRes);
|
|
foreach ($aRes as $aRow) {
|
|
foreach ($aRow as $i => $oCell) {
|
|
if ($i != "finalclass" && $i != "__STATUS__") {
|
|
$this->debug("i:".$i);
|
|
$this->debug('GetDisplayableValue:'.$oCell->GetDisplayableValue());
|
|
$this->debug("aResult:".$aResult[$i]);
|
|
$this->assertEquals($aResult[$i], $oCell->GetDisplayableValue());
|
|
}
|
|
elseif ($i == "__STATUS__") {
|
|
$sStatus = $aRow['__STATUS__'];
|
|
$this->assertEquals($aResult["__STATUS__"], $sStatus->GetDescription());
|
|
}
|
|
}
|
|
$this->assertEquals($aResult[0], $aRow[0]->GetDisplayableValue());
|
|
}
|
|
CMDBSource::Query('ROLLBACK');
|
|
MetaModel::GetConfig()->Set('db_core_transactions_enabled',$db_core_transactions_enabled);
|
|
}
|
|
|
|
public function CSVImportProvider2() {
|
|
return [
|
|
"Case 3 : unchanged name" => [
|
|
["dodo","ServerYO", "production", ""],
|
|
[["dodo", "ServerYO", "key", "production", ""]],
|
|
["name" => 1, "id" => 2, "status" => 3, "purchase_date" => 4],
|
|
["org_id" => ["name" => 0]],
|
|
["id"],
|
|
[0 => "dodo", "org_id" => "3", 1 => "ServerYO", 2 => "1", 3 => "production", 4 => "", "id" => 1, "__STATUS__" => "unchanged"],
|
|
],
|
|
"Case 3 bis : unchanged name" => [
|
|
["<svg >","ServerYO", "production", ""],
|
|
[["<svg >", "ServerYO", "key", "production", ""]],
|
|
["name" => 1, "id" => 2, "status" => 3, "purchase_date" => 4],
|
|
["org_id" => ["name" => 0]],
|
|
["id"],
|
|
[0 => "<svg >", "org_id" => "3", 1 => "ServerYO", 2 => "1", 3 => "production", 4 => "", "id" => 1, "__STATUS__" => "unchanged"],
|
|
],
|
|
"Case 3 ter : unchanged name" => [
|
|
["<svg onclick\"alert(1)\" >","ServerYO", "production", ""],
|
|
[["<svg onclick\"alert(1)\" >", "ServerYO", "key", "production", ""]],
|
|
["name" => 1, "id" => 2, "status" => 3, "purchase_date" => 4],
|
|
["org_id" => ["name" => 0]],
|
|
["id"],
|
|
[0 => "<svg onclick"alert(1)" >", "org_id" => "3", 1 => "ServerYO", 2 => "1", 3 => "production", 4 => "", "id" => 1, "__STATUS__" => "unchanged"],
|
|
],
|
|
];
|
|
}
|
|
|
|
} |