diff options
author | Harald Eilertsen <haraldei@anduin.net> | 2023-07-17 22:09:36 +0200 |
---|---|---|
committer | Harald Eilertsen <haraldei@anduin.net> | 2023-08-12 20:26:02 +0200 |
commit | 50a7aca88aca38e632928083bb4ac34ced41b464 (patch) | |
tree | 6a469d6714932982b2ddcc020a635bc0f6aac9f0 | |
parent | 87c41cb9ac3c1bd147e8cc2eae66d01f0eaa9c05 (diff) | |
download | volse-hubzilla-50a7aca88aca38e632928083bb4ac34ced41b464.tar.gz volse-hubzilla-50a7aca88aca38e632928083bb4ac34ced41b464.tar.bz2 volse-hubzilla-50a7aca88aca38e632928083bb4ac34ced41b464.zip |
WIP: begin integrating DB testing.
-rwxr-xr-x | tests/create_test_db_pgsql.sh | 63 | ||||
-rw-r--r-- | tests/phpunit.xml | 18 | ||||
-rw-r--r-- | tests/unit/GetTagsTest.php | 5 | ||||
-rw-r--r-- | tests/unit/UnitTestCase.php | 37 |
4 files changed, 115 insertions, 8 deletions
diff --git a/tests/create_test_db_pgsql.sh b/tests/create_test_db_pgsql.sh new file mode 100755 index 000000000..8ec2bc371 --- /dev/null +++ b/tests/create_test_db_pgsql.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env bash + +# +# Copyright (c) 2016 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. +# + +# Exit if anything fails +set -e + +# +# Initialize some defaults if they're not set by the environment +# +: ${DB_ROOT_USER:=postgres} +: ${DB_TEST_USER:=test_user} +: ${DB_TEST_DB:=hubzilla_test_db} + +echo "Creating test db for PostgreSQL..." + +if [[ "$POSTGRESQL_VERSION" == "10" ]]; then + echo "Using PostgreSQL in Docker container, need to use TCP" + export PROTO="-h localhost" +fi + +# Print out some PostgreSQL information +psql --version +# Why does this hang further execution of the job? +psql $PROTO -U $DB_ROOT_USER -c "SELECT VERSION();" + +# Create Hubzilla database +psql $PROTO -U $DB_ROOT_USER -v ON_ERROR_STOP=1 <<-EOSQL + DROP DATABASE IF EXISTS $DB_TEST_DB; + DROP USER IF EXISTS $DB_TEST_USER; + CREATE USER $DB_TEST_USER WITH PASSWORD 'hubzilla'; + CREATE DATABASE $DB_TEST_DB WITH OWNER $DB_TEST_USER; +EOSQL + +export PGPASSWORD=hubzilla + +# Import table structure +echo "Importing schema..." +psql $PROTO -U $DB_TEST_USER -v ON_ERROR_STOP=1 $DB_TEST_DB < ./install/schema_postgres.sql + +# Show databases and tables +psql $PROTO -U $DB_TEST_USER -l +psql $PROTO -U $DB_TEST_USER -d $DB_TEST_DB -c "\dt;" diff --git a/tests/phpunit.xml b/tests/phpunit.xml index 6b1b33534..9ddda5d91 100644 --- a/tests/phpunit.xml +++ b/tests/phpunit.xml @@ -1,10 +1,21 @@ <?xml version="1.0" encoding="UTF-8"?> -<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"> +<phpunit + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + bootstrap="../vendor/autoload.php" + colors="true" + xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd" + > + + <source> <include> <directory suffix=".php">../Zotlabs/</directory> <directory suffix=".php">../include/</directory> </include> + </source> + <coverage processUncoveredFiles="false" includeUncoveredFiles="false"> + <report> + <text outputFile="coverage.txt" showUncoveredFiles="false" showOnlySummary="true"/> + </report> </coverage> <php> <var name="db_dsn" value="mysql:dbname=gitlab_ci_hubzilla;host=mysql"/> @@ -24,9 +35,6 @@ <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> diff --git a/tests/unit/GetTagsTest.php b/tests/unit/GetTagsTest.php index 418d32c47..ccb88080e 100644 --- a/tests/unit/GetTagsTest.php +++ b/tests/unit/GetTagsTest.php @@ -26,6 +26,7 @@ class MockApp { * * @param string $sql */ +/* function q($sql) { $result=array(array('id'=>15, 'attag'=>'', 'network'=>'dfrn', @@ -55,7 +56,7 @@ function q($sql) { return $result; } } - +*/ /** * Replacement for dbesc. * I don't want to test dbesc here, so @@ -68,9 +69,11 @@ function q($sql) { * * @return input */ +/* function dbesc($str) { return $str; } +*/ /** * TestCase for tag handling. diff --git a/tests/unit/UnitTestCase.php b/tests/unit/UnitTestCase.php index f6fb28555..4f2233042 100644 --- a/tests/unit/UnitTestCase.php +++ b/tests/unit/UnitTestCase.php @@ -29,6 +29,7 @@ use PHPUnit\Framework\TestCase; * tests. */ require_once __DIR__ . '/../../boot.php'; +require_once('include/dba/dba_driver.php'); /** * @brief Base class for our Unit Tests. @@ -39,6 +40,38 @@ require_once __DIR__ . '/../../boot.php'; * * @author Klaus Weidenbach */ -abstract class UnitTestCase extends TestCase { - // when needed we can define functionality here which is used in UnitTests. +class UnitTestCase extends TestCase { + public static function setUpBeforeClass() : void { + if ( !\DBA::$dba ) { + \DBA::dba_factory( + getenv('HZ_TEST_DB_HOST'), + getenv('HZ_TEST_DB_PORT', ''), + getenv('HZ_TEST_DB_USER'), + getenv('HZ_TEST_DB_PASS'), + getenv('HZ_TEST_DB_DATABASE'), + getenv('HZ_TEST_DB_TYPE'), + getenv('HZ_TEST_DB_CHARSET'), + false); + + if ( !\DBA::$dba->connected ) { + throw new \Exception("Unable to connect to db!"); + } + } + } + + protected function setUp() : void { + if ( \DBA::$dba->connected ) { + // Create a transaction, so that any actions taken by the + // tests does not change the actual contents of the database. + \DBA::$dba->beginTransaction(); + } + } + + protected function tearDown() : void { + if ( \DBA::$dba->connected ) { + // Roll back the transaction, restoring the db to the + // state it was before the test was run. + \DBA::$dba->rollBack(); + } + } } |