From 911801b4c19f00b81d15c47835f240ac1890ede6 Mon Sep 17 00:00:00 2001
From: Elmar Ludwig <elmar.ludwig@uni-osnabrueck.de>
Date: Thu, 5 Aug 2021 12:13:56 +0200
Subject: [PATCH] fix tests in CI, fixes #42

---
 Doxyfile                                      |  1 +
 lib/classes/StudipAutoloader.php              |  2 +-
 lib/classes/StudipCacheFactory.class.php      |  4 +-
 tests/_data/simpleormap/cronjobs_tasks.php    | 75 +++++++++++++++++++
 tests/unit/_bootstrap.php                     |  2 +-
 tests/unit/lib/VisualTest.php                 |  2 +-
 .../unit/lib/classes/CronjobScheduleTest.php  |  2 +-
 tests/unit/lib/classes/CsrfProtectionTest.php |  2 +-
 8 files changed, 83 insertions(+), 7 deletions(-)
 create mode 100644 tests/_data/simpleormap/cronjobs_tasks.php

diff --git a/Doxyfile b/Doxyfile
index 74106514455..91f426347d8 100644
--- a/Doxyfile
+++ b/Doxyfile
@@ -780,6 +780,7 @@ RECURSIVE              = YES
 # run.
 
 EXCLUDE                = vendor \
+                         composer \
                          public/plugins_packages \
                          db \
                          locale \
