summaryrefslogtreecommitdiffstats
path: root/vendor/fguillot/picofeed/tests/Client
diff options
context:
space:
mode:
authorBernhard Posselt <dev@bernhard-posselt.com>2015-01-27 09:31:40 +0100
committerBernhard Posselt <dev@bernhard-posselt.com>2015-01-27 09:31:40 +0100
commit8241180c6ce0cb19255d70a3394f891e08182542 (patch)
tree325996a06d9896567957871cc0f34865c46118da /vendor/fguillot/picofeed/tests/Client
parent73f65c8fbadbdd2098448e77b6d3f0464ad8613e (diff)
dont use picofeed submodule
Diffstat (limited to 'vendor/fguillot/picofeed/tests/Client')
m---------vendor/fguillot/picofeed0
-rw-r--r--vendor/fguillot/picofeed/tests/Client/ClientTest.php110
-rw-r--r--vendor/fguillot/picofeed/tests/Client/CurlTest.php54
-rw-r--r--vendor/fguillot/picofeed/tests/Client/GrabberTest.php67
-rw-r--r--vendor/fguillot/picofeed/tests/Client/HttpHeadersTest.php19
-rw-r--r--vendor/fguillot/picofeed/tests/Client/StreamTest.php65
-rw-r--r--vendor/fguillot/picofeed/tests/Client/UrlTest.php292
7 files changed, 607 insertions, 0 deletions
diff --git a/vendor/fguillot/picofeed b/vendor/fguillot/picofeed
deleted file mode 160000
-Subproject 0a1d0d3950f7f047dc8fb1d80aa6296e15f306d
diff --git a/vendor/fguillot/picofeed/tests/Client/ClientTest.php b/vendor/fguillot/picofeed/tests/Client/ClientTest.php
new file mode 100644
index 000000000..3f094d04c
--- /dev/null
+++ b/vendor/fguillot/picofeed/tests/Client/ClientTest.php
@@ -0,0 +1,110 @@
+<?php
+
+namespace PicoFeed\Client;
+
+use PHPUnit_Framework_TestCase;
+
+class ClientTest extends PHPUnit_Framework_TestCase
+{
+ public function testDownload()
+ {
+ $client = Client::getInstance();
+ $client->setUrl('http://php.net/robots.txt');
+ $client->execute();
+
+ $this->assertTrue($client->isModified());
+ $this->assertNotEmpty($client->getContent());
+ $this->assertNotEmpty($client->getEtag());
+ $this->assertNotEmpty($client->getLastModified());
+ }
+
+ public function testCacheBothHaveToMatch()
+ {
+ $client = Client::getInstance();
+ $client->setUrl('http://php.net/robots.txt');
+ $client->execute();
+ $etag = $client->getEtag();
+
+ $client = Client::getInstance();
+ $client->setUrl('http://php.net/robots.txt');
+ $client->setEtag($etag);
+ $client->execute();
+
+ $this->assertTrue($client->isModified());
+ }
+
+ public function testCacheEtag()
+ {
+ $client = Client::getInstance();
+ $client->setUrl('http://php.net/robots.txt');
+ $client->execute();
+ $etag = $client->getEtag();
+ $lastModified = $client->getLastModified();
+
+ $client = Client::getInstance();
+ $client->setUrl('http://php.net/robots.txt');
+ $client->setEtag($etag);
+ $client->setLastModified($lastModified);
+ $client->execute();
+
+ $this->assertFalse($client->isModified());
+ }
+
+ public function testCacheLastModified()
+ {
+ $client = Client::getInstance();
+ $client->setUrl('http://miniflux.net/humans.txt');
+ $client->execute();
+ $lastmod = $client->getLastModified();
+
+ $client = Client::getInstance();
+ $client->setUrl('http://miniflux.net/humans.txt');
+ $client->setLastModified($lastmod);
+ $client->execute();
+
+ $this->assertFalse($client->isModified());
+ }
+
+ public function testCacheBoth()
+ {
+ $client = Client::getInstance();
+ $client->setUrl('http://miniflux.net/humans.txt');
+ $client->execute();
+ $lastmod = $client->getLastModified();
+ $etag = $client->getEtag();
+
+ $client = Client::getInstance();
+ $client->setUrl('http://miniflux.net/humans.txt');
+ $client->setLastModified($lastmod);
+ $client->setEtag($etag);
+ $client->execute();
+
+ $this->assertFalse($client->isModified());
+ }
+
+ public function testCharset()
+ {
+ $client = Client::getInstance();
+ $client->setUrl('http://php.net/');
+ $client->execute();
+ $this->assertEquals('utf-8', $client->getEncoding());
+
+ $client = Client::getInstance();
+ $client->setUrl('http://php.net/robots.txt');
+ $client->execute();
+ $this->assertEquals('', $client->getEncoding());
+ }
+
+ public function testContentType()
+ {
+ $client = Client::getInstance();
+ $client->setUrl('http://miniflux.net/assets/img/favicon.png');
+ $client->execute();
+ $this->assertEquals('image/png', $client->getContentType());
+
+ $client = Client::getInstance();
+ $client->setUrl('http://miniflux.net/');
+ $client->execute();
+ $this->assertEquals('text/html; charset=utf-8', $client->getContentType());
+ }
+}
diff --git a/vendor/fguillot/picofeed/tests/Client/CurlTest.php b/vendor/fguillot/picofeed/tests/Client/CurlTest.php
new file mode 100644
index 000000000..4509dbc67
--- /dev/null
+++ b/vendor/fguillot/picofeed/tests/Client/CurlTest.php
@@ -0,0 +1,54 @@
+<?php
+namespace PicoFeed\Client;
+
+use PHPUnit_Framework_TestCase;
+
+
+class CurlTest extends PHPUnit_Framework_TestCase
+{
+ public function testDownload()
+ {
+ $client = new Curl;
+ $client->setUrl('http://miniflux.net/index.html');
+ $result = $client->doRequest();
+
+ $this->assertTrue(is_array($result));
+ $this->assertEquals(200, $result['status']);
+ $this->assertEquals('<!DOC', substr($result['body'], 0, 5));
+ $this->assertEquals('text/html; charset=utf-8', $result['headers']['Content-Type']);
+ }
+
+
+ public function testRedirect()
+ {
+ $client = new Curl;
+ $client->setUrl('http://www.miniflux.net/index.html');
+ $result = $client->doRequest();
+
+ $this->assertTrue(is_array($result));
+ $this->assertEquals(200, $result['status']);
+ $this->assertEquals('<!DOCTYPE', substr($result['body'], 0, 9));
+ $this->assertEquals('text/html; charset=utf-8', $result['headers']['Content-Type']);
+ $this->assertEquals('http://miniflux.net/', $client->getUrl());
+ }
+
+ /**
+ * @expectedException PicoFeed\Client\InvalidCertificateException
+ */
+ public function testSSL()
+ {
+ $client = new Curl;
+ $client->setUrl('https://www.mjvmobile.com.br');
+ $client->doRequest();
+ }
+
+ /**
+ * @expectedException PicoFeed\Client\InvalidUrlException
+ */
+ public function testBadUrl()
+ {
+ $client = new Curl;
+ $client->setUrl('http://12345gfgfgf');
+ $client->doRequest();
+ }
+} \ No newline at end of file
diff --git a/vendor/fguillot/picofeed/tests/Client/GrabberTest.php b/vendor/fguillot/picofeed/tests/Client/GrabberTest.php
new file mode 100644
index 000000000..8fc9c58a6
--- /dev/null
+++ b/vendor/fguillot/picofeed/tests/Client/GrabberTest.php
@@ -0,0 +1,67 @@
+<?php
+
+namespace PicoFeed\Client;
+
+use PHPUnit_Framework_TestCase;
+use PicoFeed\Reader\Reader;
+
+class GrabberTest extends PHPUnit_Framework_TestCase
+{
+ public function testGrabContentWithCandidates()
+ {
+ $grabber = new Grabber('http://theonion.com.feedsportal.com/c/34529/f/632231/s/309a7fe4/sc/20/l/0L0Stheonion0N0Carticles0Cobama0Ethrows0Eup0Eright0Ethere0Eduring0Esyria0Emeeting0H336850C/story01.htm');
+ $grabber->download();
+ $this->assertTrue($grabber->parse());
+
+ $grabber = new Grabber('http://www.lemonde.fr/proche-orient/article/2013/08/30/la-france-nouvelle-plus-ancienne-alliee-des-etats-unis_3469218_3218.html');
+ $grabber->download();
+ $this->assertTrue($grabber->parse());
+
+ $grabber = new Grabber('http://www.rue89.com/2013/08/30/faisait-boris-boillon-ex-sarko-boy-350-000-euros-gare-nord-245315');
+ $grabber->download();
+ $this->assertTrue($grabber->parse());
+
+ $grabber = new Grabber('http://www.inc.com/suzanne-lucas/why-employee-turnover-is-so-costly.html');
+ $grabber->download();
+ $this->assertTrue($grabber->parse());
+
+ $grabber = new Grabber('http://arstechnica.com/information-technology/2013/08/sysadmin-security-fail-nsa-finds-snowden-hijacked-officials-logins/');
+ $grabber->download();
+ $this->assertTrue($grabber->parse());
+ }
+
+ public function testGetRules()
+ {
+ $grabber = new Grabber('http://www.egscomics.com/index.php?id=1690');
+ $this->assertTrue(is_array($grabber->getRules()));
+ }
+
+ // 01net.com - https://github.com/fguillot/miniflux/issues/267
+ public function testGetRules_afterRedirection()
+ {
+ $grabber = new Grabber('http://rss.feedsportal.com/c/629/f/502199/s/422f8c8a/sc/44/l/0L0S0A1net0N0Ceditorial0C640A3130Cces0E20A150Eimprimer0Eune0Epizza0Eet0Edes0Ebiscuits0Evideo0C0T0Dxtor0FRSS0E16/story01.htm');
+ $grabber->download();
+ $this->assertTrue(is_array($grabber->getRules()));
+ }
+
+ public function testGrabContent()
+ {
+ $grabber = new Grabber('http://www.egscomics.com/index.php?id=1690');
+ $grabber->download();
+ $this->assertTrue($grabber->parse());
+
+ $this->assertEquals('<img title="2013-08-22" src="comics/../comics/1377151029-2013-08-22.png" id="comic" border="0" />', $grabber->getContent());
+ }
+
+ public function testRssGrabContent()
+ {
+ $reader = new Reader;
+ $client = $reader->download('http://www.egscomics.com/rss.php');
+ $parser = $reader->getParser($client->getUrl(), $client->getContent(), $client->getEncoding());
+ $parser->enableContentGrabber();
+ $feed = $parser->execute();
+
+ $this->assertTrue(is_array($feed->items));
+ $this->assertTrue(strpos($feed->items[0]->content, '<img') >= 0);
+ }
+}
diff --git a/vendor/fguillot/picofeed/tests/Client/HttpHeadersTest.php b/vendor/fguillot/picofeed/tests/Client/HttpHeadersTest.php
new file mode 100644
index 000000000..f577d00fa
--- /dev/null
+++ b/vendor/fguillot/picofeed/tests/Client/HttpHeadersTest.php
@@ -0,0 +1,19 @@
+<?php
+namespace PicoFeed\Client;
+
+use PHPUnit_Framework_TestCase;
+
+
+class HttpHeadersTest extends PHPUnit_Framework_TestCase
+{
+
+ public function testHttpHeadersSet() {
+ $headers = new HttpHeaders(array('Content-Type' => 'test'));
+ $this->assertEquals('test', $headers['content-typE']);
+ $this->assertTrue(isset($headers['ConTent-Type']));
+
+ unset($headers['Content-Type']);
+ $this->assertFalse(isset($headers['ConTent-Type']));
+ }
+
+} \ No newline at end of file
diff --git a/vendor/fguillot/picofeed/tests/Client/StreamTest.php b/vendor/fguillot/picofeed/tests/Client/StreamTest.php
new file mode 100644
index 000000000..91f52c898
--- /dev/null
+++ b/vendor/fguillot/picofeed/tests/Client/StreamTest.php
@@ -0,0 +1,65 @@
+<?php
+namespace PicoFeed\Client;
+
+use PHPUnit_Framework_TestCase;
+
+
+class StreamTest extends PHPUnit_Framework_TestCase
+{
+ public function testChunkedResponse()
+ {
+ $client = new Stream;
+ $client->setUrl('http://www.reddit.com/r/dwarffortress/.rss');
+ $result = $client->doRequest();
+
+ $this->assertEquals('</rss>', substr($result['body'], -6));
+ }
+
+ public function testDownload()
+ {
+ $client = new Stream;
+ $client->setUrl('https://github.com/fguillot/picoFeed');
+ $result = $client->doRequest();
+
+ $this->assertEquals(200, $result['status']);
+ $this->assertEquals('text/html; charset=utf-8', $result['headers']['Content-Type']);
+ $this->assertEquals('<!DOCTYPE html>', substr(trim($result['body']), 0, 15));
+ $this->assertEquals('</html>', substr(trim($result['body']), -7));
+ }
+
+ public function testRedirect()
+ {
+ $client = new Stream;
+ $client->setUrl('http://www.miniflux.net/index.html');
+ $result = $client->doRequest();
+
+ $this->assertTrue(is_array($result));
+ $this->assertEquals(200, $result['status']);
+ $this->assertEquals('<!DOCTYPE', substr($result['body'], 0, 9));
+ $this->assertEquals('text/html; charset=utf-8', $result['headers']['Content-Type']);
+ $this->assertEquals('http://miniflux.net/', $client->getUrl());
+ }
+
+ /**
+ * @expectedException PicoFeed\Client\InvalidUrlException
+ */
+ public function testBadUrl()
+ {
+ $client = new Stream;
+ $client->setUrl('http://12345gfgfgf');
+ $client->setTimeout(1);
+ $client->doRequest();
+ }
+
+ public function testDecodeGzip()
+ {
+ if (function_exists('gzdecode')) {
+ $client = new Stream;
+ $client->setUrl('https://github.com/fguillot/picoFeed');
+ $result = $client->doRequest();
+
+ $this->assertEquals('gzip', $result['headers']['Content-Encoding']);
+ $this->assertEquals('<!DOC', substr(trim($result['body']), 0, 5));
+ }
+ }
+} \ No newline at end of file
diff --git a/vendor/fguillot/picofeed/tests/Client/UrlTest.php b/vendor/fguillot/picofeed/tests/Client/UrlTest.php
new file mode 100644
index 000000000..f55d301c0
--- /dev/null
+++ b/vendor/fguillot/picofeed/tests/Client/UrlTest.php
@@ -0,0 +1,292 @@
+<?php
+
+namespace PicoFeed\Client;
+
+use PHPUnit_Framework_TestCase;
+
+class UrlTest extends PHPUnit_Framework_TestCase
+{
+ public function testHasScheme()
+ {
+ $url = new Url('http://www.google.fr/');
+ $this->assertTrue($url->hasScheme());
+
+ $url = new Url('//www.google.fr/');
+ $this->assertFalse($url->hasScheme());
+
+ $url = new Url('/path');
+ $this->assertFalse($url->hasScheme());
+
+ $url = new Url('anything');
+ $this->assertFalse($url->hasScheme());
+ }
+
+ public function testHasPort()
+ {
+ $url = new Url('http://127.0.0.1:8000/');
+ $this->assertTrue($url->hasPort());
+
+ $url = new Url('http://127.0.0.1/');
+ $this->assertFalse($url->hasPort());
+ }
+
+ public function testIsProtocolRelative()
+ {
+ $url = new Url('http://www.google.fr/');
+ $this->assertFalse($url->isProtocolRelative());
+
+ $url = new Url('//www.google.fr/');
+ $this->assertTrue($url->isProtocolRelative());
+
+ $url = new Url('/path');
+ $this->assertFalse($url->isProtocolRelative());
+
+ $url = new Url('anything');
+ $this->assertFalse($url->isProtocolRelative());
+ }
+
+ public function testBaseUrl()
+ {
+ $url = new Url('../bla');
+ $this->assertEquals('', $url->getBaseUrl());
+
+ $url = new Url('github.com');
+ $this->assertEquals('', $url->getBaseUrl());
+
+ $url = new Url('http://127.0.0.1:8000');
+ $this->assertEquals('http://127.0.0.1:8000', $url->getBaseUrl());
+
+ $url = new Url('http://127.0.0.1:8000/test?123');
+ $this->assertEquals('http://127.0.0.1:8000', $url->getBaseUrl());
+
+ $url = new Url('http://localhost/test');
+ $this->assertEquals('http://localhost', $url->getBaseUrl());
+
+ $url = new Url('https://localhost/test');
+ $this->assertEquals('https://localhost', $url->getBaseUrl());
+
+ $url = new Url('//localhost/test?truc');
+ $this->assertEquals('http://localhost', $url->getBaseUrl());
+
+ $url = new Url('//localhost/test?truc');
+ $this->assertEquals('http://localhost', $url->getBaseUrl());
+ }
+
+ public function testIsRelativeUrl()
+ {
+ $url = new Url('http://www.google.fr/');
+ $this->assertFalse($url->isRelativeUrl());
+
+ $url = new Url('//www.google.fr/');
+ $this->assertFalse($url->isRelativeUrl());
+
+ $url = new Url('/path');
+ $this->assertTrue($url->isRelativeUrl());
+
+ $url = new Url('../../path');
+ $this->assertTrue($url->isRelativeUrl());
+
+ $url = new Url('anything');
+ $this->assertTrue($url->isRelativeUrl());
+
+ $url = new Url('/2014/08/03/4668-noisettes');
+ $this->assertTrue($url->isRelativeUrl());
+
+ $url = new Url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
+AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
+9TXL0Y4OHwAAAABJRU5ErkJggg==');
+ $this->assertFalse($url->isRelativeUrl());
+ }
+
+ public function testGetFullPath()
+ {
+ $url = new Url('http://www.google.fr/');
+ $this->assertEquals('/', $url->getFullPath());
+
+ $url = new Url('//www.google.fr/search');
+ $this->assertEquals('/search', $url->getFullPath());
+
+ $url = new Url('/path');
+ $this->assertEquals('/path', $url->getFullPath());
+
+ $url = new Url('/path#test');
+ $this->assertEquals('/path#test', $url->getFullPath());
+
+ $url = new Url('anything');
+ $this->assertEquals('/anything', $url->getFullPath());
+
+ $url = new Url('foo/bar');
+ $this->assertEquals('/foo/bar', $url->getFullPath());
+
+ $url = new Url('index.php?foo=bar&test=1');
+ $this->assertEquals('/index.php?foo=bar&test=1', $url->getFullPath());
+ }
+
+ public function testAbsoluteUrl()
+ {
+ $url = new Url('http://google.fr/');
+ $this->assertEquals('http://google.fr/', $url->getAbsoluteUrl());
+
+ $url = new Url('http://google.ca');
+ $this->assertEquals('http://google.ca/', $url->getAbsoluteUrl());
+
+ $url = new Url('../bla');
+ $this->assertEquals('', $url->getAbsoluteUrl(''));
+
+ $url = new Url('/2014/08/03/4668-noisettes');
+ $this->assertEquals('http://www.la-grange.net/2014/08/03/4668-noisettes', $url->getAbsoluteUrl('http://www.la-grange.net/'));
+
+ $url = new Url('http://www.google.fr/../bla');
+ $this->assertEquals('http://www.google.fr/../bla', $url->getAbsoluteUrl('http://www.google.fr/'));
+
+ $url = new Url('http://www.google.fr/');
+ $this->assertEquals('http://www.google.fr/', $url->getAbsoluteUrl('http://www.google.fr/'));
+
+ $url = new Url('//www.google.fr/search');
+ $this->assertEquals('http://www.google.fr/search', $url->getAbsoluteUrl('//www.google.fr/'));
+
+ $url = new Url('//www.google.fr/search');
+ $this->assertEquals('http://www.google.fr/search', $url->getAbsoluteUrl());
+
+ $url = new Url('/path');
+ $this->assertEquals('http://www.google.fr/path', $url->getAbsoluteUrl('http://www.google.fr/'));
+
+ $url = new Url('/path#test');
+ $this->assertEquals('http://www.google.fr/path#test', $url->getAbsoluteUrl('http://www.google.fr/'));
+
+ $url = new Url('anything');
+ $this->assertEquals('http://www.google.fr/anything', $url->getAbsoluteUrl('http://www.google.fr/'));
+
+ $url = new Url('index.php?foo=bar&test=1');
+ $this->assertEquals('http://www.google.fr/index.php?foo=bar&test=1', $url->getAbsoluteUrl('http://www.google.fr/'));
+
+ $url = new Url('index.php?foo=bar&test=1');
+ $this->assertEquals('', $url->getAbsoluteUrl());
+
+ $url = new Url('https://127.0.0.1:8000/here/test?v=3');
+ $this->assertEquals('https://127.0.0.1:8000/here/test?v=3', $url->getAbsoluteUrl());
+
+ $url = new Url('http://www.lofibucket.com/articles/oscilloscope_quake.html');
+ $this->assertEquals('http://www.lofibucket.com/articles/oscilloscope_quake.html', $url->getAbsoluteUrl());
+
+ $url = new Url('test?v=3');
+ $this->assertEquals('https://127.0.0.1:8000/here/test?v=3', $url->getAbsoluteUrl('https://127.0.0.1:8000/here/'));
+ }
+
+ public function testIsRelativePath()
+ {
+ $url = new Url('');
+ $this->assertTrue($url->isRelativePath());
+
+ $url = new Url('http://google.fr');
+ $this->assertTrue($url->isRelativePath());
+
+ $url = new Url('filename.json');
+ $this->assertTrue($url->isRelativePath());
+
+ $url = new Url('folder/filename.json');
+ $this->assertTrue($url->isRelativePath());
+
+ $url = new Url('/filename.json');
+ $this->assertFalse($url->isRelativePath());
+
+ $url = new Url('/folder/filename.json');
+ $this->assertFalse($url->isRelativePath());
+ }
+
+ public function testGetBasePath()
+ {
+ $url = new Url('img/quakescope.jpg');
+ $this->assertEquals('/img/', $url->getBasePath());
+
+ $url = new Url('http://foo/img/quakescope.jpg');
+ $this->assertEquals('/img/', $url->getBasePath());
+
+ $url = new Url('http://foo/bar.html');
+ $this->assertEquals('/', $url->getBasePath());
+
+ $url = new Url('http://foo/bar');
+ $this->assertEquals('/', $url->getBasePath());
+
+ $url = new Url('http://foo/bar/');
+ $this->assertEquals('/bar/', $url->getBasePath());
+
+ $url = new Url('http://website/subfolder/img/foo.png');
+ $this->assertEquals('/subfolder/img/', $url->getBasePath());
+ }
+
+ public function testResolve()
+ {
+ // relative link
+ $this->assertEquals(
+ 'http://miniflux.net/assets/img/favicon.png',
+ Url::resolve('assets/img/favicon.png', 'http://miniflux.net')
+ );
+
+ // relative link + HTTPS
+ $this->assertEquals(
+ 'https://miniflux.net/assets/img/favicon.png',
+ Url::resolve('assets/img/favicon.png', 'https://miniflux.net')
+ );
+
+ // absolute link
+ $this->assertEquals(
+ 'http://miniflux.net/assets/img/favicon.png',
+ Url::resolve('/assets/img/favicon.png', 'http://miniflux.net')
+ );
+
+ // absolute link + HTTPS
+ $this->assertEquals(
+ 'https://miniflux.net/assets/img/favicon.png',
+ Url::resolve('/assets/img/favicon.png', 'https://miniflux.net')
+ );
+
+ // Protocol relative link
+ $this->assertEquals(
+ 'http://google.com/assets/img/favicon.png',
+ Url::resolve('//google.com/assets/img/favicon.png', 'http://miniflux.net')
+ );
+
+ // Protocol relative link + HTTPS
+ $this->assertEquals(
+ 'https://google.com/assets/img/favicon.png',
+ Url::resolve('//google.com/assets/img/favicon.png', 'https://miniflux.net')
+ );
+
+ // URL same fqdn
+ $this->assertEquals(
+ 'http://miniflux.net/assets/img/favicon.png',
+ Url::resolve('http://miniflux.net/assets/img/favicon.png', 'https://miniflux.net')
+ );
+
+ // URL different fqdn
+ $this->assertEquals(
+ 'https://www.google.com/assets/img/favicon.png',
+ Url::resolve('https://www.google.com/assets/img/favicon.png', 'https://miniflux.net')
+ );
+
+ // HTTPS URL
+ $this->assertEquals(
+ 'https://miniflux.net/assets/img/favicon.png',
+ Url::resolve('https://miniflux.net/assets/img/favicon.png', 'https://miniflux.net')
+ );
+
+ // empty string on missing website parameter
+ $this->assertEquals(
+ '',
+ Url::resolve('favicon.png', '')
+ );
+
+ // website only on missing icon parameter
+ $this->assertEquals(
+ 'https://miniflux.net/',
+ Url::resolve('', 'https://miniflux.net')
+ );
+
+ // empty string on missing website and icon parameter
+ $this->assertEquals(
+ '',
+ Url::resolve('', '')
+ );
+ }
+}