mirror of
https://github.com/PrivateBin/PrivateBin.git
synced 2026-03-05 13:30:32 -05:00
Add test cases for shlink
This commit is contained in:
@@ -313,6 +313,60 @@ class JsonApiTest extends TestCase
|
||||
$this->assertStringContainsString('id="pasteurl" href="https://example.com/1"', $content, "'{$baseUri}' outputs shortened URL correctly");
|
||||
}
|
||||
|
||||
/**
|
||||
* @runInSeparateProcess
|
||||
* @dataProvider baseShlinkUriProvider
|
||||
*/
|
||||
public function testShortenViaShlink($baseUri)
|
||||
{
|
||||
$mock_shlink_service = $this->_path . DIRECTORY_SEPARATOR . 'shlink.json';
|
||||
$options = parse_ini_file(CONF, true);
|
||||
$options['main']['basepath'] = 'https://example.com/path'; // missing slash gets added by Configuration constructor
|
||||
$options['main']['urlshortener'] = 'https://example.com' . $baseUri . 'link=';
|
||||
$options['shlink']['apiurl'] = $mock_shlink_service;
|
||||
Helper::createIniFile(CONF, $options);
|
||||
|
||||
// the real service answer is more complex, but we only look for the shorturl & statusCode
|
||||
file_put_contents($mock_shlink_service, '{"shortUrl":"https:\/\/example.com\/1"}');
|
||||
|
||||
$_SERVER['REQUEST_URI'] = $baseUri . 'link=https%3A%2F%2Fexample.com%2Fpath%2F%3Ffoo%23bar';
|
||||
$_GET['link'] = 'https://example.com/path/?foo#bar';
|
||||
if (str_contains($baseUri, '?shortenviashlink')) {
|
||||
$_GET['shortenviashlink'] = null;
|
||||
}
|
||||
ob_start();
|
||||
new Controller;
|
||||
$content = ob_get_contents();
|
||||
ob_end_clean();
|
||||
$this->assertStringContainsString('id="pasteurl" href="https://example.com/1"', $content, "'{$baseUri}' outputs shortened URL correctly");
|
||||
}
|
||||
|
||||
/**
|
||||
* @runInSeparateProcess
|
||||
* @dataProvider baseShlinkUriProvider
|
||||
*/
|
||||
public function testShortenViaShlinkFailureHttp($baseUri)
|
||||
{
|
||||
$mock_shlink_service = 'https://httpbin.org/status/403';
|
||||
$options = parse_ini_file(CONF, true);
|
||||
$options['main']['basepath'] = 'https://example.com/path'; // missing slash gets added by Configuration constructor
|
||||
$options['main']['urlshortener'] = 'https://example.com' . $baseUri . 'link=';
|
||||
$options['shlink']['apiurl'] = $mock_shlink_service;
|
||||
Helper::createIniFile(CONF, $options);
|
||||
|
||||
$_SERVER['REQUEST_URI'] = $baseUri . 'link=https%3A%2F%2Fexample.com%2Fpath%2F%3Ffoo%23bar';
|
||||
$_GET['link'] = 'https://example.com/path/?foo#bar';
|
||||
if (str_contains($baseUri, '?shortenviashlink')) {
|
||||
$_GET['shortenviashlink'] = null;
|
||||
}
|
||||
ob_start();
|
||||
// Use @ to ignore the http warning for the 403. It will be handled appropriately by AbstractProxy
|
||||
@new Controller;
|
||||
$content = ob_get_contents();
|
||||
ob_end_clean();
|
||||
$this->assertStringContainsString('Error calling proxy.', $content, 'outputs error correctly');
|
||||
}
|
||||
|
||||
public function baseUriProvider()
|
||||
{
|
||||
return array(
|
||||
@@ -322,6 +376,15 @@ class JsonApiTest extends TestCase
|
||||
);
|
||||
}
|
||||
|
||||
public function baseShlinkUriProvider()
|
||||
{
|
||||
return array(
|
||||
array('/path/shortenviashlink?'),
|
||||
array('/path/index.php/shortenviashlink?'),
|
||||
array('/path?shortenviashlink&'),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @runInSeparateProcess
|
||||
*/
|
||||
@@ -338,4 +401,21 @@ class JsonApiTest extends TestCase
|
||||
ob_end_clean();
|
||||
$this->assertStringContainsString('Error calling proxy.', $content, 'outputs error correctly');
|
||||
}
|
||||
|
||||
/**
|
||||
* @runInSeparateProcess
|
||||
*/
|
||||
public function testShortenViaShlinkFailure()
|
||||
{
|
||||
$options = parse_ini_file(CONF, true);
|
||||
$options['main']['basepath'] = 'https://example.com/path'; // missing slash gets added by Configuration constructor
|
||||
Helper::createIniFile(CONF, $options);
|
||||
$_SERVER['REQUEST_URI'] = '/path/shortenviashlink?link=https%3A%2F%2Fexample.com%2Fpath%2F%3Ffoo%23bar';
|
||||
$_GET['link'] = 'https://example.com/path/?foo#bar';
|
||||
ob_start();
|
||||
new Controller;
|
||||
$content = ob_get_contents();
|
||||
ob_end_clean();
|
||||
$this->assertStringContainsString('Error calling proxy.', $content, 'outputs error correctly');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user