Просмотр исходного кода

change tests for phpunit 9 support, breaking support with phpunit 5.6

El RIDO 5 лет назад
Родитель
Сommit
17c3cb35c0

+ 1 - 1
composer.json

@@ -29,7 +29,7 @@
 		"yzalis/identicon" : "^2.0.0"
 		"yzalis/identicon" : "^2.0.0"
 	},
 	},
 	"require-dev" : {
 	"require-dev" : {
-		"phpunit/phpunit" : "^5 || ^9"
+		"phpunit/phpunit" : "^9"
 	},
 	},
 	"autoload" : {
 	"autoload" : {
 		"psr-4" : {
 		"psr-4" : {

+ 22 - 22
composer.lock

@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
         "This file is @generated automatically"
     ],
     ],
-    "content-hash": "c5e5c4d3d99ae93c94cc75e225aa50f5",
+    "content-hash": "f8f346748370d0efd672270571c4aa74",
     "packages": [
     "packages": [
         {
         {
             "name": "paragonie/random_compat",
             "name": "paragonie/random_compat",
@@ -897,16 +897,16 @@
         },
         },
         {
         {
             "name": "phpunit/phpunit",
             "name": "phpunit/phpunit",
-            "version": "9.4.0",
+            "version": "9.4.1",
             "source": {
             "source": {
                 "type": "git",
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/phpunit.git",
                 "url": "https://github.com/sebastianbergmann/phpunit.git",
-                "reference": "ef533467a7974c4b6c354f3eff42a115910bd4e5"
+                "reference": "1f09a12726593737e8a228ebb1c8647305d07c41"
             },
             },
             "dist": {
             "dist": {
                 "type": "zip",
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ef533467a7974c4b6c354f3eff42a115910bd4e5",
-                "reference": "ef533467a7974c4b6c354f3eff42a115910bd4e5",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1f09a12726593737e8a228ebb1c8647305d07c41",
+                "reference": "1f09a12726593737e8a228ebb1c8647305d07c41",
                 "shasum": ""
                 "shasum": ""
             },
             },
             "require": {
             "require": {
@@ -921,23 +921,23 @@
                 "phar-io/manifest": "^2.0.1",
                 "phar-io/manifest": "^2.0.1",
                 "phar-io/version": "^3.0.2",
                 "phar-io/version": "^3.0.2",
                 "php": ">=7.3",
                 "php": ">=7.3",
-                "phpspec/prophecy": "^1.11.1",
+                "phpspec/prophecy": "^1.12.1",
                 "phpunit/php-code-coverage": "^9.2",
                 "phpunit/php-code-coverage": "^9.2",
-                "phpunit/php-file-iterator": "^3.0.4",
-                "phpunit/php-invoker": "^3.1",
-                "phpunit/php-text-template": "^2.0.2",
-                "phpunit/php-timer": "^5.0.1",
-                "sebastian/cli-parser": "^1.0",
-                "sebastian/code-unit": "^1.0.5",
-                "sebastian/comparator": "^4.0.3",
-                "sebastian/diff": "^4.0.2",
-                "sebastian/environment": "^5.1.2",
-                "sebastian/exporter": "^4.0.2",
-                "sebastian/global-state": "^5.0",
-                "sebastian/object-enumerator": "^4.0.2",
-                "sebastian/resource-operations": "^3.0.2",
-                "sebastian/type": "^2.2.1",
-                "sebastian/version": "^3.0.1"
+                "phpunit/php-file-iterator": "^3.0.5",
+                "phpunit/php-invoker": "^3.1.1",
+                "phpunit/php-text-template": "^2.0.3",
+                "phpunit/php-timer": "^5.0.2",
+                "sebastian/cli-parser": "^1.0.1",
+                "sebastian/code-unit": "^1.0.6",
+                "sebastian/comparator": "^4.0.5",
+                "sebastian/diff": "^4.0.3",
+                "sebastian/environment": "^5.1.3",
+                "sebastian/exporter": "^4.0.3",
+                "sebastian/global-state": "^5.0.1",
+                "sebastian/object-enumerator": "^4.0.3",
+                "sebastian/resource-operations": "^3.0.3",
+                "sebastian/type": "^2.3",
+                "sebastian/version": "^3.0.2"
             },
             },
             "require-dev": {
             "require-dev": {
                 "ext-pdo": "*",
                 "ext-pdo": "*",
@@ -992,7 +992,7 @@
                     "type": "github"
                     "type": "github"
                 }
                 }
             ],
             ],
-            "time": "2020-10-02T03:54:37+00:00"
+            "time": "2020-10-11T07:41:19+00:00"
         },
         },
         {
         {
             "name": "sebastian/cli-parser",
             "name": "sebastian/cli-parser",

+ 13 - 19
tst/ConfigurationTest.php

@@ -58,13 +58,11 @@ class ConfigurationTest extends TestCase
         $this->assertEquals($this->_options, $conf->get(), 'returns correct defaults on missing file');
         $this->assertEquals($this->_options, $conf->get(), 'returns correct defaults on missing file');
     }
     }
 
 
-    /**
-     * @expectedException Exception
-     * @expectedExceptionCode 2
-     */
     public function testHandleBlankConfigFile()
     public function testHandleBlankConfigFile()
     {
     {
         file_put_contents(CONF, '');
         file_put_contents(CONF, '');
+        $this->expectException(Exception::class);
+        $this->expectExceptionCode(2);
         new Configuration;
         new Configuration;
     }
     }
 
 
@@ -75,25 +73,21 @@ class ConfigurationTest extends TestCase
         $this->assertEquals($this->_options, $conf->get(), 'returns correct defaults on empty file');
         $this->assertEquals($this->_options, $conf->get(), 'returns correct defaults on empty file');
     }
     }
 
 
