diff options
author | Mario <mario@mariovavti.com> | 2020-11-26 18:43:53 +0000 |
---|---|---|
committer | Mario <mario@mariovavti.com> | 2020-11-26 18:43:53 +0000 |
commit | 0f6166da004317045bae5430140c70ee0d60aad1 (patch) | |
tree | 78145aa23c2c60acab9add4299ee50935898a46a /tests/unit | |
parent | 25620081a1326eb243c974845d613a16b7be1966 (diff) | |
parent | 07e5b8295ea9d342f66d8119d88bd58124b548e6 (diff) | |
download | volse-hubzilla-0f6166da004317045bae5430140c70ee0d60aad1.tar.gz volse-hubzilla-0f6166da004317045bae5430140c70ee0d60aad1.tar.bz2 volse-hubzilla-0f6166da004317045bae5430140c70ee0d60aad1.zip |
Merge branch 'dev'5.0.3
Diffstat (limited to 'tests/unit')
-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 |
6 files changed, 8 insertions, 328 deletions
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); - } - -} |