From c829e4372561660a1b7f365e3210cc7d49124642 Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Mon, 9 Jul 2018 21:38:16 +0200 Subject: [PATCH 1/6] moved get_guid to System::createGUID --- boot.php | 22 ---------------------- include/api.php | 2 +- include/text.php | 2 +- mod/item.php | 2 +- mod/photos.php | 6 +++--- mod/poke.php | 2 +- mod/proxy.php | 2 +- mod/subthread.php | 2 +- mod/tagger.php | 2 +- mod/wall_attach.php | 3 ++- src/Core/System.php | 29 ++++++++++++++++++++++++++++- src/Model/Event.php | 2 +- src/Model/Item.php | 8 ++++---- src/Model/Mail.php | 8 ++++---- src/Model/Photo.php | 4 ++-- src/Protocol/Diaspora.php | 2 +- tests/ApiTest.php | 13 ------------- tests/DatabaseTest.php | 28 ++++++++++++++++++++++++++++ tests/src/Core/Cache/CacheTest.php | 14 -------------- tests/src/Core/Lock/LockTest.php | 15 --------------- tests/src/Core/SystemTest.php | 25 +++++++++++++++++++++++++ 21 files changed, 105 insertions(+), 88 deletions(-) create mode 100644 tests/src/Core/SystemTest.php diff --git a/boot.php b/boot.php index e1c573370..b45bc5767 100644 --- a/boot.php +++ b/boot.php @@ -835,28 +835,6 @@ function check_addons(App $a) return; } -function get_guid($size = 16, $prefix = '') -{ - if (is_bool($prefix) && !$prefix) { - $prefix = ''; - } elseif ($prefix == '') { - $a = get_app(); - $prefix = hash('crc32', $a->get_hostname()); - } - - while (strlen($prefix) < ($size - 13)) { - $prefix .= mt_rand(); - } - - if ($size >= 24) { - $prefix = substr($prefix, 0, $size - 22); - return str_replace('.', '', uniqid($prefix, true)); - } else { - $prefix = substr($prefix, 0, max($size - 13, 0)); - return uniqid($prefix); - } -} - /** * @brief Used to end the current process, after saving session state. * @deprecated diff --git a/include/api.php b/include/api.php index 42868aa9e..dd8daa9e6 100644 --- a/include/api.php +++ b/include/api.php @@ -4534,7 +4534,7 @@ function post_photo_item($hash, $allow_cid, $deny_cid, $allow_gid, $deny_gid, $f $owner_record = q("SELECT * FROM `contact` WHERE `uid`= %d AND `self` LIMIT 1", intval(api_user())); $arr = []; - $arr['guid'] = get_guid(32); + $arr['guid'] = System::createGUID(32); $arr['uid'] = intval(api_user()); $arr['uri'] = $uri; $arr['parent-uri'] = $uri; diff --git a/include/text.php b/include/text.php index 0066e1881..0957d92d7 100644 --- a/include/text.php +++ b/include/text.php @@ -1549,7 +1549,7 @@ function return_bytes($size_str) { function generate_user_guid() { $found = true; do { - $guid = get_guid(32); + $guid = System::createGUID(32); $x = q("SELECT `uid` FROM `user` WHERE `guid` = '%s' LIMIT 1", dbesc($guid) ); diff --git a/mod/item.php b/mod/item.php index a6a3a50c8..4e27a80cf 100644 --- a/mod/item.php +++ b/mod/item.php @@ -232,7 +232,7 @@ function item_post(App $a) { $emailcc = notags(trim(defaults($_REQUEST, 'emailcc' , ''))); $body = escape_tags(trim(defaults($_REQUEST, 'body' , ''))); $network = notags(trim(defaults($_REQUEST, 'network' , NETWORK_DFRN))); - $guid = get_guid(32); + $guid = System::createGUID(32); $postopts = defaults($_REQUEST, 'postopts', ''); diff --git a/mod/photos.php b/mod/photos.php index 34eea0c64..d969fd327 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -453,7 +453,7 @@ function photos_post(App $a) $uri = Item::newURI($page_owner_uid); $arr = []; - $arr['guid'] = get_guid(32); + $arr['guid'] = System::createGUID(32); $arr['uid'] = $page_owner_uid; $arr['uri'] = $uri; $arr['parent-uri'] = $uri; @@ -620,7 +620,7 @@ function photos_post(App $a) $uri = Item::newURI($page_owner_uid); $arr = []; - $arr['guid'] = get_guid(32); + $arr['guid'] = System::createGUID(32); $arr['uid'] = $page_owner_uid; $arr['uri'] = $uri; $arr['parent-uri'] = $uri; @@ -856,7 +856,7 @@ function photos_post(App $a) $arr['coord'] = $lat . ' ' . $lon; } - $arr['guid'] = get_guid(32); + $arr['guid'] = System::createGUID(32); $arr['uid'] = $page_owner_uid; $arr['uri'] = $uri; $arr['parent-uri'] = $uri; diff --git a/mod/poke.php b/mod/poke.php index 55bb799d1..2fd7068f7 100644 --- a/mod/poke.php +++ b/mod/poke.php @@ -96,7 +96,7 @@ function poke_init(App $a) { $arr = []; - $arr['guid'] = get_guid(32); + $arr['guid'] = System::createGUID(32); $arr['uid'] = $uid; $arr['uri'] = $uri; $arr['parent-uri'] = ($parent_uri ? $parent_uri : $uri); diff --git a/mod/proxy.php b/mod/proxy.php index 0b84233e5..ca8ced3cd 100644 --- a/mod/proxy.php +++ b/mod/proxy.php @@ -188,7 +188,7 @@ function proxy_init(App $a) { die(); } - $fields = ['uid' => 0, 'contact-id' => 0, 'guid' => get_guid(), 'resource-id' => $urlhash, 'created' => DateTimeFormat::utcNow(), 'edited' => DateTimeFormat::utcNow(), + $fields = ['uid' => 0, 'contact-id' => 0, 'guid' => System::createGUID(), 'resource-id' => $urlhash, 'created' => DateTimeFormat::utcNow(), 'edited' => DateTimeFormat::utcNow(), 'filename' => basename($_REQUEST['url']), 'type' => '', 'album' => '', 'height' => imagesy($image), 'width' => imagesx($image), 'datasize' => 0, 'data' => $img_str, 'scale' => 100, 'profile' => 0, 'allow_cid' => '', 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '', 'desc' => $mime]; diff --git a/mod/subthread.php b/mod/subthread.php index e05aa5fec..a624cd9a6 100644 --- a/mod/subthread.php +++ b/mod/subthread.php @@ -118,7 +118,7 @@ EOT; $arr = []; - $arr['guid'] = get_guid(32); + $arr['guid'] = System::createGUID(32); $arr['uri'] = $uri; $arr['uid'] = $owner_uid; $arr['contact-id'] = $contact['id']; diff --git a/mod/tagger.php b/mod/tagger.php index 717c09477..0df31ac9a 100644 --- a/mod/tagger.php +++ b/mod/tagger.php @@ -115,7 +115,7 @@ EOT; $arr = []; - $arr['guid'] = get_guid(32); + $arr['guid'] = System::createGUID(32); $arr['uri'] = $uri; $arr['uid'] = $owner_uid; $arr['contact-id'] = $contact['id']; diff --git a/mod/wall_attach.php b/mod/wall_attach.php index 07092cf18..29c790843 100644 --- a/mod/wall_attach.php +++ b/mod/wall_attach.php @@ -6,6 +6,7 @@ use Friendica\App; use Friendica\Core\Config; use Friendica\Core\L10n; +use Friendica\Core\System; use Friendica\Database\DBM; use Friendica\Util\DateTimeFormat; use Friendica\Util\Mimetype; @@ -121,7 +122,7 @@ function wall_attach_post(App $a) { $filedata = @file_get_contents($src); $mimetype = Mimetype::getContentType($filename); - $hash = get_guid(64); + $hash = System::createGUID(64); $created = DateTimeFormat::utcNow(); $fields = ['uid' => $page_owner_uid, 'hash' => $hash, 'filename' => $filename, 'filetype' => $mimetype, diff --git a/src/Core/System.php b/src/Core/System.php index 84a64ab9a..058aca130 100644 --- a/src/Core/System.php +++ b/src/Core/System.php @@ -175,9 +175,36 @@ EOT; killme(); } + /** + * Generates a GUID with the given parameters + * + * @param int $size The size of the GUID (default is 16) + * @param bool|string $prefix A given prefix (default is empty) + * @return string a generated GUID + */ + public static function createGUID($size = 16, $prefix = '') + { + if (is_bool($prefix) && !$prefix) { + $prefix = ''; + } elseif (!isset($prefix)) { + $prefix = hash('crc32', self::getApp()->get_hostname()); + } + + while (strlen($prefix) < ($size - 13)) { + $prefix .= mt_rand(); + } + + if ($size >= 24) { + $prefix = substr($prefix, 0, $size - 22); + return str_replace('.', '', uniqid($prefix, true)); + } else { + $prefix = substr($prefix, 0, max($size - 13, 0)); + return uniqid($prefix); + } + } + /// @todo Move the following functions from boot.php /* - function get_guid($size = 16, $prefix = "") function killme() function goaway($s) function local_user() diff --git a/src/Model/Event.php b/src/Model/Event.php index 49d759585..66d5f389f 100644 --- a/src/Model/Event.php +++ b/src/Model/Event.php @@ -305,7 +305,7 @@ class Event extends BaseObject Addon::callHooks('event_updated', $event['id']); } else { - $event['guid'] = get_guid(32); + $event['guid'] = System::createGUID(32); // New event. Store it. dba::insert('event', $event); diff --git a/src/Model/Item.php b/src/Model/Item.php index f10c20936..c07733172 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -1075,7 +1075,7 @@ class Item extends BaseObject } elseif (!empty($item['uri'])) { $guid = self::guidFromUri($item['uri'], $prefix_host); } else { - $guid = get_guid(32, hash('crc32', $prefix_host)); + $guid = System::createGUID(32, hash('crc32', $prefix_host)); } return $guid; @@ -2172,7 +2172,7 @@ class Item extends BaseObject public static function newURI($uid, $guid = "") { if ($guid == "") { - $guid = get_guid(32); + $guid = System::createGUID(32); } $hostname = self::getApp()->get_hostname(); @@ -2496,7 +2496,7 @@ class Item extends BaseObject } if ($contact['network'] != NETWORK_FEED) { - $datarray["guid"] = get_guid(32); + $datarray["guid"] = System::createGUID(32); unset($datarray["plink"]); $datarray["uri"] = self::newURI($contact['uid'], $datarray["guid"]); $datarray["parent-uri"] = $datarray["uri"]; @@ -2933,7 +2933,7 @@ class Item extends BaseObject $objtype = $item['resource-id'] ? ACTIVITY_OBJ_IMAGE : ACTIVITY_OBJ_NOTE ; $new_item = [ - 'guid' => get_guid(32), + 'guid' => System::createGUID(32), 'uri' => self::newURI($item['uid']), 'uid' => $item['uid'], 'contact-id' => $item_contact_id, diff --git a/src/Model/Mail.php b/src/Model/Mail.php index 81494e7eb..f10ad368b 100644 --- a/src/Model/Mail.php +++ b/src/Model/Mail.php @@ -47,7 +47,7 @@ class Mail return -2; } - $guid = get_guid(32); + $guid = System::createGUID(32); $uri = 'urn:X-dfrn:' . System::baseUrl() . ':' . local_user() . ':' . $guid; $convid = 0; @@ -76,7 +76,7 @@ class Mail $recip_handle = (($contact['addr']) ? $contact['addr'] : $contact['nick'] . '@' . $recip_host); $sender_handle = $a->user['nickname'] . '@' . substr(System::baseUrl(), strpos(System::baseUrl(), '://') + 3); - $conv_guid = get_guid(32); + $conv_guid = System::createGUID(32); $convuri = $recip_handle . ':' . $conv_guid; $handles = $recip_handle . ';' . $sender_handle; @@ -174,7 +174,7 @@ class Mail $subject = L10n::t('[no subject]'); } - $guid = get_guid(32); + $guid = System::createGUID(32); $uri = 'urn:X-dfrn:' . System::baseUrl() . ':' . local_user() . ':' . $guid; $me = Probe::uri($replyto); @@ -183,7 +183,7 @@ class Mail return -2; } - $conv_guid = get_guid(32); + $conv_guid = System::createGUID(32); $recip_handle = $recipient['nickname'] . '@' . substr(System::baseUrl(), strpos(System::baseUrl(), '://') + 3); diff --git a/src/Model/Photo.php b/src/Model/Photo.php index c622421cc..b08c6f045 100644 --- a/src/Model/Photo.php +++ b/src/Model/Photo.php @@ -45,7 +45,7 @@ class Photo if (DBM::is_result($photo)) { $guid = $photo['guid']; } else { - $guid = get_guid(); + $guid = System::createGUID(); } $existing_photo = dba::selectFirst('photo', ['id'], ['resource-id' => $rid, 'uid' => $uid, 'contact-id' => $cid, 'scale' => $scale]); @@ -275,6 +275,6 @@ class Photo */ public static function newResource() { - return get_guid(32, false); + return system::createGUID(32, false); } } diff --git a/src/Protocol/Diaspora.php b/src/Protocol/Diaspora.php index 2ce54317e..ccd825d4e 100644 --- a/src/Protocol/Diaspora.php +++ b/src/Protocol/Diaspora.php @@ -3220,7 +3220,7 @@ class Diaspora $author = self::myHandle($owner); $message = ["author" => $author, - "guid" => get_guid(32), + "guid" => System::createGUID(32), "parent_type" => "Post", "parent_guid" => $item["guid"]]; diff --git a/tests/ApiTest.php b/tests/ApiTest.php index c8443512c..a56290198 100644 --- a/tests/ApiTest.php +++ b/tests/ApiTest.php @@ -5,7 +5,6 @@ namespace Friendica\Test; -use Friendica\App; use Friendica\Core\Config; use Friendica\Core\PConfig; use Friendica\Network\BadRequestException; @@ -26,13 +25,8 @@ class ApiTest extends DatabaseTest */ protected function setUp() { - global $a; parent::setUp(); - // Reusable App object - $this->app = new App(__DIR__.'/../'); - $a = $this->app; - // User data that the test database is populated with $this->selfUser = [ 'id' => 42, @@ -62,13 +56,6 @@ class ApiTest extends DatabaseTest 'authenticated' => true, 'uid' => $this->selfUser['id'] ]; - - // Default config - Config::set('config', 'hostname', 'localhost'); - Config::set('system', 'throttle_limit_day', 100); - Config::set('system', 'throttle_limit_week', 100); - Config::set('system', 'throttle_limit_month', 100); - Config::set('system', 'theme', 'system_theme'); } /** diff --git a/tests/DatabaseTest.php b/tests/DatabaseTest.php index e79e9237b..04509724a 100644 --- a/tests/DatabaseTest.php +++ b/tests/DatabaseTest.php @@ -6,6 +6,8 @@ namespace Friendica\Test; use dba; +use Friendica\App; +use Friendica\Core\Config; use Friendica\Database\DBStructure; use PHPUnit_Extensions_Database_DB_IDatabaseConnection; use PHPUnit\DbUnit\DataSet\YamlDataSet; @@ -17,9 +19,35 @@ use PHPUnit\Framework\TestCase; */ abstract class DatabaseTest extends TestCase { + /** + * @var \Friendica\App + */ + protected $app; use TestCaseTrait; + /** + * Creates basic instances for testing with databases + * + * @throws \Exception + */ + protected function setUp() + { + global $a; + parent::setUp(); + + // Reusable App object + $this->app = new App(__DIR__.'/../'); + $a = $this->app; + + // Default config + Config::set('config', 'hostname', 'localhost'); + Config::set('system', 'throttle_limit_day', 100); + Config::set('system', 'throttle_limit_week', 100); + Config::set('system', 'throttle_limit_month', 100); + Config::set('system', 'theme', 'system_theme'); + } + /** * Renames an eventually existing .htconfig.php to .htconfig.php.tmp * Creates a new .htconfig.php for bin/worker.php execution diff --git a/tests/src/Core/Cache/CacheTest.php b/tests/src/Core/Cache/CacheTest.php index 5be0e4b89..bbbb6506a 100644 --- a/tests/src/Core/Cache/CacheTest.php +++ b/tests/src/Core/Cache/CacheTest.php @@ -2,8 +2,6 @@ namespace Friendica\Test\src\Core\Cache; -use Friendica\App; -use Friendica\Core\Config; use Friendica\Test\DatabaseTest; use Friendica\Util\DateTimeFormat; @@ -18,20 +16,8 @@ abstract class CacheTest extends DatabaseTest protected function setUp() { - global $a; parent::setUp(); $this->instance = $this->getInstance(); - - // Reusable App object - $this->app = new App(__DIR__.'/../'); - $a = $this->app; - - // Default config - Config::set('config', 'hostname', 'localhost'); - Config::set('system', 'throttle_limit_day', 100); - Config::set('system', 'throttle_limit_week', 100); - Config::set('system', 'throttle_limit_month', 100); - Config::set('system', 'theme', 'system_theme'); } function testSimple() { diff --git a/tests/src/Core/Lock/LockTest.php b/tests/src/Core/Lock/LockTest.php index dafbd74a6..c8acd7406 100644 --- a/tests/src/Core/Lock/LockTest.php +++ b/tests/src/Core/Lock/LockTest.php @@ -2,10 +2,7 @@ namespace Friendica\Test\src\Core\Lock; -use Friendica\App; -use Friendica\Core\Config; use Friendica\Test\DatabaseTest; -use PHPUnit\Framework\TestCase; abstract class LockTest extends DatabaseTest { @@ -18,20 +15,8 @@ abstract class LockTest extends DatabaseTest protected function setUp() { - global $a; parent::setUp(); $this->instance = $this->getInstance(); - - // Reusable App object - $this->app = new App(__DIR__.'/../'); - $a = $this->app; - - // Default config - Config::set('config', 'hostname', 'localhost'); - Config::set('system', 'throttle_limit_day', 100); - Config::set('system', 'throttle_limit_week', 100); - Config::set('system', 'throttle_limit_month', 100); - Config::set('system', 'theme', 'system_theme'); } public function testLock() { diff --git a/tests/src/Core/SystemTest.php b/tests/src/Core/SystemTest.php new file mode 100644 index 000000000..189e88010 --- /dev/null +++ b/tests/src/Core/SystemTest.php @@ -0,0 +1,25 @@ +assertRegExp("/^[a-z0-9]{" . $length . "}?$/", $guid); + } + + function testGuidWithoutParameter() + { + $guid = System::createGUID(); + $this->assertGuid($guid, 16); + } + + function testGuidWithSize() { + $guid = System::createGUID(20); + $this->assertGuid($guid, 20); + } +} \ No newline at end of file From dbc38d4263e5a31b9aefdac48df4b9bf8c4a399b Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Mon, 9 Jul 2018 21:40:38 +0200 Subject: [PATCH 2/6] improved unittest --- tests/src/Core/SystemTest.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/tests/src/Core/SystemTest.php b/tests/src/Core/SystemTest.php index 189e88010..acb9d32d3 100644 --- a/tests/src/Core/SystemTest.php +++ b/tests/src/Core/SystemTest.php @@ -9,6 +9,7 @@ class SystemTest extends TestCase { private function assertGuid($guid, $length) { + print $guid; $this->assertRegExp("/^[a-z0-9]{" . $length . "}?$/", $guid); } @@ -18,8 +19,13 @@ class SystemTest extends TestCase $this->assertGuid($guid, 16); } - function testGuidWithSize() { - $guid = System::createGUID(20); - $this->assertGuid($guid, 20); + function testGuidWithSize32() { + $guid = System::createGUID(32); + $this->assertGuid($guid, 32); + } + + function testGuidWithSize64() { + $guid = System::createGUID(64); + $this->assertGuid($guid, 64); } } \ No newline at end of file From 8c2258dd2eed18028f1d607b2aab1f8b1a1c15c2 Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Mon, 9 Jul 2018 21:48:47 +0200 Subject: [PATCH 3/6] switched back to origin TestCase structure --- tests/ApiTest.php | 13 +++++++++++++ tests/DatabaseTest.php | 28 ---------------------------- tests/src/Core/Cache/CacheTest.php | 14 ++++++++++++++ tests/src/Core/Lock/LockTest.php | 15 +++++++++++++++ 4 files changed, 42 insertions(+), 28 deletions(-) diff --git a/tests/ApiTest.php b/tests/ApiTest.php index a56290198..c8443512c 100644 --- a/tests/ApiTest.php +++ b/tests/ApiTest.php @@ -5,6 +5,7 @@ namespace Friendica\Test; +use Friendica\App; use Friendica\Core\Config; use Friendica\Core\PConfig; use Friendica\Network\BadRequestException; @@ -25,8 +26,13 @@ class ApiTest extends DatabaseTest */ protected function setUp() { + global $a; parent::setUp(); + // Reusable App object + $this->app = new App(__DIR__.'/../'); + $a = $this->app; + // User data that the test database is populated with $this->selfUser = [ 'id' => 42, @@ -56,6 +62,13 @@ class ApiTest extends DatabaseTest 'authenticated' => true, 'uid' => $this->selfUser['id'] ]; + + // Default config + Config::set('config', 'hostname', 'localhost'); + Config::set('system', 'throttle_limit_day', 100); + Config::set('system', 'throttle_limit_week', 100); + Config::set('system', 'throttle_limit_month', 100); + Config::set('system', 'theme', 'system_theme'); } /** diff --git a/tests/DatabaseTest.php b/tests/DatabaseTest.php index 04509724a..e79e9237b 100644 --- a/tests/DatabaseTest.php +++ b/tests/DatabaseTest.php @@ -6,8 +6,6 @@ namespace Friendica\Test; use dba; -use Friendica\App; -use Friendica\Core\Config; use Friendica\Database\DBStructure; use PHPUnit_Extensions_Database_DB_IDatabaseConnection; use PHPUnit\DbUnit\DataSet\YamlDataSet; @@ -19,35 +17,9 @@ use PHPUnit\Framework\TestCase; */ abstract class DatabaseTest extends TestCase { - /** - * @var \Friendica\App - */ - protected $app; use TestCaseTrait; - /** - * Creates basic instances for testing with databases - * - * @throws \Exception - */ - protected function setUp() - { - global $a; - parent::setUp(); - - // Reusable App object - $this->app = new App(__DIR__.'/../'); - $a = $this->app; - - // Default config - Config::set('config', 'hostname', 'localhost'); - Config::set('system', 'throttle_limit_day', 100); - Config::set('system', 'throttle_limit_week', 100); - Config::set('system', 'throttle_limit_month', 100); - Config::set('system', 'theme', 'system_theme'); - } - /** * Renames an eventually existing .htconfig.php to .htconfig.php.tmp * Creates a new .htconfig.php for bin/worker.php execution diff --git a/tests/src/Core/Cache/CacheTest.php b/tests/src/Core/Cache/CacheTest.php index bbbb6506a..5be0e4b89 100644 --- a/tests/src/Core/Cache/CacheTest.php +++ b/tests/src/Core/Cache/CacheTest.php @@ -2,6 +2,8 @@ namespace Friendica\Test\src\Core\Cache; +use Friendica\App; +use Friendica\Core\Config; use Friendica\Test\DatabaseTest; use Friendica\Util\DateTimeFormat; @@ -16,8 +18,20 @@ abstract class CacheTest extends DatabaseTest protected function setUp() { + global $a; parent::setUp(); $this->instance = $this->getInstance(); + + // Reusable App object + $this->app = new App(__DIR__.'/../'); + $a = $this->app; + + // Default config + Config::set('config', 'hostname', 'localhost'); + Config::set('system', 'throttle_limit_day', 100); + Config::set('system', 'throttle_limit_week', 100); + Config::set('system', 'throttle_limit_month', 100); + Config::set('system', 'theme', 'system_theme'); } function testSimple() { diff --git a/tests/src/Core/Lock/LockTest.php b/tests/src/Core/Lock/LockTest.php index c8acd7406..dafbd74a6 100644 --- a/tests/src/Core/Lock/LockTest.php +++ b/tests/src/Core/Lock/LockTest.php @@ -2,7 +2,10 @@ namespace Friendica\Test\src\Core\Lock; +use Friendica\App; +use Friendica\Core\Config; use Friendica\Test\DatabaseTest; +use PHPUnit\Framework\TestCase; abstract class LockTest extends DatabaseTest { @@ -15,8 +18,20 @@ abstract class LockTest extends DatabaseTest protected function setUp() { + global $a; parent::setUp(); $this->instance = $this->getInstance(); + + // Reusable App object + $this->app = new App(__DIR__.'/../'); + $a = $this->app; + + // Default config + Config::set('config', 'hostname', 'localhost'); + Config::set('system', 'throttle_limit_day', 100); + Config::set('system', 'throttle_limit_week', 100); + Config::set('system', 'throttle_limit_month', 100); + Config::set('system', 'theme', 'system_theme'); } public function testLock() { From d1eeaeead913af5f0f4860405b75f9d6fad94270 Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Mon, 9 Jul 2018 21:53:49 +0200 Subject: [PATCH 4/6] empty is not isset ... --- src/Core/System.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Core/System.php b/src/Core/System.php index 058aca130..2fcbee14f 100644 --- a/src/Core/System.php +++ b/src/Core/System.php @@ -186,7 +186,7 @@ EOT; { if (is_bool($prefix) && !$prefix) { $prefix = ''; - } elseif (!isset($prefix)) { + } elseif (!empty($prefix)) { $prefix = hash('crc32', self::getApp()->get_hostname()); } From a84c94e94b8322695967c60bf1f2b69663f09846 Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Mon, 9 Jul 2018 22:10:35 +0200 Subject: [PATCH 5/6] bugfix isempty... --- src/Core/System.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Core/System.php b/src/Core/System.php index 2fcbee14f..46d1b34e5 100644 --- a/src/Core/System.php +++ b/src/Core/System.php @@ -186,7 +186,7 @@ EOT; { if (is_bool($prefix) && !$prefix) { $prefix = ''; - } elseif (!empty($prefix)) { + } elseif (empty($prefix)) { $prefix = hash('crc32', self::getApp()->get_hostname()); } From e5c767d809cf0603882415835fcc2c774c7c0c6f Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Mon, 9 Jul 2018 22:15:11 +0200 Subject: [PATCH 6/6] a new unittest for prefix --- tests/src/Core/SystemTest.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/src/Core/SystemTest.php b/tests/src/Core/SystemTest.php index acb9d32d3..b85bce44c 100644 --- a/tests/src/Core/SystemTest.php +++ b/tests/src/Core/SystemTest.php @@ -7,10 +7,11 @@ use PHPUnit\Framework\TestCase; class SystemTest extends TestCase { - private function assertGuid($guid, $length) + private function assertGuid($guid, $length, $prefix = '') { print $guid; - $this->assertRegExp("/^[a-z0-9]{" . $length . "}?$/", $guid); + $length -= strlen($prefix); + $this->assertRegExp("/^" . $prefix . "[a-z0-9]{" . $length . "}?$/", $guid); } function testGuidWithoutParameter() @@ -28,4 +29,9 @@ class SystemTest extends TestCase $guid = System::createGUID(64); $this->assertGuid($guid, 64); } + + function testGuidWithPrefix() { + $guid = System::createGUID(23, 'test'); + $this->assertGuid($guid, 23, 'test'); + } } \ No newline at end of file