. * */ class Test_TemplateFunctions extends PHPUnit_Framework_TestCase { public function setUp() { $loader = new \OC\Autoloader(); $loader->load('OC_Template'); } public function testPJavaScript() { $this->expectOutputString('<img onload="alert(1)" />'); p(''); } public function testPJavaScriptWithScriptTags() { $this->expectOutputString('<script>alert('Hacked!');</script>'); p(""); } public function testPNormalString() { $string = 'This is a good string without HTML.'; $this->expectOutputString($string); p($string); } public function testPrintUnescaped() { $htmlString = ""; $this->expectOutputString($htmlString); print_unescaped($htmlString); } public function testPrintUnescapedNormalString() { $string = 'This is a good string!'; $this->expectOutputString($string); print_unescaped($string); } // --------------------------------------------------------------------------- // Test relative_modified_date with dates only // --------------------------------------------------------------------------- public function testRelativeDateToday(){ $currentTime = 1380703592; $elementTime = $currentTime; $result = (string)relative_modified_date($elementTime, $currentTime, true); $this->assertEquals('today', $result); // 2 hours ago is still today $elementTime = $currentTime - 2 * 3600; $result = (string)relative_modified_date($elementTime, $currentTime, true); $this->assertEquals('today', $result); } public function testRelativeDateYesterday(){ $currentTime = 1380703592; $elementTime = $currentTime - 24 * 3600; $result = (string)relative_modified_date($elementTime, $currentTime, true); $this->assertEquals('yesterday', $result); // yesterday - 2 hours is still yesterday $elementTime = $currentTime - 26 * 3600; $result = (string)relative_modified_date($elementTime, $currentTime, true); $this->assertEquals('yesterday', $result); } public function testRelativeDate2DaysAgo(){ $currentTime = 1380703592; $elementTime = $currentTime - 48 * 3600; $result = (string)relative_modified_date($elementTime, $currentTime, true); $this->assertEquals('2 days ago', $result); // 2 days ago minus 4 hours is still 2 days ago $elementTime = $currentTime - 52 * 3600; $result = (string)relative_modified_date($elementTime, $currentTime, true); $this->assertEquals('2 days ago', $result); } public function testRelativeDateLastMonth(){ $currentTime = 1380703592; $elementTime = $currentTime - 86400 * 31; $result = (string)relative_modified_date($elementTime, $currentTime, true); $this->assertEquals('last month', $result); $elementTime = $currentTime - 86400 * 35; $result = (string)relative_modified_date($elementTime, $currentTime, true); $this->assertEquals('last month', $result); } public function testRelativeDateMonthsAgo(){ $currentTime = 1380703592; $elementTime = $currentTime - 86400 * 60; $result = (string)relative_modified_date($elementTime, $currentTime, true); $this->assertEquals('2 months ago', $result); $elementTime = $currentTime - 86400 * 65; $result = (string)relative_modified_date($elementTime, $currentTime, true); $this->assertEquals('2 months ago', $result); } public function testRelativeDateLastYear(){ $currentTime = 1380703592; $elementTime = $currentTime - 86400 * 365; $result = (string)relative_modified_date($elementTime, $currentTime, true); $this->assertEquals('last year', $result); $elementTime = $currentTime - 86400 * 450; $result = (string)relative_modified_date($elementTime, $currentTime, true); $this->assertEquals('last year', $result); } public function testRelativeDateYearsAgo(){ $currentTime = 1380703592; $elementTime = $currentTime - 86400 * 365.25 * 2; $result = (string)relative_modified_date($elementTime, $currentTime, true); $this->assertEquals('years ago', $result); $elementTime = $currentTime - 86400 * 365.25 * 3; $result = (string)relative_modified_date($elementTime, $currentTime, true); $this->assertEquals('years ago', $result); } // --------------------------------------------------------------------------- // Test relative_modified_date with timestamps only (date + time value) // --------------------------------------------------------------------------- public function testRelativeTimeSecondsAgo(){ $currentTime = 1380703592; $elementTime = $currentTime - 5; $result = (string)relative_modified_date($elementTime, $currentTime, false); $this->assertEquals('seconds ago', $result); } public function testRelativeTimeMinutesAgo(){ $currentTime = 1380703592; $elementTime = $currentTime - 190; $result = (string)relative_modified_date($elementTime, $currentTime, false); $this->assertEquals('3 minutes ago', $result); } public function testRelativeTimeHoursAgo(){ $currentTime = 1380703592; $elementTime = $currentTime - 7500; $result = (string)relative_modified_date($elementTime, $currentTime, false); $this->assertEquals('2 hours ago', $result); } public function testRelativeTime2DaysAgo(){ $currentTime = 1380703592; $elementTime = $currentTime - 48 * 3600; $result = (string)relative_modified_date($elementTime, $currentTime, false); $this->assertEquals('2 days ago', $result); // 2 days ago minus 4 hours is still 2 days ago $elementTime = $currentTime - 52 * 3600; $result = (string)relative_modified_date($elementTime, $currentTime, false); $this->assertEquals('2 days ago', $result); } public function testRelativeTimeLastMonth(){ $currentTime = 1380703592; $elementTime = $currentTime - 86400 * 31; $result = (string)relative_modified_date($elementTime, $currentTime, false); $this->assertEquals('last month', $result); $elementTime = $currentTime - 86400 * 35; $result = (string)relative_modified_date($elementTime, $currentTime, false); $this->assertEquals('last month', $result); } public function testRelativeTimeMonthsAgo(){ $currentTime = 1380703592; $elementTime = $currentTime - 86400 * 60; $result = (string)relative_modified_date($elementTime, $currentTime, false); $this->assertEquals('2 months ago', $result); $elementTime = $currentTime - 86400 * 65; $result = (string)relative_modified_date($elementTime, $currentTime, false); $this->assertEquals('2 months ago', $result); } public function testRelativeTimeLastYear(){ $currentTime = 1380703592; $elementTime = $currentTime - 86400 * 365; $result = (string)relative_modified_date($elementTime, $currentTime, false); $this->assertEquals('last year', $result); $elementTime = $currentTime - 86400 * 450; $result = (string)relative_modified_date($elementTime, $currentTime, false); $this->assertEquals('last year', $result); } public function testRelativeTimeYearsAgo(){ $currentTime = 1380703592; $elementTime = $currentTime - 86400 * 365.25 * 2; $result = (string)relative_modified_date($elementTime, $currentTime, false); $this->assertEquals('years ago', $result); $elementTime = $currentTime - 86400 * 365.25 * 3; $result = (string)relative_modified_date($elementTime, $currentTime, false); $this->assertEquals('years ago', $result); } }