-    /**
-     * @expectedException Exception
-     * @expectedExceptionCode 3
-     */
     public function testHandleInvalidSection()
     public function testHandleInvalidSection()
     {
     {
         file_put_contents(CONF, $this->_minimalConfig);
         file_put_contents(CONF, $this->_minimalConfig);
         $conf = new Configuration;
         $conf = new Configuration;
+        $this->expectException(Exception::class);
+        $this->expectExceptionCode(3);
         $conf->getKey('foo', 'bar');
         $conf->getKey('foo', 'bar');
     }
     }
 
 
-    /**
-     * @expectedException Exception
-     * @expectedExceptionCode 4
-     */
     public function testHandleInvalidKey()
     public function testHandleInvalidKey()
     {
     {
         file_put_contents(CONF, $this->_minimalConfig);
         file_put_contents(CONF, $this->_minimalConfig);
         $conf = new Configuration;
         $conf = new Configuration;
+        $this->expectException(Exception::class);
+        $this->expectExceptionCode(4);
         $conf->getKey('foo');
         $conf->getKey('foo');
     }
     }
 
 
@@ -160,8 +154,8 @@ class ConfigurationTest extends TestCase
 
 
         $conf = new Configuration;
         $conf = new Configuration;
         $this->assertFileExists(CONF, 'old configuration file gets converted');
         $this->assertFileExists(CONF, 'old configuration file gets converted');
-        $this->assertFileNotExists(PATH . 'cfg' . DIRECTORY_SEPARATOR . 'conf.ini', 'old configuration file gets removed');
-        $this->assertFileNotExists(PATH . 'cfg' . DIRECTORY_SEPARATOR . 'conf.ini.sample', 'old configuration sample file gets removed');
+        $this->assertFileDoesNotExist(PATH . 'cfg' . DIRECTORY_SEPARATOR . 'conf.ini', 'old configuration file gets removed');
+        $this->assertFileDoesNotExist(PATH . 'cfg' . DIRECTORY_SEPARATOR . 'conf.ini.sample', 'old configuration sample file gets removed');
         $this->assertTrue(
         $this->assertTrue(
             $conf->getKey('opendiscussion') &&
             $conf->getKey('opendiscussion') &&
             $conf->getKey('fileupload') &&
             $conf->getKey('fileupload') &&
@@ -180,10 +174,10 @@ class ConfigurationTest extends TestCase
         }
         }
         rename(CONF_SAMPLE, $iniSample);
         rename(CONF_SAMPLE, $iniSample);
         new Configuration;
         new Configuration;
-        $this->assertFileNotExists($iniSample, 'old sample file gets removed');
+        $this->assertFileDoesNotExist($iniSample, 'old sample file gets removed');
         $this->assertFileExists(CONF_SAMPLE, 'new sample file gets created');
         $this->assertFileExists(CONF_SAMPLE, 'new sample file gets created');
         $this->assertFileExists(CONF, 'old configuration file gets converted');
         $this->assertFileExists(CONF, 'old configuration file gets converted');
-        $this->assertFileNotExists(PATH . 'cfg' . DIRECTORY_SEPARATOR . 'conf.ini', 'old configuration file gets removed');
+        $this->assertFileDoesNotExist(PATH . 'cfg' . DIRECTORY_SEPARATOR . 'conf.ini', 'old configuration file gets removed');
     }
     }
 
 
     public function testConfigPath()
     public function testConfigPath()
@@ -214,15 +208,15 @@ class ConfigurationTest extends TestCase
         $options                 = $this->_options;
         $options                 = $this->_options;
         $options['main']['name'] = 'OtherBin';
         $options['main']['name'] = 'OtherBin';
         Helper::createIniFile($configFile, $options);
         Helper::createIniFile($configFile, $options);
-        $this->assertFileNotExists(CONF, 'configuration in the default location is non existing');
+        $this->assertFileDoesNotExist(CONF, 'configuration in the default location is non existing');
 
 
         // test
         // test
         putenv('CONFIG_PATH=' . $this->_path);
         putenv('CONFIG_PATH=' . $this->_path);
         $conf = new Configuration;
         $conf = new Configuration;
         $this->assertEquals('OtherBin', $conf->getKey('name'), 'changing config path is supported for ini files as well');
         $this->assertEquals('OtherBin', $conf->getKey('name'), 'changing config path is supported for ini files as well');
         $this->assertFileExists($configMigrated, 'old configuration file gets converted');
         $this->assertFileExists($configMigrated, 'old configuration file gets converted');
