X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=tests%2FLinkUtilsTest.php;h=7fbd59b0b80489d7b9e3521664e8aeb7d204b19d;hb=5617dcf9d2b378385315161f37da5a85c700c905;hp=c77922ecea0c2a13dcbd8ff59e961925775956cb;hpb=601faf97516a836e4ae57dc4cecb9225c0a04338;p=github%2Fshaarli%2FShaarli.git diff --git a/tests/LinkUtilsTest.php b/tests/LinkUtilsTest.php index c77922ec..7fbd59b0 100644 --- a/tests/LinkUtilsTest.php +++ b/tests/LinkUtilsTest.php @@ -28,28 +28,14 @@ class LinkUtilsTest extends PHPUnit_Framework_TestCase $this->assertFalse(html_extract_title($html)); } - /** - * Test get_charset() with all priorities. - */ - public function testGetCharset() - { - $headers = array('Content-Type' => 'text/html; charset=Headers'); - $html = 'stuff'; - $default = 'default'; - $this->assertEquals('headers', get_charset($headers, $html, $default)); - $this->assertEquals('html', get_charset(array(), $html, $default)); - $this->assertEquals($default, get_charset(array(), '', $default)); - $this->assertEquals('utf-8', get_charset(array(), '')); - } - /** * Test headers_extract_charset() when the charset is found. */ public function testHeadersExtractExistentCharset() { $charset = 'x-MacCroatian'; - $headers = array('Content-Type' => 'text/html; charset='. $charset); - $this->assertEquals(strtolower($charset), headers_extract_charset($headers)); + $headers = 'text/html; charset='. $charset; + $this->assertEquals(strtolower($charset), header_extract_charset($headers)); } /** @@ -57,11 +43,11 @@ class LinkUtilsTest extends PHPUnit_Framework_TestCase */ public function testHeadersExtractNonExistentCharset() { - $headers = array(); - $this->assertFalse(headers_extract_charset($headers)); + $headers = ''; + $this->assertFalse(header_extract_charset($headers)); - $headers = array('Content-Type' => 'text/html'); - $this->assertFalse(headers_extract_charset($headers)); + $headers = 'text/html'; + $this->assertFalse(header_extract_charset($headers)); } /** @@ -85,6 +71,131 @@ class LinkUtilsTest extends PHPUnit_Framework_TestCase $this->assertFalse(html_extract_charset($html)); } + /** + * Test the download callback with valid value + */ + public function testCurlDownloadCallbackOk() + { + $callback = get_curl_download_callback($charset, $title, 'ut_curl_getinfo_ok'); + $data = [ + 'HTTP/1.1 200 OK', + 'Server: GitHub.com', + 'Date: Sat, 28 Oct 2017 12:01:33 GMT', + 'Content-Type: text/html; charset=utf-8', + 'Status: 200 OK', + 'end' => 'th=device-width">Refactoring · GitHubRefactoring · GitHub', + 'end' => 'th=device-width">Refactoring · GitHubRefactoring · GitHubhttp://hello.there/?is=someone&or=something#here otherstuff'; + $processedText = text2clickable($text, $redirector, false); + $this->assertEquals($expectedText, $processedText); + } + /** * Test testSpace2nbsp. */ @@ -192,3 +318,96 @@ class LinkUtilsTest extends PHPUnit_Framework_TestCase return str_replace('$1', $hashtag, $hashtagLink); } } + +// old style mock: PHPUnit doesn't allow function mock + +/** + * Returns code 200 or html content type. + * + * @param resource $ch cURL resource + * @param int $type cURL info type + * + * @return int|string 200 or 'text/html' + */ +function ut_curl_getinfo_ok($ch, $type) +{ + switch ($type) { + case CURLINFO_RESPONSE_CODE: + return 200; + case CURLINFO_CONTENT_TYPE: + return 'text/html; charset=utf-8'; + } +} + +/** + * Returns code 200 or html content type without charset. + * + * @param resource $ch cURL resource + * @param int $type cURL info type + * + * @return int|string 200 or 'text/html' + */ +function ut_curl_getinfo_no_charset($ch, $type) +{ + switch ($type) { + case CURLINFO_RESPONSE_CODE: + return 200; + case CURLINFO_CONTENT_TYPE: + return 'text/html'; + } +} + +/** + * Invalid response code. + * + * @param resource $ch cURL resource + * @param int $type cURL info type + * + * @return int|string 404 or 'text/html' + */ +function ut_curl_getinfo_rc_ko($ch, $type) +{ + switch ($type) { + case CURLINFO_RESPONSE_CODE: + return 404; + case CURLINFO_CONTENT_TYPE: + return 'text/html; charset=utf-8'; + } +} + +/** + * Invalid content type. + * + * @param resource $ch cURL resource + * @param int $type cURL info type + * + * @return int|string 200 or 'text/plain' + */ +function ut_curl_getinfo_ct_ko($ch, $type) +{ + switch ($type) { + case CURLINFO_RESPONSE_CODE: + return 200; + case CURLINFO_CONTENT_TYPE: + return 'text/plain'; + } +} + +/** + * Invalid response code and content type. + * + * @param resource $ch cURL resource + * @param int $type cURL info type + * + * @return int|string 404 or 'text/plain' + */ +function ut_curl_getinfo_rs_ct_ko($ch, $type) +{ + switch ($type) { + case CURLINFO_RESPONSE_CODE: + return 404; + case CURLINFO_CONTENT_TYPE: + return 'text/plain'; + } +} +