Merge remote-tracking branch 'origin/support/2.7' into support/3.0

# Conflicts:
#	tests/php-unit-tests/post-build-integration-tests/SetupCssIntegrityChecklistTest.php
#	tests/php-unit-tests/unitary-tests/core/CMDBSource/CMDBSourceTest.php
This commit is contained in:
Pierre Goiffon
2024-01-03 10:41:12 +01:00
6 changed files with 128 additions and 57 deletions

View File

@@ -23,19 +23,31 @@ namespace Combodo\iTop\Test\UnitTest\ReleaseChecklist;
use Combodo\iTop\Test\UnitTest\ItopTestCase;
use iTopDesignFormat;
use utils;
/**
* Class iTopDesignFormatChecklistTest
*
* @covers iTopDesignFormat
* Class SetupCssIntegrityChecklistTest
*/
class SetupCssIntegrityChecklistTest extends ItopTestCase
{
public function testSetupCssIntegrity()
{
$sSetupCssPath = APPROOT.'css/setup.css';
$sSetupCssContent = file_get_contents($sSetupCssPath);
$this->assertGreaterThan(4000, strlen($sSetupCssContent), "Test if the resulting file $sSetupCssPath is long enough, the value is totally arbitrary (at the time of the writing the file is 5660o long");
$sCssFileAbsPath = APPROOT."css/setup.css";
// First check if the compiled file exists
$this->assertTrue(file_exists($sCssFileAbsPath));
// Then check that it is not empty
$sVersionedCssFileContent = file_get_contents($sCssFileAbsPath);
$this->assertGreaterThan(0, strlen($sVersionedCssFileContent), "Compiled setup.css file seems empty");
// Then check that the compiled file is up-to-date
$sScssFileRelPath = "css/setup.scss";
$sScssFileAbsPath = APPROOT . $sScssFileRelPath;
touch($sScssFileAbsPath);
utils::GetCSSFromSASS($sScssFileRelPath);
$sCompiledCssFileContent = file_get_contents($sCssFileAbsPath);
$this->assertSame($sCompiledCssFileContent, $sVersionedCssFileContent, "Compiled setup.css file does not seem up to date as the one compiled just now is different");
}
}

View File

@@ -145,6 +145,39 @@ class CMDBSourceTest extends ItopTestCase
$this->assertFalse($bIsTlsCnx);
}
/**
* @dataProvider InitServerAndPortProvider
* @since 2.7.10 3.0.4 3.1.2 3.2.0 N°6889 method creation to keep track of the behavior change (port will return null)
*/
public function testInitServerAndPort(string $sDbHost, string $sExpectedServer, ?int $iExpectedPort)
{
$sActualServer = null;
$iActualPort = null;
CMDBSource::InitServerAndPort($sDbHost, $sActualServer, $iActualPort);
$this->assertNotNull($sActualServer);
$this->assertEquals($sExpectedServer, $sActualServer);
$this->assertEquals($iExpectedPort, $iActualPort);
}
public function InitServerAndPortProvider()
{
return [
'localhost no port' => ['localhost', 'localhost', null],
'localhost with port' => ['localhost:333306', 'localhost', 333306],
'persistent localhost no port' => ['p:localhost', 'p:localhost', null],
'persistent localhost with port' => ['p:localhost:333306', 'p:localhost', 333306],
'ip no port' => ['192.168.1.10', '192.168.1.10', null],
'ip with port' => ['192.168.1.10:333306', '192.168.1.10', 333306],
'persistent ip no port' => ['p:192.168.1.10', 'p:192.168.1.10', null],
'persistent ip with port' => ['p:192.168.1.10:333306', 'p:192.168.1.10', 333306],
'domain no port' => ['dbserver.mycompany.com', 'dbserver.mycompany.com', null],
'domain with port' => ['dbserver.mycompany.com:333306', 'dbserver.mycompany.com', 333306],
'persistent domain no port' => ['p:dbserver.mycompany.com', 'p:dbserver.mycompany.com', null],
'persistent domain with port' => ['p:dbserver.mycompany.com:333306', 'p:dbserver.mycompany.com', 333306],
];
}
/**
* @since 2.7.10 3.0.4 3.1.1 3.2.0 N°6643 Checks writing in IssueLog is really done
*/

View File

@@ -81,29 +81,44 @@ class DBBackupTest extends ItopTestCase
}
/**
* Host is localhost, we should be forced into tcp
*
* @return void
* @dataProvider GetMysqlCliPortAndTransportOptionsProvider
* @since 2.7.10 3.0.4 3.1.2 3.2.0 test for N°6123 and N°6889
*/
public function testGetMysqlCliTransportOptionWithLocalhost()
public function testGetMysqlCliPortAndTransportOptions(string $sDbHost, ?int $iPort, ?int $iExpectedPortValue, string $sExpectedProtocolCliOption)
{
$sHost= 'localhost';
$sTransport = DBBackup::GetMysqlCliTransportOption($sHost);
if (is_null($iExpectedPortValue)) {
$sExpectedPortCliOption = '';
} else {
$sEscapedPortValue = \DBBackup::EscapeShellArg($iExpectedPortValue);
$sExpectedPortCliOption = ' --port=' . $sEscapedPortValue;
}
$this->assertStringStartsWith('--protocol=tcp', $sTransport);
$this->assertStringEndsWith('--protocol=tcp', $sTransport);
$sActualCliOptions = $this->InvokeNonPublicStaticMethod(DBBackup::class, 'GetMysqlCliPortAndTransportOptions', [$sDbHost, $iPort]);
$this->assertEquals($sExpectedPortCliOption . $sExpectedProtocolCliOption, $sActualCliOptions);
}
/**
* Host is not localhost, we shouldn't be forced into tcp
*
* @return void
*/
public function testGetMysqlCliTransportOptionWithoutLocalhost()
public function GetMysqlCliPortAndTransportOptionsProvider()
{
$sHost= '127.0.0.1';
$sTransport = DBBackup::GetMysqlCliTransportOption($sHost);
$iTestPort = 333306;
$iDefaultPort = 3306; // cannot access \CMDBSource::MYSQL_DEFAULT_PORT in dataprovider :(
$this->assertEmpty($sTransport);
return [
'Localhost no port' => ['localhost', null, null, ''],
'Localhost with port' => ['localhost', $iTestPort, $iTestPort, ' --protocol=tcp'],
// we want both port and protocol for 127.0.0.1, because it is an ip address so using tcp/ip stack !
'127.0.0.1 no port' => ['127.0.0.1', null, $iDefaultPort, ''],
'127.0.0.1 with port' => ['127.0.0.1', $iTestPort, $iTestPort, ''],
'IP no port' => ['192.168.1.15', null, $iDefaultPort, ''],
'IP with port' => ['192.168.1.15', $iTestPort, $iTestPort, ''],
'DNS no port' => ['dbserver.mycompany.com', null, $iDefaultPort, ''],
'DNS with port' => ['dbserver.mycompany.com', $iTestPort, $iTestPort, ''],
'Windows name no port' => ['dbserver', null, $iDefaultPort, ''],
'Windows name with port' => ['dbserver', $iTestPort, $iTestPort, ''],
];
}
}