diff --git a/lib/classes/StudipAutoloader.php b/lib/classes/StudipAutoloader.php
index d7904d16693..985fbd0fcc1 100644
--- a/lib/classes/StudipAutoloader.php
+++ b/lib/classes/StudipAutoloader.php
@@ -309,7 +309,7 @@ class StudipAutoloader
      */
     private static function sanitizePath($path)
     {
-        if (mb_strpos($path, $GLOBALS['STUDIP_BASE_PATH']) === 0) {
+        if (isset($GLOBALS['STUDIP_BASE_PATH']) && strpos($path, $GLOBALS['STUDIP_BASE_PATH']) === 0) {
             return ltrim(str_replace($GLOBALS['STUDIP_BASE_PATH'], '', $path), DIRECTORY_SEPARATOR);
         }
         return $path;
diff --git a/lib/classes/StudipCacheFactory.class.php b/lib/classes/StudipCacheFactory.class.php
index ce79383f58a..805aa9d8be8 100644
--- a/lib/classes/StudipCacheFactory.class.php
+++ b/lib/classes/StudipCacheFactory.class.php
@@ -182,7 +182,7 @@ class StudipCacheFactory
      */
     public static function loadCacheClass()
     {
-        $cacheConfig = Config::get()->SYSTEMCACHE;
+        $cacheConfig = self::getConfig()->SYSTEMCACHE;
 
         $cache_class = $cacheConfig['type'] ?: null;
 
@@ -222,7 +222,7 @@ class StudipCacheFactory
      */
     public static function retrieveConstructorArguments()
     {
-        $cacheConfig = Config::get()->SYSTEMCACHE;
+        $cacheConfig = self::getConfig()->SYSTEMCACHE;
 
         return $cacheConfig ?: [];
     }
diff --git a/tests/_data/simpleormap/cronjobs_tasks.php b/tests/_data/simpleormap/cronjobs_tasks.php
new file mode 100644
index 00000000000..43614b63162
--- /dev/null
+++ b/tests/_data/simpleormap/cronjobs_tasks.php
@@ -0,0 +1,75 @@
+<?php
+$result =  [
+  0 =>
+   [
+    'name' => 'task_id',
+    'type' => 'char(32)',
+    'null' => 'NO',
+    'key' => 'PRI',
+    'default' => '',
+    'extra' => '',
+  ],
+  1 =>
+   [
+    'name' => 'filename',
+    'type' => 'varchar(255)',
+    'null' => 'NO',
+    'key' => '',
+    'default' => '',
+    'extra' => '',
+  ],
+  2 =>
+   [
+    'name' => 'class',
+    'type' => 'varchar(255)',
+    'null' => 'NO',
+    'key' => '',
+    'default' => '',
+    'extra' => '',
+  ],
+  3 =>
+   [
+    'name' => 'active',
+    'type' => 'tinyint(1) unsigned',
+    'null' => 'NO',
+    'key' => '',
+    'default' => 0,
+    'extra' => '',
+  ],
+  4 =>
+   [
+    'name' => 'execution_count',
+    'type' => 'bigint(20) unsigned',
+    'null' => 'NO',
+    'key' => '',
+    'default' => 0,
+    'extra' => '',
+  ],
+  5 =>
+   [
+    'name' => 'assigned_count',
+    'type' => 'int(11) unsigned',
+    'null' => 'NO',
+    'key' => '',
+    'default' => 0,
+    'extra' => '',
+  ],
+  6 =>
+   [
+    'name' => 'mkdate',
+    'type' => 'int(11) unsigned',
+    'null' => 'YES',
+    'key' => '',
+    'default' => NULL,
+    'extra' => '',
+  ],
+  7 =>
+   [
+    'name' => 'chdate',
+    'type' => 'int(11) unsigned',
+    'null' => 'YES',
+    'key' => '',
+    'default' => NULL,
+    'extra' => '',
+  ],
+];
diff --git a/tests/unit/_bootstrap.php b/tests/unit/_bootstrap.php
index 1acb4d42e80..cfa78f6c70b 100644
--- a/tests/unit/_bootstrap.php
+++ b/tests/unit/_bootstrap.php
@@ -109,7 +109,7 @@ if (!class_exists('StudipTestHelper')) {
         static function set_up_tables($tables)
         {
             // first step, set fake cache
-            $testconfig = new Config(['cache_class' => 'StudipArrayCache']);
+            $testconfig = new Config(['SYSTEMCACHE' => ['type' => 'StudipArrayCache']]);
             Config::set($testconfig);
             StudipCacheFactory::setConfig($testconfig);
 
diff --git a/tests/unit/lib/VisualTest.php b/tests/unit/lib/VisualTest.php
index 264000b7a34..3d2f03a77dc 100644
--- a/tests/unit/lib/VisualTest.php
+++ b/tests/unit/lib/VisualTest.php
@@ -9,7 +9,6 @@
  * the License, or (at your option) any later version.
  */
 
-require_once 'config.inc.php'; //$SMILE_SHORT and $SYMBOL_SHORT needed by formatReady
 require_once 'lib/models/SimpleORMap.class.php';
 require_once 'lib/models/OpenGraphURL.class.php';
 require_once 'lib/visual.inc.php';
@@ -28,6 +27,7 @@ class VisualFunctionsTest extends \Codeception\Test\Unit
         Config::set(new Config($config));
 
         $GLOBALS['SMILEY_NO_DB'] = true;
+        $GLOBALS['SYMBOL_SHORT'] = [];
     }
 
     public function tearDown()
diff --git a/tests/unit/lib/classes/CronjobScheduleTest.php b/tests/unit/lib/classes/CronjobScheduleTest.php
index 5e05663f9de..e218b7ed980 100644
--- a/tests/unit/lib/classes/CronjobScheduleTest.php
+++ b/tests/unit/lib/classes/CronjobScheduleTest.php
@@ -18,7 +18,7 @@ class CronjobScheduleTest extends \Codeception\Test\Unit
     {
         date_default_timezone_set('Europe/Berlin');
 
-        StudipTestHelper::set_up_tables(['cronjobs_schedules']);
+        StudipTestHelper::set_up_tables(['cronjobs_schedules', 'cronjobs_tasks']);
     }
 
     function tearDown()
diff --git a/tests/unit/lib/classes/CsrfProtectionTest.php b/tests/unit/lib/classes/CsrfProtectionTest.php
index 17306fd5487..ce556b89663 100644
--- a/tests/unit/lib/classes/CsrfProtectionTest.php
+++ b/tests/unit/lib/classes/CsrfProtectionTest.php
@@ -117,8 +117,8 @@ class CSRFRequestTest extends \Codeception\Test\Unit
         $_SERVER['REQUEST_METHOD'] = 'POST';
         $_SERVER['HTTP_X_REQUESTED_WITH'] = 'XmlHttpRequest';
         unset($_POST['security_token']);
+        $this->expectException(InvalidSecurityTokenException::class);
         CSRFProtection::verifyUnsafeRequest();
-        $this->assertTrue(true);
     }
 
     function testUnsafeXHRWithToken()
-- 
GitLab