From 0a13c705ab8bbac77f422f91f229bdcd895117c5 Mon Sep 17 00:00:00 2001
From: Carsten  Rose <carsten.rose@math.uzh.ch>
Date: Tue, 8 May 2018 13:22:46 +0200
Subject: [PATCH] Fix problem: empty 'u' / 'm' checked to early - render mode
 might allow empty values.

---
 extension/qfq/qfq/helper/Token.php       |  1 +
 extension/qfq/tests/phpunit/LinkTest.php | 25 ++++++++++++++++++++----
 2 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/extension/qfq/qfq/helper/Token.php b/extension/qfq/qfq/helper/Token.php
index feb6b9ccc..fd7c4b995 100644
--- a/extension/qfq/qfq/helper/Token.php
+++ b/extension/qfq/qfq/helper/Token.php
@@ -29,6 +29,7 @@ class Token {
         switch ($key) {
             case TOKEN_URL:
             case TOKEN_MAIL:
+            break; // No check - can't be generally decided
             case TOKEN_GLYPH:
                 throw new UserReportException ("Missing value for token '$key'", ERROR_MISSING_VALUE);
                 break;
diff --git a/extension/qfq/tests/phpunit/LinkTest.php b/extension/qfq/tests/phpunit/LinkTest.php
index 21516ce0b..06ad6e184 100644
--- a/extension/qfq/tests/phpunit/LinkTest.php
+++ b/extension/qfq/tests/phpunit/LinkTest.php
@@ -191,6 +191,9 @@ class LinkTest extends \PHPUnit_Framework_TestCase {
         $result = $link->renderLink('t:Example');
         $this->assertEquals('', $result);
 
+        $result = $link->renderLink('u|t:Example');
+        $this->assertEquals('', $result);
+
         $result = $link->renderLink('u:http://example.com|t:Example');
         $this->assertEquals('<a href="http://example.com" >Example</a>', $result);
 
@@ -200,6 +203,9 @@ class LinkTest extends \PHPUnit_Framework_TestCase {
         $result = $link->renderLink('t:Example|r:0');
         $this->assertEquals('', $result);
 
+        $result = $link->renderLink('u|t:Example|r:0');
+        $this->assertEquals('', $result);
+
         $result = $link->renderLink('u:http://example.com|t:Example|r:0');
         $this->assertEquals('<a href="http://example.com" >Example</a>', $result);
 
@@ -208,7 +214,9 @@ class LinkTest extends \PHPUnit_Framework_TestCase {
         $this->assertEquals('<a href="http://example.com" >http://example.com</a>', $result);
 
         $result = $link->renderLink('t:Example|r:1');
-//        $this->assertEquals('<span >Example</span>', $result);
+        $this->assertEquals('Example', $result);
+
+        $result = $link->renderLink('u|t:Example|r:1');
         $this->assertEquals('Example', $result);
 
         $result = $link->renderLink('u:http://example.com|t:Example|r:1');
@@ -221,6 +229,9 @@ class LinkTest extends \PHPUnit_Framework_TestCase {
         $result = $link->renderLink('t:Example|r:2');
         $this->assertEquals('', $result);
 
+        $result = $link->renderLink('u|t:Example|r:2');
+        $this->assertEquals('', $result);
+
         $result = $link->renderLink('u:http://example.com|t:Example|r:2');
         $this->assertEquals('<a href="http://example.com" >Example</a>', $result);
 
@@ -230,7 +241,9 @@ class LinkTest extends \PHPUnit_Framework_TestCase {
         $this->assertEquals('http://example.com', $result);
 
         $result = $link->renderLink('t:Example|r:3');
-//        $this->assertEquals('<span >Example</span>', $result);
+        $this->assertEquals('Example', $result);
+
+        $result = $link->renderLink('u|t:Example|r:3');
         $this->assertEquals('Example', $result);
 
         $result = $link->renderLink('u:http://example.com|t:Example|r:3');
@@ -239,11 +252,12 @@ class LinkTest extends \PHPUnit_Framework_TestCase {
 
         // r: 4
         $result = $link->renderLink('u:http://example.com|r:4');
-//        $this->assertEquals('<span >http://example.com</span>', $result);
         $this->assertEquals('http://example.com', $result);
 
         $result = $link->renderLink('t:Example|r:4');
-//        $this->assertEquals('<span >Example</span>', $result);
+        $this->assertEquals('Example', $result);
+
+        $result = $link->renderLink('u|t:Example|r:4');
         $this->assertEquals('Example', $result);
 
         $result = $link->renderLink('u:http://example.com|t:Example|r:4');
@@ -257,6 +271,9 @@ class LinkTest extends \PHPUnit_Framework_TestCase {
         $result = $link->renderLink('t:Example|r:5');
         $this->assertEquals('', $result);
 
+        $result = $link->renderLink('u|t:Example|r:5');
+        $this->assertEquals('', $result);
+
         $result = $link->renderLink('u:http://example.com|t:Example|r:5');
         $this->assertEquals('', $result);
     }
-- 
GitLab