aboutsummaryrefslogtreecommitdiffstats
path: root/tests/unit
diff options
context:
space:
mode:
authorMax Kostikov <max@kostikov.co>2020-12-04 14:33:34 +0100
committerMax Kostikov <max@kostikov.co>2020-12-04 14:33:34 +0100
commita9dd6d6bdbc27e11ffe71644670686d82e05420f (patch)
tree05dd57d1c3f2a8b7541598544b92dbbfe964c329 /tests/unit
parentc9ce562369556ae01044dfb91541c4e4ee35af9e (diff)
parent9c7ec55b4049599f3a61192eaf020e3a112dfa0e (diff)
downloadvolse-hubzilla-a9dd6d6bdbc27e11ffe71644670686d82e05420f.tar.gz
volse-hubzilla-a9dd6d6bdbc27e11ffe71644670686d82e05420f.tar.bz2
volse-hubzilla-a9dd6d6bdbc27e11ffe71644670686d82e05420f.zip
Merge branch 'dev' into 'dev'
Dev sync See merge request kostikov/core!2
Diffstat (limited to 'tests/unit')
-rw-r--r--tests/unit/Access/AccessListTest.php7
-rw-r--r--tests/unit/Access/PermissionRolesTest.php3
-rw-r--r--tests/unit/DatabaseTestCase.php68
-rw-r--r--tests/unit/Web/HttpSigTest.php2
-rw-r--r--tests/unit/includes/dba/DBATest.php67
-rw-r--r--tests/unit/includes/dba/dba_pdoTest.php189
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);
- }
-
-}