add unit tests for url_is_html and fix a bug with UPPERCASE <HTML> in it
This commit is contained in:
parent
444537736b
commit
24eb4c780f
|
@ -6961,8 +6961,8 @@
|
|||
*/
|
||||
function url_is_html($url) {
|
||||
$content = substr(fetch_file_contents($url, false), 0, 1000);
|
||||
if (strpos($content, '<html>') === false
|
||||
&& strpos($content, '<html ') === false
|
||||
if (stripos($content, '<html>') === false
|
||||
&& stripos($content, '<html ') === false
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -7,6 +7,19 @@ require_once dirname(__FILE__) . '/../functions.php';
|
|||
*/
|
||||
class FunctionsTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
protected $tmpFile = null;
|
||||
public function __construct()
|
||||
{
|
||||
$this->tmpFile = sys_get_temp_dir() . '/tt-rss-unittest.dat';
|
||||
}
|
||||
|
||||
public function tearDown()
|
||||
{
|
||||
if (file_exists($this->tmpFile)) {
|
||||
unlink($this->tmpFile);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test fix_url with feed:// urls
|
||||
*/
|
||||
|
@ -56,6 +69,114 @@ class FunctionsTest extends PHPUnit_Framework_TestCase
|
|||
fix_url('tt-rss.org/foo/bar/baz/')
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Test url_is_html() on html with a doctype
|
||||
*/
|
||||
public function testUrlIsHtmlNormalHtmlWithDoctype()
|
||||
{
|
||||
file_put_contents(
|
||||
$this->tmpFile, <<<HTM
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
||||
<head>
|
||||
HTM
|
||||
);
|
||||
$this->assertTrue(url_is_html($this->tmpFile));
|
||||
|
||||
file_put_contents(
|
||||
$this->tmpFile, <<<HTM
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html>
|
||||
<head>
|
||||
HTM
|
||||
);
|
||||
$this->assertTrue(url_is_html($this->tmpFile));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test url_is_html() on html with a doctype and xml header
|
||||
*/
|
||||
public function testUrlIsHtmlNormalHtmlWithDoctypeAndXml()
|
||||
{
|
||||
file_put_contents(
|
||||
$this->tmpFile, <<<HTM
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
||||
<head>
|
||||
HTM
|
||||
);
|
||||
$this->assertTrue(url_is_html($this->tmpFile));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test url_is_html() on html without a doctype
|
||||
*/
|
||||
public function testUrlIsHtmlNormalHtmlWithoutDoctype()
|
||||
{
|
||||
file_put_contents(
|
||||
$this->tmpFile, <<<HTM
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
||||
<head>
|
||||
HTM
|
||||
);
|
||||
$this->assertTrue(url_is_html($this->tmpFile));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test url_is_html() on UPPERCASE HTML
|
||||
*/
|
||||
public function testUrlIsHtmlNormalHtmlUppercase()
|
||||
{
|
||||
file_put_contents(
|
||||
$this->tmpFile, <<<HTM
|
||||
<HTML XMLNS="http://www.w3.org/1999/xhtml" XML:LANG="en">
|
||||
<HEAD>
|
||||
HTM
|
||||
);
|
||||
$this->assertTrue(url_is_html($this->tmpFile));
|
||||
|
||||
file_put_contents(
|
||||
$this->tmpFile, <<<HTM
|
||||
<HTML>
|
||||
<HEAD>
|
||||
HTM
|
||||
);
|
||||
$this->assertTrue(url_is_html($this->tmpFile));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test url_is_html() on atom
|
||||
*/
|
||||
public function testUrlIsHtmlAtom()
|
||||
{
|
||||
file_put_contents(
|
||||
$this->tmpFile, <<<HTM
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom">
|
||||
<title>Christians Tagebuch</title>
|
||||
HTM
|
||||
);
|
||||
$this->assertFalse(url_is_html($this->tmpFile));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test url_is_html() on RSS
|
||||
*/
|
||||
public function testUrlIsHtmlRss()
|
||||
{
|
||||
file_put_contents(
|
||||
$this->tmpFile, <<<HTM
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
|
||||
<channel>
|
||||
<title><![CDATA[Planet-PEAR]]></title>
|
||||
HTM
|
||||
);
|
||||
$this->assertFalse(url_is_html($this->tmpFile));
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
Loading…
Reference in New Issue