mirror of
https://github.com/the-djmaze/snappymail.git
synced 2025-09-08 22:24:14 +08:00
Simple PHPUnit tests
This commit is contained in:
parent
72bf212f67
commit
2ed88f5d27
9 changed files with 85 additions and 7 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -12,10 +12,10 @@
|
|||
/rainloop/v/0.0.0/static/css/*.css
|
||||
/rainloop/v/0.0.0/static/js/*.js
|
||||
/rainloop/v/0.0.0/static/js/**/*.js
|
||||
/tests/_config.js
|
||||
/node_modules
|
||||
/build/local
|
||||
/build/dist
|
||||
/build/tmp
|
||||
/data
|
||||
.DS_Store
|
||||
/tests/fix.php
|
5
.travis.yml
Normal file
5
.travis.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
language: php
|
||||
php:
|
||||
- '5.3'
|
||||
- '5.6'
|
||||
- '7.0'
|
|
@ -52,7 +52,9 @@ class HtmlUtils
|
|||
$sText = \MailSo\Base\HtmlUtils::ClearBodyAndHtmlTag($sText, $sHtmlAttrs, $sBodyAttrs);
|
||||
|
||||
@$oDom->loadHTML('<'.'?xml version="1.0" encoding="utf-8"?'.'>'.
|
||||
'<html '.$sHtmlAttrs.'><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body '.$sBodyAttrs.'><div data-wrp="rainloop">'.$sText.'</div></body></html>');
|
||||
'<html '.$sHtmlAttrs.'><head>'.
|
||||
'<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head>'.
|
||||
'<body '.$sBodyAttrs.'><div data-wrp="rainloop">'.$sText.'</div></body></html>');
|
||||
|
||||
@$oDom->normalizeDocument();
|
||||
|
||||
|
@ -141,6 +143,18 @@ class HtmlUtils
|
|||
else
|
||||
{
|
||||
$sResult = \trim($oDom->saveHTML($oDiv));
|
||||
|
||||
if (0 === strpos($sResult, '<div>'))
|
||||
{
|
||||
$sResult = substr($sResult, 5);
|
||||
|
||||
if ('</div>' === substr($sResult, -6))
|
||||
{
|
||||
$sResult = substr($sResult, 0, -6);
|
||||
}
|
||||
|
||||
$sResult = \trim($sResult);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -175,7 +189,7 @@ class HtmlUtils
|
|||
$sBodyAttrs = $aMatch[1];
|
||||
}
|
||||
|
||||
$sHtml = \preg_replace('/<body([^>]*)>/im', '', $sHtml);
|
||||
$sHtml = \preg_replace('/^.*<body([^>]*)>/sim', '', $sHtml);
|
||||
$sHtml = \preg_replace('/<\/body>/im', '', $sHtml);
|
||||
$sHtml = \preg_replace('/<html([^>]*)>/im', '', $sHtml);
|
||||
$sHtml = \preg_replace('/<\/html>/im', '', $sHtml);
|
||||
|
@ -747,18 +761,24 @@ class HtmlUtils
|
|||
* @param string $sHtml
|
||||
* @param bool $bDoNotReplaceExternalUrl = false
|
||||
* @param bool $bFindLinksInHtml = false
|
||||
* @param bool $bWrapByFakeHtmlAndBodyDiv = true
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function ClearHtmlSimple($sHtml, $bDoNotReplaceExternalUrl = false, $bFindLinksInHtml = false)
|
||||
public static function ClearHtmlSimple($sHtml, $bDoNotReplaceExternalUrl = false, $bFindLinksInHtml = false, $bWrapByFakeHtmlAndBodyDiv = true)
|
||||
{
|
||||
$bHasExternals = false;
|
||||
$aFoundCIDs = array();
|
||||
$aContentLocationUrls = array();
|
||||
$aFoundedContentLocationUrls = array();
|
||||
$fAdditionalExternalFilter = null;
|
||||
$fAdditionalDomReader = null;
|
||||
$bTryToDetectHiddenImages = false;
|
||||
|
||||
return \MailSo\Base\HtmlUtils::ClearHtml($sHtml, $bHasExternals, $aFoundCIDs,
|
||||
$aContentLocationUrls, $aFoundedContentLocationUrls, $bDoNotReplaceExternalUrl, $bFindLinksInHtml);
|
||||
$aContentLocationUrls, $aFoundedContentLocationUrls, $bDoNotReplaceExternalUrl, $bFindLinksInHtml,
|
||||
$fAdditionalExternalFilter, $fAdditionalDomReader, $bTryToDetectHiddenImages,
|
||||
$bWrapByFakeHtmlAndBodyDiv);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -771,6 +791,8 @@ class HtmlUtils
|
|||
* @param bool $bFindLinksInHtml = false
|
||||
* @param callback|null $fAdditionalExternalFilter = null
|
||||
* @param callback|null $fAdditionalDomReader = null
|
||||
* @param bool $bTryToDetectHiddenImages = false
|
||||
* @param bool $bWrapByFakeHtmlAndBodyDiv = true
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
|
@ -778,7 +800,7 @@ class HtmlUtils
|
|||
$aContentLocationUrls = array(), &$aFoundedContentLocationUrls = array(),
|
||||
$bDoNotReplaceExternalUrl = false, $bFindLinksInHtml = false,
|
||||
$fAdditionalExternalFilter = null, $fAdditionalDomReader = false,
|
||||
$bTryToDetectHiddenImages = false)
|
||||
$bTryToDetectHiddenImages = false, $bWrapByFakeHtmlAndBodyDiv = true)
|
||||
{
|
||||
$sResult = '';
|
||||
|
||||
|
@ -1096,7 +1118,7 @@ class HtmlUtils
|
|||
$oElement->removeAttribute('data-x-skip-style');
|
||||
}
|
||||
|
||||
$sResult = \MailSo\Base\HtmlUtils::GetTextFromDom($oDom);
|
||||
$sResult = \MailSo\Base\HtmlUtils::GetTextFromDom($oDom, $bWrapByFakeHtmlAndBodyDiv);
|
||||
}
|
||||
|
||||
unset($oDom);
|
||||
|
|
21
tests/MailSo/Base/HtmlUtilsTest.php
Normal file
21
tests/MailSo/Base/HtmlUtilsTest.php
Normal file
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
|
||||
class HtmlUtilsTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
public function testCommon()
|
||||
{
|
||||
$this->assertTrue(true);
|
||||
$this->assertTrue(class_exists('\\RainLoop\\Api'));
|
||||
$this->assertTrue(class_exists('\\MailSo\\Base\\HtmlUtils'));
|
||||
}
|
||||
|
||||
public function testClearHtml()
|
||||
{
|
||||
$i = 0;
|
||||
while (++$i < 3)
|
||||
{
|
||||
$this->assertEquals(file_get_contents(TEST_DATA_FOLDER."/html/{$i}-ok.html"),
|
||||
\MailSo\Base\HtmlUtils::ClearHtmlSimple(file_get_contents(TEST_DATA_FOLDER."/html/{$i}.html"), false, false, false));
|
||||
}
|
||||
}
|
||||
}
|
1
tests/_data/html/1-ok.html
Normal file
1
tests/_data/html/1-ok.html
Normal file
|
@ -0,0 +1 @@
|
|||
123
|
11
tests/_data/html/1.html
Normal file
11
tests/_data/html/1.html
Normal file
|
@ -0,0 +1,11 @@
|
|||
<html>
|
||||
<head>
|
||||
<style type="text/css">
|
||||
body {color:red}
|
||||
p {margin:0; padding:0}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
123
|
||||
</body>
|
||||
</html>
|
1
tests/_data/html/2-ok.html
Normal file
1
tests/_data/html/2-ok.html
Normal file
|
@ -0,0 +1 @@
|
|||
123
|
12
tests/_data/html/2.html
Normal file
12
tests/_data/html/2.html
Normal file
|
@ -0,0 +1,12 @@
|
|||
<html>
|
||||
<head>
|
||||
<style type="text/css">
|
||||
body {color:red}
|
||||
p {margin:0; padding:0}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
123
|
||||
<script>alert(1)</script>
|
||||
</body>
|
||||
</html>
|
|
@ -1 +1,6 @@
|
|||
<?php
|
||||
|
||||
define('TEST_DATA_FOLDER', __DIR__.'/_data');
|
||||
|
||||
$_ENV['RAINLOOP_INCLUDE_AS_API'] = true;
|
||||
include __DIR__.'/../index.php';
|
||||
|
|
Loading…
Add table
Reference in a new issue