-        $this->assertFileNotExists($configFile, 'old configuration file gets removed');
-        $this->assertFileNotExists(CONF, 'configuration is not created in the default location');
+        $this->assertFileDoesNotExist($configFile, 'old configuration file gets removed');
+        $this->assertFileDoesNotExist(CONF, 'configuration is not created in the default location');
 
 
         // cleanup environment
         // cleanup environment
         if (is_file($configFile)) {
         if (is_file($configFile)) {

+ 1 - 1
tst/ConfigurationTestGenerator.php

@@ -565,7 +565,7 @@ EOT;
             case 'Delete':
             case 'Delete':
                 $code .= <<<'EOT'
                 $code .= <<<'EOT'
 
 
-        $this->assertRegExp(
+        $this->assertMatchesRegularExpression(
             '#<div[^>]*id="status"[^>]*>.*Paste was properly deleted[^<]*</div>#s',
             '#<div[^>]*id="status"[^>]*>.*Paste was properly deleted[^<]*</div>#s',
             $content,
             $content,
             'outputs deleted status correctly'
             'outputs deleted status correctly'

+ 15 - 17
tst/ControllerTest.php

@@ -54,12 +54,12 @@ class ControllerTest extends TestCase
         new Controller;
         new Controller;
         $content = ob_get_contents();
         $content = ob_get_contents();
         ob_end_clean();
         ob_end_clean();
-        $this->assertContains(
+        $this->assertStringContainsString(
             '<title>PrivateBin</title>',
             '<title>PrivateBin</title>',
             $content,
             $content,
             'outputs title correctly'
             'outputs title correctly'
         );
         );
-        $this->assertNotContains(
+        $this->assertStringNotContainsString(
             'id="shortenbutton"',
             'id="shortenbutton"',
             $content,
             $content,
             'doesn\'t output shortener button'
             'doesn\'t output shortener button'
@@ -79,7 +79,7 @@ class ControllerTest extends TestCase
         new Controller;
         new Controller;
         $content = ob_get_contents();
         $content = ob_get_contents();
         ob_end_clean();
         ob_end_clean();
-        $this->assertContains(
+        $this->assertStringContainsString(
             '<title>PrivateBin</title>',
             '<title>PrivateBin</title>',
             $content,
             $content,
             'outputs title correctly'
             'outputs title correctly'
@@ -100,7 +100,7 @@ class ControllerTest extends TestCase
         new Controller;
         new Controller;
         $content = ob_get_contents();
         $content = ob_get_contents();
         ob_end_clean();
         ob_end_clean();
-        $this->assertContains(
+        $this->assertStringContainsString(
             '<title>PrivateBin</title>',
             '<title>PrivateBin</title>',
             $content,
             $content,
             'outputs title correctly'
             'outputs title correctly'
@@ -121,7 +121,7 @@ class ControllerTest extends TestCase
         new Controller;
         new Controller;
         $content = ob_get_contents();
         $content = ob_get_contents();
         ob_end_clean();
         ob_end_clean();
-        $this->assertRegExp(
+        $this->assertMatchesRegularExpression(
             '#id="shortenbutton"[^>]*data-shortener="' . preg_quote($shortener) . '"#',
             '#id="shortenbutton"[^>]*data-shortener="' . preg_quote($shortener) . '"#',
             $content,
             $content,
             'outputs configured shortener URL correctly'
             'outputs configured shortener URL correctly'
@@ -150,13 +150,11 @@ class ControllerTest extends TestCase
         $this->assertFileExists($htaccess, 'htaccess recreated');
         $this->assertFileExists($htaccess, 'htaccess recreated');
     }
     }
 
 
-    /**
-     * @expectedException Exception
-     * @expectedExceptionCode 2
-     */
     public function testConf()
     public function testConf()
     {
     {
         file_put_contents(CONF, '');
         file_put_contents(CONF, '');
+        $this->expectException(Exception::class);
+        $this->expectExceptionCode(2);
         new Controller;
         new Controller;
     }
     }
 
 
@@ -452,8 +450,6 @@ class ControllerTest extends TestCase
      * silently removed, check that this case is handled
      * silently removed, check that this case is handled
      *
      *
      * @runInSeparateProcess
      * @runInSeparateProcess
-     * @expectedException Exception
-     * @expectedExceptionCode 90
      */
      */
     public function testCreateBrokenUpload()
     public function testCreateBrokenUpload()
     {
     {
@@ -465,6 +461,8 @@ class ControllerTest extends TestCase
         $_SERVER['REQUEST_METHOD']        = 'POST';
         $_SERVER['REQUEST_METHOD']        = 'POST';
         $_SERVER['REMOTE_ADDR']           = '::1';
         $_SERVER['REMOTE_ADDR']           = '::1';
         $this->assertFalse($this->_data->exists(Helper::getPasteId()), 'paste does not exists before posting data');
         $this->assertFalse($this->_data->exists(Helper::getPasteId()), 'paste does not exists before posting data');
+        $this->expectException(Exception::class);
+        $this->expectExceptionCode(90);
         new Controller;
         new Controller;
         $this->assertFalse($this->_data->exists(Helper::getPasteId()), 'paste exists after posting data');
         $this->assertFalse($this->_data->exists(Helper::getPasteId()), 'paste exists after posting data');
     }
     }
@@ -799,7 +797,7 @@ class ControllerTest extends TestCase
         new Controller;
         new Controller;
         $content = ob_get_contents();
         $content = ob_get_contents();
         ob_end_clean();
         ob_end_clean();
-        $this->assertRegExp(
+        $this->assertMatchesRegularExpression(
             '#<div[^>]*id="status"[^>]*>.*Paste was properly deleted\.#s',
             '#<div[^>]*id="status"[^>]*>.*Paste was properly deleted\.#s',
             $content,
             $content,
             'outputs deleted status correctly'
             'outputs deleted status correctly'
@@ -819,7 +817,7 @@ class ControllerTest extends TestCase
         new Controller;
         new Controller;
         $content = ob_get_contents();
         $content = ob_get_contents();
         ob_end_clean();
         ob_end_clean();
-        $this->assertRegExp(
+        $this->assertMatchesRegularExpression(
             '#<div[^>]*id="errormessage"[^>]*>.*Invalid paste ID\.#s',
             '#<div[^>]*id="errormessage"[^>]*>.*Invalid paste ID\.#s',
             $content,
             $content,
             'outputs delete error correctly'
             'outputs delete error correctly'
@@ -838,7 +836,7 @@ class ControllerTest extends TestCase
         new Controller;
         new Controller;
         $content = ob_get_contents();
         $content = ob_get_contents();
         ob_end_clean();
         ob_end_clean();
-        $this->assertRegExp(
+        $this->assertMatchesRegularExpression(
             '#<div[^>]*id="errormessage"[^>]*>.*Paste does not exist, has expired or has been deleted\.#s',
             '#<div[^>]*id="errormessage"[^>]*>.*Paste does not exist, has expired or has been deleted\.#s',
             $content,
             $content,
             'outputs delete error correctly'
             'outputs delete error correctly'
@@ -857,7 +855,7 @@ class ControllerTest extends TestCase
         new Controller;
         new Controller;
         $content = ob_get_contents();
         $content = ob_get_contents();
         ob_end_clean();
         ob_end_clean();
-        $this->assertRegExp(
+        $this->assertMatchesRegularExpression(
             '#<div[^>]*id="errormessage"[^>]*>.*Wrong deletion token\. Paste was not deleted\.#s',
             '#<div[^>]*id="errormessage"[^>]*>.*Wrong deletion token\. Paste was not deleted\.#s',
             $content,
             $content,
             'outputs delete error correctly'
             'outputs delete error correctly'
@@ -905,7 +903,7 @@ class ControllerTest extends TestCase
         new Controller;
         new Controller;
         $content = ob_get_contents();
         $content = ob_get_contents();
         ob_end_clean();
         ob_end_clean();
-        $this->assertRegExp(
+        $this->assertMatchesRegularExpression(
             '#<div[^>]*id="errormessage"[^>]*>.*Paste does not exist, has expired or has been deleted\.#s',
             '#<div[^>]*id="errormessage"[^>]*>.*Paste does not exist, has expired or has been deleted\.#s',
             $content,
             $content,
             'outputs error correctly'
             'outputs error correctly'
@@ -928,7 +926,7 @@ class ControllerTest extends TestCase
         new Controller;
         new Controller;
         $content = ob_get_contents();
         $content = ob_get_contents();
         ob_end_clean();
         ob_end_clean();
-        $this->assertRegExp(
+        $this->assertMatchesRegularExpression(
             '#<div[^>]*id="status"[^>]*>.*Paste was properly deleted\.#s',
             '#<div[^>]*id="status"[^>]*>.*Paste was properly deleted\.#s',
             $content,
             $content,
             'outputs deleted status correctly'
             'outputs deleted status correctly'

+ 16 - 38
tst/Data/DatabaseTest.php

@@ -122,124 +122,102 @@ class DatabaseTest extends TestCase
         }
         }
     }
     }
 
 
-    /**
-     * @expectedException PDOException
-     */
     public function testGetIbmInstance()
     public function testGetIbmInstance()
     {
     {
+        $this->expectException(PDOException::class);
         Database::getInstance(array(
         Database::getInstance(array(
             'dsn' => 'ibm:', 'usr' => null, 'pwd' => null,
             'dsn' => 'ibm:', 'usr' => null, 'pwd' => null,
             'opt' => array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION),
             'opt' => array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION),
         ));
         ));
     }
     }
 
 
-    /**
-     * @expectedException PDOException
-     */
     public function testGetInformixInstance()
     public function testGetInformixInstance()
     {
     {
+        $this->expectException(PDOException::class);
         Database::getInstance(array(
         Database::getInstance(array(
             'dsn' => 'informix:', 'usr' => null, 'pwd' => null,
             'dsn' => 'informix:', 'usr' => null, 'pwd' => null,
             'opt' => array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION),
             'opt' => array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION),
         ));
         ));
     }
     }
 
 
-    /**
-     * @expectedException PDOException
-     */
     public function testGetMssqlInstance()
     public function testGetMssqlInstance()
     {
     {
+        $this->expectException(PDOException::class);
         Database::getInstance(array(
         Database::getInstance(array(
             'dsn' => 'mssql:', 'usr' => null, 'pwd' => null,
             'dsn' => 'mssql:', 'usr' => null, 'pwd' => null,
             'opt' => array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION),
             'opt' => array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION),
         ));
         ));
     }
     }
 
 
-    /**
-     * @expectedException PDOException
-     */
     public function testGetMysqlInstance()
     public function testGetMysqlInstance()
     {
     {
+        $this->expectException(PDOException::class);
         Database::getInstance(array(
         Database::getInstance(array(
             'dsn' => 'mysql:', 'usr' => null, 'pwd' => null,
             'dsn' => 'mysql:', 'usr' => null, 'pwd' => null,
             'opt' => array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION),
             'opt' => array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION),
         ));
         ));
     }
     }
 
 
-    /**
-     * @expectedException PDOException
-     */
     public function testGetOciInstance()
     public function testGetOciInstance()
     {
     {
+        $this->expectException(PDOException::class);
         Database::getInstance(array(
         Database::getInstance(array(
             'dsn' => 'oci:', 'usr' => null, 'pwd' => null,
             'dsn' => 'oci:', 'usr' => null, 'pwd' => null,
             'opt' => array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION),
             'opt' => array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION),
         ));
         ));
     }
     }
 
 
-    /**
-     * @expectedException PDOException
-     */
     public function testGetPgsqlInstance()
     public function testGetPgsqlInstance()
     {
     {
+        $this->expectException(PDOException::class);
         Database::getInstance(array(
         Database::getInstance(array(
             'dsn' => 'pgsql:', 'usr' => null, 'pwd' => null,
             'dsn' => 'pgsql:', 'usr' => null, 'pwd' => null,
             'opt' => array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION),
             'opt' => array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION),
         ));
         ));
     }
     }
 
 
-    /**
-     * @expectedException Exception
-     * @expectedExceptionCode 5
-     */
     public function testGetFooInstance()
     public function testGetFooInstance()
     {
     {
+        $this->expectException(Exception::class);
+        $this->expectExceptionCode(5);
         Database::getInstance(array(
         Database::getInstance(array(
             'dsn' => 'foo:', 'usr' => null, 'pwd' => null, 'opt' => null,
             'dsn' => 'foo:', 'usr' => null, 'pwd' => null, 'opt' => null,
         ));
         ));
     }
     }
 
 
-    /**
-     * @expectedException Exception
-     * @expectedExceptionCode 6
-     */
     public function testMissingDsn()
     public function testMissingDsn()
     {
     {
         $options = $this->_options;
         $options = $this->_options;
         unset($options['dsn']);
         unset($options['dsn']);
+        $this->expectException(Exception::class);
+        $this->expectExceptionCode(6);
         Database::getInstance($options);
         Database::getInstance($options);
     }
     }
 
 
-    /**
-     * @expectedException Exception
-     * @expectedExceptionCode 6
-     */
     public function testMissingUsr()
     public function testMissingUsr()
     {
     {
         $options = $this->_options;
         $options = $this->_options;
         unset($options['usr']);
         unset($options['usr']);
+        $this->expectException(Exception::class);
+        $this->expectExceptionCode(6);
         Database::getInstance($options);
         Database::getInstance($options);
     }
     }
 
 
-    /**
-     * @expectedException Exception
-     * @expectedExceptionCode 6
-     */
     public function testMissingPwd()
     public function testMissingPwd()
     {
     {
         $options = $this->_options;
         $options = $this->_options;
         unset($options['pwd']);
         unset($options['pwd']);
+        $this->expectException(Exception::class);
+        $this->expectExceptionCode(6);
         Database::getInstance($options);
         Database::getInstance($options);
     }
     }
 
 
-    /**
-     * @expectedException Exception
-     * @expectedExceptionCode 6
-     */
     public function testMissingOpt()
     public function testMissingOpt()
     {
     {
         $options = $this->_options;
         $options = $this->_options;
         unset($options['opt']);
         unset($options['opt']);
+        $this->expectException(Exception::class);
+        $this->expectExceptionCode(6);
         Database::getInstance($options);
         Database::getInstance($options);
     }
     }
 
 

+ 2 - 2
tst/Data/FilesystemTest.php

@@ -162,13 +162,13 @@ class FilesystemTest extends TestCase
         $this->_model->purge(10);
         $this->_model->purge(10);
         foreach ($ids as $dataid => $storagedir) {
         foreach ($ids as $dataid => $storagedir) {
             $this->assertFileExists($storagedir . $dataid . '.php', "paste $dataid exists in new format");
             $this->assertFileExists($storagedir . $dataid . '.php', "paste $dataid exists in new format");
-            $this->assertFileNotExists($storagedir . $dataid, "old format paste $dataid got removed");
+            $this->assertFileDoesNotExist($storagedir . $dataid, "old format paste $dataid got removed");
             $this->assertTrue($this->_model->exists($dataid), "paste $dataid exists");
             $this->assertTrue($this->_model->exists($dataid), "paste $dataid exists");
             $this->assertEquals($this->_model->read($dataid), $paste, "paste $dataid wasn't modified in the conversion");
             $this->assertEquals($this->_model->read($dataid), $paste, "paste $dataid wasn't modified in the conversion");
 
 
             $storagedir .= $dataid . '.discussion' . DIRECTORY_SEPARATOR;
             $storagedir .= $dataid . '.discussion' . DIRECTORY_SEPARATOR;
             $this->assertFileExists($storagedir . $dataid . '.' . $commentid . '.' . $dataid . '.php', "comment of $dataid exists in new format");
             $this->assertFileExists($storagedir . $dataid . '.' . $commentid . '.' . $dataid . '.php', "comment of $dataid exists in new format");
-            $this->assertFileNotExists($storagedir . $dataid . '.' . $commentid . '.' . $dataid, "old format comment of $dataid got removed");
+            $this->assertFileDoesNotExist($storagedir . $dataid . '.' . $commentid . '.' . $dataid, "old format comment of $dataid got removed");
             $this->assertTrue($this->_model->existsComment($dataid, $dataid, $commentid), "comment in paste $dataid exists");
             $this->assertTrue($this->_model->existsComment($dataid, $dataid, $commentid), "comment in paste $dataid exists");
             $comment             = $comment;
             $comment             = $comment;
             $comment['id']       = $commentid;
             $comment['id']       = $commentid;

+ 2 - 4
tst/FilterTest.php

@@ -13,12 +13,10 @@ class FilterTest extends TestCase
         $this->assertEquals('6 months', Filter::formatHumanReadableTime('6months'));
         $this->assertEquals('6 months', Filter::formatHumanReadableTime('6months'));
     }
     }
 
 
-    /**
-     * @expectedException Exception
-     * @expectedExceptionCode 30
-     */
     public function testFilterFailTimesHumanlyReadable()
     public function testFilterFailTimesHumanlyReadable()
     {
     {
+        $this->expectException(Exception::class);
+        $this->expectExceptionCode(30);
         Filter::formatHumanReadableTime('five_minutes');
         Filter::formatHumanReadableTime('five_minutes');
     }
     }
 
 

+ 1 - 1
tst/I18nTest.php

@@ -18,7 +18,7 @@ class I18nTest extends TestCase
 
 
     public function tearDown(): void
     public function tearDown(): void
     {
     {
-        /* Tear Down Routine */
+        unset($_COOKIE['lang'], $_SERVER['HTTP_ACCEPT_LANGUAGE']);
     }
     }
 
 
     public function testTranslationFallback()
     public function testTranslationFallback()

+ 19 - 38
tst/ModelTest.php

@@ -116,10 +116,6 @@ class ModelTest extends TestCase
         $this->assertEquals(Helper::getPasteId(), $comment->getParentId(), 'comment parent ID gets initialized to paste ID');
         $this->assertEquals(Helper::getPasteId(), $comment->getParentId(), 'comment parent ID gets initialized to paste ID');
     }
     }
 
 
-    /**
-     * @expectedException Exception
-     * @expectedExceptionCode 75
-     */
     public function testPasteDuplicate()
     public function testPasteDuplicate()
     {
     {
         $pasteData = Helper::getPastePost();
         $pasteData = Helper::getPastePost();
@@ -131,13 +127,11 @@ class ModelTest extends TestCase
 
 
         $paste = $this->_model->getPaste();
         $paste = $this->_model->getPaste();
         $paste->setData($pasteData);
         $paste->setData($pasteData);
+        $this->expectException(Exception::class);
+        $this->expectExceptionCode(75);
         $paste->store();
         $paste->store();
     }
     }
 
 
-    /**
-     * @expectedException Exception
-     * @expectedExceptionCode 69
-     */
     public function testCommentDuplicate()
     public function testCommentDuplicate()
     {
     {
         $pasteData   = Helper::getPastePost();
         $pasteData   = Helper::getPastePost();
@@ -154,6 +148,8 @@ class ModelTest extends TestCase
 
 
         $comment = $paste->getComment(Helper::getPasteId());
         $comment = $paste->getComment(Helper::getPasteId());
         $comment->setData($commentData);
         $comment->setData($commentData);
+        $this->expectException(Exception::class);
+        $this->expectExceptionCode(69);
         $comment->store();
         $comment->store();
     }
     }
 
 
@@ -185,40 +181,30 @@ class ModelTest extends TestCase
         $this->assertFalse(Paste::isValidId('../bar/baz'), 'path attack');
         $this->assertFalse(Paste::isValidId('../bar/baz'), 'path attack');
     }
     }
 
 
-    /**
-     * @expectedException Exception
-     * @expectedExceptionCode 64
-     */
     public function testInvalidPaste()
     public function testInvalidPaste()
     {
     {
         $this->_model->getPaste(Helper::getPasteId())->delete();
         $this->_model->getPaste(Helper::getPasteId())->delete();
         $paste = $this->_model->getPaste(Helper::getPasteId());
         $paste = $this->_model->getPaste(Helper::getPasteId());
+        $this->expectException(Exception::class);
+        $this->expectExceptionCode(64);
         $paste->get();
         $paste->get();
     }
     }
 
 
-    /**
-     * @expectedException Exception
-     * @expectedExceptionCode 60
-     */
     public function testInvalidPasteId()
     public function testInvalidPasteId()
     {
     {
+        $this->expectException(Exception::class);
+        $this->expectExceptionCode(60);
         $this->_model->getPaste('');
         $this->_model->getPaste('');
     }
     }
 
 
-    /**
-     * @expectedException Exception
-     * @expectedExceptionCode 62
-     */
     public function testInvalidComment()
     public function testInvalidComment()
     {
     {
         $paste = $this->_model->getPaste();
         $paste = $this->_model->getPaste();
+        $this->expectException(Exception::class);
+        $this->expectExceptionCode(62);
         $paste->getComment(Helper::getPasteId());
         $paste->getComment(Helper::getPasteId());
     }
     }
 
 
-    /**
-     * @expectedException Exception
-     * @expectedExceptionCode 67
-     */
     public function testInvalidCommentDeletedPaste()
     public function testInvalidCommentDeletedPaste()
     {
     {
         $pasteData = Helper::getPastePost();
         $pasteData = Helper::getPastePost();
@@ -228,13 +214,11 @@ class ModelTest extends TestCase
 
 
         $comment = $paste->getComment(Helper::getPasteId());
         $comment = $paste->getComment(Helper::getPasteId());
         $paste->delete();
         $paste->delete();
+        $this->expectException(Exception::class);
+        $this->expectExceptionCode(67);
         $comment->store();
         $comment->store();
     }
     }
 
 
-    /**
-     * @expectedException Exception
-     * @expectedExceptionCode 68
-     */
     public function testInvalidCommentData()
     public function testInvalidCommentData()
     {
     {
         $pasteData             = Helper::getPastePost();
         $pasteData             = Helper::getPastePost();
@@ -244,18 +228,17 @@ class ModelTest extends TestCase
         $paste->store();
         $paste->store();
 
 
         $comment = $paste->getComment(Helper::getPasteId());
         $comment = $paste->getComment(Helper::getPasteId());
+        $this->expectException(Exception::class);
+        $this->expectExceptionCode(68);
         $comment->store();
         $comment->store();
     }
     }
 
 
-    /**
-     * @expectedException Exception
-     * @expectedExceptionCode 65
-     */
     public function testInvalidCommentParent()
     public function testInvalidCommentParent()
     {
     {
         $paste     = $this->_model->getPaste(Helper::getPasteId());
         $paste     = $this->_model->getPaste(Helper::getPasteId());
-        $comment   = $paste->getComment('');
-        $comment->store();
+        $this->expectException(Exception::class);
+        $this->expectExceptionCode(65);
+        $paste->getComment('');
     }
     }
 
 
     public function testExpiration()
     public function testExpiration()
@@ -273,10 +256,6 @@ class ModelTest extends TestCase
         $this->assertEquals((float) 300, (float) $paste['meta']['time_to_live'], 'remaining time is set correctly', 1.0);
         $this->assertEquals((float) 300, (float) $paste['meta']['time_to_live'], 'remaining time is set correctly', 1.0);
     }
     }
 
 
