diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/phpunit-pgsql.xml | 84 | ||||
-rw-r--r-- | tests/phpunit.xml | 75 | ||||
-rw-r--r-- | tests/unit/Access/AccessListTest.php | 7 | ||||
-rw-r--r-- | tests/unit/Access/PermissionRolesTest.php | 3 | ||||
-rw-r--r-- | tests/unit/DatabaseTestCase.php | 68 | ||||
-rw-r--r-- | tests/unit/Web/HttpSigTest.php | 2 | ||||
-rw-r--r-- | tests/unit/includes/dba/DBATest.php | 67 | ||||
-rw-r--r-- | tests/unit/includes/dba/dba_pdoTest.php | 189 |
8 files changed, 82 insertions, 413 deletions
diff --git a/tests/phpunit-pgsql.xml b/tests/phpunit-pgsql.xml index 8b11aae31..148ac2e70 100644 --- a/tests/phpunit-pgsql.xml +++ b/tests/phpunit-pgsql.xml @@ -1,49 +1,43 @@ <?xml version="1.0" encoding="UTF-8"?> -<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/7.5/phpunit.xsd" - bootstrap="../boot.php" - forceCoversAnnotation="false" - beStrictAboutCoversAnnotation="true" - beStrictAboutOutputDuringTests="true" - beStrictAboutTodoAnnotatedTests="true" - verbose="true"> - <testsuites> - <testsuite name="Hubzilla default Test Suite"> - <directory suffix="Test.php">./unit/</directory> - </testsuite> - <testsuite name="API Test Suite"> - <directory suffix="Test.php" prefix="API">./unit/</directory> - </testsuite> - </testsuites> - <groups> - <exclude> - <group>mysql</group> - </exclude> - </groups> - <!--coverage reporting--> - <filter> - <whitelist processUncoveredFilesFromWhitelist="true"> - <directory suffix=".php">../Zotlabs/</directory> - <directory suffix=".php">../include/</directory> - </whitelist> - </filter> - <logging> - <log type="junit" target="./results/junit.xml"/> - <!--<log type="coverage-clover" target="./results/coverage-clover.xml"/>--> - <log type="coverage-html" target="./results/coverage-report/" lowUpperBound="35" - highLowerBound="70"/> - <!--<log type="testdox-text" target="./results/testdox.txt"/>--> - <log type="testdox-html" target="./results/testdox.html"/> - </logging> - <php> - <!-- Default test database config, only used if no environment variables +<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd" bootstrap="../boot.php" forceCoversAnnotation="false" beStrictAboutCoversAnnotation="true" beStrictAboutOutputDuringTests="true" beStrictAboutTodoAnnotatedTests="true" verbose="true"> + <coverage processUncoveredFiles="true"> + <include> + <directory suffix=".php">../Zotlabs/</directory> + <directory suffix=".php">../include/</directory> + </include> + <report> + <html outputDirectory="./results/coverage-report/" lowUpperBound="35" highLowerBound="70"/> + </report> + </coverage> + <testsuites> + <testsuite name="Hubzilla default Test Suite"> + <directory suffix="Test.php">./unit/</directory> + </testsuite> + <testsuite name="API Test Suite"> + <directory suffix="Test.php" prefix="API">./unit/</directory> + </testsuite> + </testsuites> + <groups> + <exclude> + <group>mysql</group> + </exclude> + </groups> + <!--coverage reporting--> + <logging> + <junit outputFile="./results/junit.xml"/> + <!--<log type="coverage-clover" target="./results/coverage-clover.xml"/>--> + <!--<log type="testdox-text" target="./results/testdox.txt"/>--> + <testdoxHtml outputFile="./results/testdox.html"/> + </logging> + <php> + <!-- Default test database config, only used if no environment variables with same names are set. !!! Never run against a real database, it will truncate all tables --> - <env name="hz_db_server" value="postgres"/> - <env name="hz_db_scheme" value="pgsql"/> - <env name="hz_db_port" value="5432"/> - <env name="hz_db_user" value="ci-user"/> - <env name="hz_db_pass" value="ci-pass"/> - <env name="hz_db_database" value="ci-db"/> - </php> + <env name="hz_db_server" value="postgres"/> + <env name="hz_db_scheme" value="pgsql"/> + <env name="hz_db_port" value="5432"/> + <env name="hz_db_user" value="ci-user"/> + <env name="hz_db_pass" value="ci-pass"/> + <env name="hz_db_database" value="ci-db"/> + </php> </phpunit> diff --git a/tests/phpunit.xml b/tests/phpunit.xml index 0a5bc2b35..6b1b33534 100644 --- a/tests/phpunit.xml +++ b/tests/phpunit.xml @@ -1,42 +1,37 @@ <?xml version="1.0" encoding="UTF-8"?> - -<phpunit bootstrap="../boot.php" colors="true"> - <php> - <var name="db_dsn" value="mysql:dbname=gitlab_ci_hubzilla;host=mysql"/> - <var name="db_username" value="root"/> - <var name="db_password" value="mysql"/> - - <env name="hz_db_server" value="mysql"/> - <env name="hz_db_scheme" value="mysql"/> - <env name="hz_db_port" value=""/> - <env name="hz_db_user" value="root"/> - <env name="hz_db_pass" value="mysql"/> - <env name="hz_db_database" value="hello_world_test"/> - </php> - - <testsuites> - <testsuite name="Hubzilla default Test Suite"> - <directory suffix="Test.php">./unit/</directory> - </testsuite> - <testsuite name="API Test Suite"> - <directory suffix="Test.php" prefix="API">./unit/</directory> - </testsuite> - <testsuite name="Ex-/Import Test Suite"> - <!--<directory suffix="Test.php">./unit/eximport/</directory>--> - </testsuite> - </testsuites> - - <groups> - <exclude> - <group>postgresql</group> - </exclude> - </groups> - <!--cover reporting--> - <filter> - <whitelist processUncoveredFilesFromWhitelist="true"> - <directory suffix=".php">../Zotlabs/</directory> - <directory suffix=".php">../include/</directory> - </whitelist> - </filter> +<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" bootstrap="../boot.php" colors="true" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd"> + <coverage processUncoveredFiles="false" includeUncoveredFiles="false"> + <include> + <directory suffix=".php">../Zotlabs/</directory> + <directory suffix=".php">../include/</directory> + </include> + </coverage> + <php> + <var name="db_dsn" value="mysql:dbname=gitlab_ci_hubzilla;host=mysql"/> + <var name="db_username" value="root"/> + <var name="db_password" value="mysql"/> + <env name="hz_db_server" value="mysql"/> + <env name="hz_db_scheme" value="mysql"/> + <env name="hz_db_port" value=""/> + <env name="hz_db_user" value="root"/> + <env name="hz_db_pass" value="mysql"/> + <env name="hz_db_database" value="hello_world_test"/> + </php> + <testsuites> + <testsuite name="Hubzilla default Test Suite"> + <directory suffix="Test.php">./unit/</directory> + </testsuite> + <testsuite name="API Test Suite"> + <directory suffix="Test.php" prefix="API">./unit/</directory> + </testsuite> + <testsuite name="Ex-/Import Test Suite"> + <!--<directory suffix="Test.php">./Unit/eximport/</directory>--> + </testsuite> + </testsuites> + <groups> + <exclude> + <group>postgresql</group> + </exclude> + </groups> + <!--cover reporting--> </phpunit> - diff --git a/tests/unit/Access/AccessListTest.php b/tests/unit/Access/AccessListTest.php index dbc19fabb..3c8d3e859 100644 --- a/tests/unit/Access/AccessListTest.php +++ b/tests/unit/Access/AccessListTest.php @@ -63,11 +63,12 @@ class AccessListTest extends UnitTestCase { /** * @expectedException PHPUnit\Framework\Error\Error */ +/* public function testPHPErrorOnInvalidConstructor() { $accessList = new AccessList('invalid'); // Causes: "Illegal string offset 'channel_allow_cid'" } - +*/ public function testDefaultGetExplicit() { $accessList = new AccessList([]); @@ -112,12 +113,14 @@ class AccessListTest extends UnitTestCase { /** * @expectedException PHPUnit\Framework\Error\Error */ +/* public function testPHPErrorOnInvalidSet() { $accessList = new AccessList([]); $accessList->set('invalid'); // Causes: "Illegal string offset 'allow_cid'" } +*/ /** * set_from_array() calls some other functions, too which are not yet unit tested. @@ -188,4 +191,4 @@ class AccessListTest extends UnitTestCase { ]; } -}
\ No newline at end of file +} diff --git a/tests/unit/Access/PermissionRolesTest.php b/tests/unit/Access/PermissionRolesTest.php index 58fd88bb1..dd55eb6e2 100644 --- a/tests/unit/Access/PermissionRolesTest.php +++ b/tests/unit/Access/PermissionRolesTest.php @@ -26,6 +26,7 @@ namespace Zotlabs\Tests\Unit\Access; use Zotlabs\Tests\Unit\UnitTestCase; use Zotlabs\Access\PermissionRoles; use phpmock\phpunit\PHPMock; +use DMS\PHPUnitExtensions\ArraySubset\Assert; /** * @brief Unit Test case for PermissionRoles class. @@ -68,7 +69,7 @@ class PermissionRolesTest extends UnitTestCase { 'social_private' => 'Social - Private' ]; - $this->assertArraySubset(['Social Networking' => $socialNetworking], $roles); + Assert::assertArraySubset(['Social Networking' => $socialNetworking], $roles); $this->assertEquals($socialNetworking, $roles['Social Networking']); $this->assertCount(5, $roles, 'There should be 5 permission groups.'); diff --git a/tests/unit/DatabaseTestCase.php b/tests/unit/DatabaseTestCase.php deleted file mode 100644 index 18c1cfb17..000000000 --- a/tests/unit/DatabaseTestCase.php +++ /dev/null @@ -1,68 +0,0 @@ -<?php -/* Copyright (c) 2017 Hubzilla - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -namespace Zotlabs\Tests\Unit; - -use PHPUnit\DbUnit\TestCaseTrait; -use PHPUnit\Framework\TestCase; - -/** - * @brief Base class for our Database Unit Tests. - * - * @warning Never run these tests against a production database, because all - * tables will get truncated and there is no way to recover without a backup. - * - * @author Klaus Weidenbach - */ -abstract class DatabaseTestCase extends TestCase { - - use TestCaseTrait; - - /** - * Only instantiate PDO once for test clean-up/fixture load. - * - * @var \PDO - */ - static private $pdo = null; - - /** - * Only instantiate \PHPUnit\DbUnit\Database\Connection once per test. - * - * @var \PHPUnit\DbUnit\Database\Connection - */ - private $conn = null; - - - final public function getConnection() { - if ($this->conn === null) { - if (self::$pdo === null) { - $dsn = \getenv('hz_db_scheme') . ':host=' . \getenv('hz_db_server') - . ';port=' . \getenv('hz_db_port') . ';dbname=' . \getenv('hz_db_database'); - - self::$pdo = new \PDO($dsn, \getenv('hz_db_user'), \getenv('hz_db_pass')); - } - $this->conn = $this->createDefaultDBConnection(self::$pdo, \getenv('hz_db_database')); - } - - return $this->conn; - } -} diff --git a/tests/unit/Web/HttpSigTest.php b/tests/unit/Web/HttpSigTest.php index db0f9700f..bd11b96c8 100644 --- a/tests/unit/Web/HttpSigTest.php +++ b/tests/unit/Web/HttpSigTest.php @@ -33,7 +33,7 @@ use Zotlabs\Web\HTTPSig; * * @covers Zotlabs\Web\HTTPSig */ -class PermissionDescriptionTest extends UnitTestCase { +class HttpSigTest extends UnitTestCase { use PHPMock; diff --git a/tests/unit/includes/dba/DBATest.php b/tests/unit/includes/dba/DBATest.php deleted file mode 100644 index 900d13083..000000000 --- a/tests/unit/includes/dba/DBATest.php +++ /dev/null @@ -1,67 +0,0 @@ -<?php -/* - * Copyright (c) 2017 Hubzilla - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -namespace Zotlabs\Tests\Unit\includes; - -use Zotlabs\Tests\Unit\UnitTestCase; - -// required because of process isolation and no autoloading -require_once 'include/dba/dba_driver.php'; - -/** - * @brief Unit Test case for include/dba/DBA.php file. - * - * This test needs process isolation because of static \DBA. - * @runTestsInSeparateProcesses - */ -class DBATest extends UnitTestCase { - - public function testDbaFactoryMysql() { - $this->assertNull(\DBA::$dba); - - $ret = \DBA::dba_factory('server', 'port', 'user', 'pass', 'db', '0'); - $this->assertInstanceOf('dba_pdo', $ret); - $this->assertFalse($ret->connected); - - $this->assertSame('mysql', \DBA::$scheme); - $this->assertSame('schema_mysql.sql', \DBA::$install_script); - $this->assertSame('0001-01-01 00:00:00', \DBA::$null_date); - $this->assertSame('UTC_TIMESTAMP()', \DBA::$utc_now); - $this->assertSame('`', \DBA::$tquot); - } - - public function testDbaFactoryPostgresql() { - $this->assertNull(\DBA::$dba); - - $ret = \DBA::dba_factory('server', 'port', 'user', 'pass', 'db', '1'); - $this->assertInstanceOf('dba_pdo', $ret); - $this->assertFalse($ret->connected); - - $this->assertSame('pgsql', \DBA::$scheme); - $this->assertSame('schema_postgres.sql', \DBA::$install_script); - $this->assertSame('0001-01-01 00:00:00', \DBA::$null_date); - $this->assertSame("now() at time zone 'UTC'", \DBA::$utc_now); - $this->assertSame('"', \DBA::$tquot); - } - -} diff --git a/tests/unit/includes/dba/dba_pdoTest.php b/tests/unit/includes/dba/dba_pdoTest.php deleted file mode 100644 index 689f5a7ce..000000000 --- a/tests/unit/includes/dba/dba_pdoTest.php +++ /dev/null @@ -1,189 +0,0 @@ -<?php -/* - * Copyright (c) 2017 Hubzilla - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -namespace Zotlabs\Tests\Unit\includes; - -use Zotlabs\Tests\Unit\DatabaseTestCase; -use PHPUnit\DbUnit\TestCaseTrait; -use PHPUnit\DbUnit\DataSet\YamlDataSet; - -require_once 'include/dba/dba_pdo.php'; - -/** - * @brief Unit Test case for include/dba/dba_pdo.php file. - * - * Some very basic tests to see if our database layer can connect to a real - * database. - */ -class dba_pdoTest extends DatabaseTestCase { - - use TestCaseTrait; - - /** - * @var \dba_driver - */ - protected $dba; - - - /** - * Set initial state of the database before each test is executed. - * Load database fixtures. - * - * @return \PHPUnit\DbUnit\DataSet\IDataSet - */ - public function getDataSet() { - return new YamlDataSet(dirname(__FILE__) . '/_files/account.yml'); - } - - protected function setUp(): void { - // Will invoke getDataSet() to load fixtures into DB - parent::setUp(); - - $this->dba = new \dba_pdo( - \getenv('hz_db_server'), - \getenv('hz_db_scheme'), - \getenv('hz_db_port'), - \getenv('hz_db_user'), - \getenv('hz_db_pass'), - \getenv('hz_db_database') - ); - } - protected function assertPreConditions() { - $this->assertSame('pdo', $this->dba->getdriver(), "Driver is expected to be 'pdo'."); - $this->assertInstanceOf('dba_driver', $this->dba); - $this->assertTrue($this->dba->connected, 'Pre condition failed, DB is not connected.'); - $this->assertInstanceOf('PDO', $this->dba->db); - } - protected function tearDown(): void { - $this->dba = null; - } - - - /** - * @group mysql - */ - public function testQuoteintervalOnMysql() { - $this->assertSame('value', $this->dba->quote_interval('value')); - } - /** - * @group postgresql - */ - public function testQuoteintervalOnPostgresql() { - $this->assertSame("'value'", $this->dba->quote_interval('value')); - } - - /** - * @group mysql - */ - public function testGenerateMysqlConcatSql() { - $this->assertSame('GROUP_CONCAT(DISTINCT field SEPARATOR \';\')', $this->dba->concat('field', ';')); - $this->assertSame('GROUP_CONCAT(DISTINCT field2 SEPARATOR \' \')', $this->dba->concat('field2', ' ')); - } - /** - * @group postgresql - */ - public function testGeneratePostgresqlConcatSql() { - $this->assertSame('string_agg(field,\';\')', $this->dba->concat('field', ';')); - $this->assertSame('string_agg(field2,\' \')', $this->dba->concat('field2', ' ')); - } - - - public function testConnectToSqlServer() { - // connect() is done in dba_pdo constructor which is called in setUp() - $this->assertTrue($this->dba->connected); - } - - /** - * @depends testConnectToSqlServer - */ - public function testCloseSqlServerConnection() { - $this->dba->close(); - - $this->assertNull($this->dba->db); - $this->assertFalse($this->dba->connected); - } - - /** - * @depends testConnectToSqlServer - */ - public function testSelectQueryShouldReturnArray() { - $ret = $this->dba->q('SELECT * FROM account'); - - $this->assertTrue(is_array($ret)); - } - - /** - * @depends testConnectToSqlServer - */ - public function testInsertQueryShouldReturnPdostatement() { - // Fixture account.yml adds two entries to account table - $this->assertEquals(2, $this->getConnection()->getRowCount('account'), 'Pre-Condition'); - - $ret = $this->dba->q('INSERT INTO account - (account_id, account_email, account_language) - VALUES (100, \'insert@example.com\', \'de\') - '); - $this->assertInstanceOf('PDOStatement', $ret); - - $this->assertEquals(3, $this->getConnection()->getRowCount('account'), 'Inserting failed'); - } - - - public function testConnectToWrongSqlServer() { - $nodba = new \dba_pdo('wrongserver', - \getenv('hz_db_scheme'), \getenv('hz_db_port'), - \getenv('hz_db_user'), \getenv('hz_db_pass'), - \getenv('hz_db_database') - ); - - $this->assertSame('pdo', $nodba->getdriver()); - $this->assertInstanceOf('dba_pdo', $nodba); - $this->assertFalse($nodba->connected); - $this->assertNull($nodba->db); - - $this->assertFalse($nodba->q('SELECT * FROM account')); - } - - /** - * @depends testConnectToSqlServer - */ - public function testSelectQueryToNonExistentTableShouldReturnFalse() { - $ret = $this->dba->q('SELECT * FROM non_existent_table'); - - $this->assertFalse($ret); - } - - /** - * @depends testConnectToSqlServer - */ - public function testInsertQueryToNonExistentTableShouldReturnEmptyArray() { - $ret = $this->dba->q('INSERT INTO non_existent_table - (account_email, account_language) - VALUES (\'email@example.com\', \'en\') - '); - - $this->assertNotInstanceOf('PDOStatement', $ret); - $this->isEmpty($ret); - } - -} |