-    /**
-     * @expectedException Exception
-     * @expectedExceptionCode 64
-     */
     public function testCommentDeletion()
     public function testCommentDeletion()
     {
     {
         $pasteData = Helper::getPastePost();
         $pasteData = Helper::getPastePost();
@@ -285,6 +264,8 @@ class ModelTest extends TestCase
         $paste = $this->_model->getPaste();
         $paste = $this->_model->getPaste();
         $paste->setData($pasteData);
         $paste->setData($pasteData);
         $paste->store();
         $paste->store();
+        $this->expectException(Exception::class);
+        $this->expectExceptionCode(64);
         $paste->getComment(Helper::getPasteId())->delete();
         $paste->getComment(Helper::getPasteId())->delete();
     }
     }
 
 

+ 8 - 16
tst/Persistence/ServerSaltTest.php

@@ -51,22 +51,16 @@ class ServerSaltTest extends TestCase
         $this->assertEquals($salt, ServerSalt::get());
         $this->assertEquals($salt, ServerSalt::get());
     }
     }
 
 
-    /**
-     * @expectedException Exception
-     * @expectedExceptionCode 11
-     */
     public function testPathShenanigans()
     public function testPathShenanigans()
     {
     {
         // try setting an invalid path
         // try setting an invalid path
         chmod($this->_invalidPath, 0000);
         chmod($this->_invalidPath, 0000);
         ServerSalt::setPath($this->_invalidPath);
         ServerSalt::setPath($this->_invalidPath);
+        $this->expectException(Exception::class);
+        $this->expectExceptionCode(11);
         ServerSalt::get();
         ServerSalt::get();
     }
     }
 
 
-    /**
-     * @expectedException Exception
-     * @expectedExceptionCode 20
-     */
     public function testFileRead()
     public function testFileRead()
     {
     {
         // try setting an invalid file
         // try setting an invalid file
@@ -74,13 +68,11 @@ class ServerSaltTest extends TestCase
         file_put_contents($this->_invalidFile, '');
         file_put_contents($this->_invalidFile, '');
         chmod($this->_invalidFile, 0000);
         chmod($this->_invalidFile, 0000);
         ServerSalt::setPath($this->_invalidPath);
         ServerSalt::setPath($this->_invalidPath);
+        $this->expectException(Exception::class);
+        $this->expectExceptionCode(20);
         ServerSalt::get();
         ServerSalt::get();
     }
     }
 
 
-    /**
-     * @expectedException Exception
-     * @expectedExceptionCode 13
-     */
     public function testFileWrite()
     public function testFileWrite()
     {
     {
         // try setting an invalid file
         // try setting an invalid file
@@ -92,18 +84,18 @@ class ServerSaltTest extends TestCase
         file_put_contents($this->_invalidPath . DIRECTORY_SEPARATOR . '.htaccess', '');
         file_put_contents($this->_invalidPath . DIRECTORY_SEPARATOR . '.htaccess', '');
         chmod($this->_invalidPath, 0500);
         chmod($this->_invalidPath, 0500);
         ServerSalt::setPath($this->_invalidPath);
         ServerSalt::setPath($this->_invalidPath);
+        $this->expectException(Exception::class);
+        $this->expectExceptionCode(13);
         ServerSalt::get();
         ServerSalt::get();
     }
     }
 
 
-    /**
-     * @expectedException Exception
-     * @expectedExceptionCode 10
-     */
     public function testPermissionShenanigans()
     public function testPermissionShenanigans()
     {
     {
         // try creating an invalid path
         // try creating an invalid path
         chmod($this->_invalidPath, 0000);
         chmod($this->_invalidPath, 0000);
         ServerSalt::setPath($this->_invalidPath . DIRECTORY_SEPARATOR . 'baz');
         ServerSalt::setPath($this->_invalidPath . DIRECTORY_SEPARATOR . 'baz');
+        $this->expectException(Exception::class);
+        $this->expectExceptionCode(10);
         ServerSalt::get();
         ServerSalt::get();
     }
     }
 }
 }

+ 7 - 9
tst/ViewTest.php

@@ -95,28 +95,28 @@ class ViewTest extends TestCase
     public function testTemplateRendersCorrectly()
     public function testTemplateRendersCorrectly()
     {
     {
         foreach ($this->_content as $template => $content) {
         foreach ($this->_content as $template => $content) {
-            $this->assertRegExp(
+            $this->assertMatchesRegularExpression(
                 '#<div[^>]+id="errormessage"[^>]*>.*' . self::$error . '#s',
                 '#<div[^>]+id="errormessage"[^>]*>.*' . self::$error . '#s',
                 $content,
                 $content,
                 $template . ': outputs error correctly'
                 $template . ': outputs error correctly'
             );
             );
-            $this->assertRegExp(
+            $this->assertMatchesRegularExpression(
                 '#<[^>]+id="password"[^>]*>#',
                 '#<[^>]+id="password"[^>]*>#',
                 $content,
                 $content,
                 $template . ': password available if configured'
                 $template . ': password available if configured'
             );
             );
-            $this->assertRegExp(
+            $this->assertMatchesRegularExpression(
                 '#<input[^>]+id="opendiscussion"[^>]*checked="checked"[^>]*>#',
                 '#<input[^>]+id="opendiscussion"[^>]*checked="checked"[^>]*>#',
                 $content,
                 $content,
                 $template . ': checked discussion if configured'
                 $template . ': checked discussion if configured'
             );
             );
-            $this->assertRegExp(
+            $this->assertMatchesRegularExpression(
                 '#<[^>]+id="opendiscussionoption"[^>]*>#',
                 '#<[^>]+id="opendiscussionoption"[^>]*>#',
                 $content,
                 $content,
                 $template . ': discussions available if configured'
                 $template . ': discussions available if configured'
             );
             );
             // testing version number in JS address, since other instances may not be present in different templates
             // testing version number in JS address, since other instances may not be present in different templates
-            $this->assertRegExp(
+            $this->assertMatchesRegularExpression(
                 '#<script[^>]+src="js/privatebin.js\\?' . rawurlencode(self::$version) . '"[^>]*>#',
                 '#<script[^>]+src="js/privatebin.js\\?' . rawurlencode(self::$version) . '"[^>]*>#',
                 $content,
                 $content,
                 $template . ': outputs version correctly'
                 $template . ': outputs version correctly'
@@ -124,13 +124,11 @@ class ViewTest extends TestCase
         }
         }
     }
     }
 
 
-    /**
-     * @expectedException Exception
-     * @expectedExceptionCode 80
-     */
     public function testMissingTemplate()
     public function testMissingTemplate()
     {
     {
         $test = new View;
         $test = new View;
+        $this->expectException(Exception::class);
+        $this->expectExceptionCode(80);
         $test->draw('123456789 does not exist!');
         $test->draw('123456789 does not exist!');
     }
     }
 }
 }

+ 21 - 18
tst/phpunit.xml

@@ -1,19 +1,22 @@
-<phpunit bootstrap="Bootstrap.php" colors="true">
-	<testsuite name="PrivateBin Test Suite">
-		<directory suffix=".php">./</directory>
-		<exclude>ConfigurationTestGenerator.php</exclude>
-	</testsuite>
-	<filter>
-		<whitelist>
-			<directory suffix=".php">../lib</directory>
-			<exclude>
-				<file>../lib/Data/AbstractData.php</file>
-			</exclude>
-		</whitelist>
-	</filter>
-	<logging>
-		<log type="coverage-clover" target="log/coverage-clover.xml" />
-		<log type="coverage-html" target="log/php-coverage-report" lowUpperBound="50" highLowerBound="80" />
-		<log type="testdox-html" target="log/testdox.html" />
-	</logging>
+<?xml version="1.0"?>
+<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" bootstrap="Bootstrap.php" colors="true" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd">
+  <coverage>
+    <include>
+      <directory suffix=".php">../lib</directory>
+    </include>
+    <exclude>
+      <file>../lib/Data/AbstractData.php</file>
+    </exclude>
+    <report>
+      <clover outputFile="log/coverage-clover.xml"/>
+      <html outputDirectory="log/php-coverage-report" lowUpperBound="50" highLowerBound="80"/>
+    </report>
+  </coverage>
+  <testsuite name="PrivateBin Test Suite">
+    <directory suffix=".php">./</directory>
+    <exclude>ConfigurationTestGenerator.php</exclude>
+  </testsuite>
+  <logging>
+    <testdoxHtml outputFile="log/testdox.html"/>
+  </logging>
 </phpunit>
 </phpunit>