diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/enable_all.php | 1 | ||||
-rw-r--r-- | tests/lib/appframework/http/RequestTest.php | 134 | ||||
-rw-r--r-- | tests/lib/appframework/http/requeststream.php | 107 | ||||
-rw-r--r-- | tests/lib/appframework/middleware/MiddlewareDispatcherTest.php | 8 | ||||
-rw-r--r-- | tests/lib/appframework/middleware/MiddlewareTest.php | 2 | ||||
-rw-r--r-- | tests/lib/connector/sabre/aborteduploaddetectionplugin.php | 22 | ||||
-rw-r--r-- | tests/lib/template.php | 190 |
7 files changed, 449 insertions, 15 deletions
diff --git a/tests/enable_all.php b/tests/enable_all.php index 111ed0e1357..43ee16a72f8 100644 --- a/tests/enable_all.php +++ b/tests/enable_all.php @@ -8,6 +8,7 @@ require_once __DIR__.'/../lib/base.php'; +OC_App::enable('files_sharing'); OC_App::enable('files_encryption'); OC_App::enable('calendar'); OC_App::enable('contacts'); diff --git a/tests/lib/appframework/http/RequestTest.php b/tests/lib/appframework/http/RequestTest.php index 0371c870cf2..00473a8c44f 100644 --- a/tests/lib/appframework/http/RequestTest.php +++ b/tests/lib/appframework/http/RequestTest.php @@ -8,12 +8,26 @@ namespace OC\AppFramework\Http; +global $data; class RequestTest extends \PHPUnit_Framework_TestCase { + public function setUp() { + require_once __DIR__ . '/requeststream.php'; + if (in_array('fakeinput', stream_get_wrappers())) { + stream_wrapper_unregister('fakeinput'); + } + stream_wrapper_register('fakeinput', 'RequestStream'); + } + + public function tearDown() { + stream_wrapper_unregister('fakeinput'); + } + public function testRequestAccessors() { $vars = array( 'get' => array('name' => 'John Q. Public', 'nickname' => 'Joey'), + 'method' => 'GET', ); $request = new Request($vars); @@ -31,6 +45,7 @@ class RequestTest extends \PHPUnit_Framework_TestCase { $this->assertEquals('Joey', $request->get['nickname']); // Always returns null if variable not set. $this->assertEquals(null, $request->{'flickname'}); + } // urlParams has precedence over POST which has precedence over GET @@ -73,4 +88,123 @@ class RequestTest extends \PHPUnit_Framework_TestCase { $request->{'nickname'} = 'Janey'; } + /** + * @expectedException LogicException + */ + public function testGetTheMethodRight() { + $vars = array( + 'get' => array('name' => 'John Q. Public', 'nickname' => 'Joey'), + 'method' => 'GET', + ); + + $request = new Request($vars); + $result = $request->post; + } + + public function testTheMethodIsRight() { + $vars = array( + 'get' => array('name' => 'John Q. Public', 'nickname' => 'Joey'), + 'method' => 'GET', + ); + + $request = new Request($vars); + $this->assertEquals('GET', $request->method); + $result = $request->get; + $this->assertEquals('John Q. Public', $result['name']); + $this->assertEquals('Joey', $result['nickname']); + } + + public function testJsonPost() { + global $data; + $data = '{"name": "John Q. Public", "nickname": "Joey"}'; + $vars = array( + 'method' => 'POST', + 'server' => array('CONTENT_TYPE' => 'application/json; utf-8'), + ); + + $request = new Request($vars); + $this->assertEquals('POST', $request->method); + $result = $request->post; + $this->assertEquals('John Q. Public', $result['name']); + $this->assertEquals('Joey', $result['nickname']); + $this->assertEquals('Joey', $request->params['nickname']); + $this->assertEquals('Joey', $request['nickname']); + } + + public function testPatch() { + global $data; + $data = http_build_query(array('name' => 'John Q. Public', 'nickname' => 'Joey'), '', '&'); + + $vars = array( + 'method' => 'PATCH', + 'server' => array('CONTENT_TYPE' => 'application/x-www-form-urlencoded'), + ); + + $request = new Request($vars); + + $this->assertEquals('PATCH', $request->method); + $result = $request->patch; + + $this->assertEquals('John Q. Public', $result['name']); + $this->assertEquals('Joey', $result['nickname']); + } + + public function testJsonPatchAndPut() { + global $data; + + // PUT content + $data = '{"name": "John Q. Public", "nickname": "Joey"}'; + $vars = array( + 'method' => 'PUT', + 'server' => array('CONTENT_TYPE' => 'application/json; utf-8'), + ); + + $request = new Request($vars); + + $this->assertEquals('PUT', $request->method); + $result = $request->put; + + $this->assertEquals('John Q. Public', $result['name']); + $this->assertEquals('Joey', $result['nickname']); + + // PATCH content + $data = '{"name": "John Q. Public", "nickname": null}'; + $vars = array( + 'method' => 'PATCH', + 'server' => array('CONTENT_TYPE' => 'application/json; utf-8'), + ); + + $request = new Request($vars); + + $this->assertEquals('PATCH', $request->method); + $result = $request->patch; + + $this->assertEquals('John Q. Public', $result['name']); + $this->assertEquals(null, $result['nickname']); + } + + public function testPutStream() { + global $data; + $data = file_get_contents(__DIR__ . '/../../../data/testimage.png'); + + $vars = array( + 'put' => $data, + 'method' => 'PUT', + 'server' => array('CONTENT_TYPE' => 'image/png'), + ); + + $request = new Request($vars); + $this->assertEquals('PUT', $request->method); + $resource = $request->put; + $contents = stream_get_contents($resource); + $this->assertEquals($data, $contents); + + try { + $resource = $request->put; + } catch(\LogicException $e) { + return; + } + $this->fail('Expected LogicException.'); + + } } diff --git a/tests/lib/appframework/http/requeststream.php b/tests/lib/appframework/http/requeststream.php new file mode 100644 index 00000000000..e1bf5c2c6bb --- /dev/null +++ b/tests/lib/appframework/http/requeststream.php @@ -0,0 +1,107 @@ +<?php +/** + * Copy of http://dk1.php.net/manual/en/stream.streamwrapper.example-1.php + * Used to simulate php://input for Request tests + */ +class RequestStream { + protected $position; + protected $varname; + + function stream_open($path, $mode, $options, &$opened_path) { + $url = parse_url($path); + $this->varname = $url["host"]; + $this->position = 0; + + return true; + } + + function stream_read($count) { + $ret = substr($GLOBALS[$this->varname], $this->position, $count); + $this->position += strlen($ret); + return $ret; + } + + function stream_write($data) { + $left = substr($GLOBALS[$this->varname], 0, $this->position); + $right = substr($GLOBALS[$this->varname], $this->position + strlen($data)); + $GLOBALS[$this->varname] = $left . $data . $right; + $this->position += strlen($data); + return strlen($data); + } + + function stream_tell() { + return $this->position; + } + + function stream_eof() { + return $this->position >= strlen($GLOBALS[$this->varname]); + } + + function stream_seek($offset, $whence) { + switch ($whence) { + case SEEK_SET: + if ($offset < strlen($GLOBALS[$this->varname]) && $offset >= 0) { + $this->position = $offset; + return true; + } else { + return false; + } + break; + + case SEEK_CUR: + if ($offset >= 0) { + $this->position += $offset; + return true; + } else { + return false; + } + break; + + case SEEK_END: + if (strlen($GLOBALS[$this->varname]) + $offset >= 0) { + $this->position = strlen($GLOBALS[$this->varname]) + $offset; + return true; + } else { + return false; + } + break; + + default: + return false; + } + } + + public function stream_stat() { + $size = strlen($GLOBALS[$this->varname]); + $time = time(); + $data = array( + 'dev' => 0, + 'ino' => 0, + 'mode' => 0777, + 'nlink' => 1, + 'uid' => 0, + 'gid' => 0, + 'rdev' => '', + 'size' => $size, + 'atime' => $time, + 'mtime' => $time, + 'ctime' => $time, + 'blksize' => -1, + 'blocks' => -1, + ); + return array_values($data) + $data; + //return false; + } + + function stream_metadata($path, $option, $var) { + if($option == STREAM_META_TOUCH) { + $url = parse_url($path); + $varname = $url["host"]; + if(!isset($GLOBALS[$varname])) { + $GLOBALS[$varname] = ''; + } + return true; + } + return false; + } +} diff --git a/tests/lib/appframework/middleware/MiddlewareDispatcherTest.php b/tests/lib/appframework/middleware/MiddlewareDispatcherTest.php index 43727846dcf..dd85a9ad52f 100644 --- a/tests/lib/appframework/middleware/MiddlewareDispatcherTest.php +++ b/tests/lib/appframework/middleware/MiddlewareDispatcherTest.php @@ -25,8 +25,8 @@ namespace OC\AppFramework; use OC\AppFramework\Http\Request; -use OC\AppFramework\Middleware\Middleware; use OC\AppFramework\Middleware\MiddlewareDispatcher; +use OCP\AppFramework\Middleware; use OCP\AppFramework\Http\Response; @@ -142,12 +142,12 @@ class MiddlewareDispatcherTest extends \PHPUnit_Framework_TestCase { public function testAfterExceptionShouldReturnResponseOfMiddleware(){ $response = new Response(); - $m1 = $this->getMock('\OC\AppFramework\Middleware\Middleware', + $m1 = $this->getMock('\OCP\AppFramework\Middleware', array('afterException', 'beforeController')); $m1->expects($this->never()) ->method('afterException'); - $m2 = $this->getMock('OC\AppFramework\Middleware\Middleware', + $m2 = $this->getMock('OCP\AppFramework\Middleware', array('afterException', 'beforeController')); $m2->expects($this->once()) ->method('afterException') @@ -267,7 +267,7 @@ class MiddlewareDispatcherTest extends \PHPUnit_Framework_TestCase { public function testExceptionShouldRunAfterExceptionOfOnlyPreviouslyExecutedMiddlewares(){ $m1 = $this->getMiddleware(); $m2 = $this->getMiddleware(true); - $m3 = $this->getMock('\OC\AppFramework\Middleware\Middleware'); + $m3 = $this->getMock('\OCP\AppFramework\Middleware'); $m3->expects($this->never()) ->method('afterException'); $m3->expects($this->never()) diff --git a/tests/lib/appframework/middleware/MiddlewareTest.php b/tests/lib/appframework/middleware/MiddlewareTest.php index 5e2930ac6a3..d0be7f7ca74 100644 --- a/tests/lib/appframework/middleware/MiddlewareTest.php +++ b/tests/lib/appframework/middleware/MiddlewareTest.php @@ -25,7 +25,7 @@ namespace OC\AppFramework; use OC\AppFramework\Http\Request; -use OC\AppFramework\Middleware\Middleware; +use OCP\AppFramework\Middleware; class ChildMiddleware extends Middleware {}; diff --git a/tests/lib/connector/sabre/aborteduploaddetectionplugin.php b/tests/lib/connector/sabre/aborteduploaddetectionplugin.php index bef0e4c4d7d..201f1263867 100644 --- a/tests/lib/connector/sabre/aborteduploaddetectionplugin.php +++ b/tests/lib/connector/sabre/aborteduploaddetectionplugin.php @@ -37,10 +37,11 @@ class Test_OC_Connector_Sabre_AbortedUploadDetectionPlugin extends PHPUnit_Frame /** * @dataProvider verifyContentLengthProvider */ - public function testVerifyContentLength($fileSize, $headers) + public function testVerifyContentLength($method, $fileSize, $headers) { $this->plugin->fileView = $this->buildFileViewMock($fileSize); + $headers['REQUEST_METHOD'] = $method; $this->server->httpRequest = new Sabre_HTTP_Request($headers); $this->plugin->verifyContentLength('foo.txt'); $this->assertTrue(true); @@ -50,30 +51,33 @@ class Test_OC_Connector_Sabre_AbortedUploadDetectionPlugin extends PHPUnit_Frame * @dataProvider verifyContentLengthFailedProvider * @expectedException Sabre_DAV_Exception_BadRequest */ - public function testVerifyContentLengthFailed($fileSize, $headers) + public function testVerifyContentLengthFailed($method, $fileSize, $headers) { $this->plugin->fileView = $this->buildFileViewMock($fileSize); // we expect unlink to be called $this->plugin->fileView->expects($this->once())->method('unlink'); - + $headers['REQUEST_METHOD'] = $method; $this->server->httpRequest = new Sabre_HTTP_Request($headers); $this->plugin->verifyContentLength('foo.txt'); } public function verifyContentLengthProvider() { return array( - array(1024, array()), - array(1024, array('HTTP_X_EXPECTED_ENTITY_LENGTH' => '1024')), - array(512, array('HTTP_CONTENT_LENGTH' => '512')), + array('PUT', 1024, array()), + array('PUT', 1024, array('HTTP_X_EXPECTED_ENTITY_LENGTH' => '1024')), + array('PUT', 512, array('HTTP_CONTENT_LENGTH' => '512')), + array('LOCK', 1024, array()), + array('LOCK', 1024, array('HTTP_X_EXPECTED_ENTITY_LENGTH' => '1024')), + array('LOCK', 512, array('HTTP_CONTENT_LENGTH' => '512')), ); } public function verifyContentLengthFailedProvider() { return array( - array(1025, array('HTTP_X_EXPECTED_ENTITY_LENGTH' => '1024')), - array(525, array('HTTP_CONTENT_LENGTH' => '512')), + array('PUT', 1025, array('HTTP_X_EXPECTED_ENTITY_LENGTH' => '1024')), + array('PUT', 525, array('HTTP_CONTENT_LENGTH' => '512')), ); } @@ -87,7 +91,7 @@ class Test_OC_Connector_Sabre_AbortedUploadDetectionPlugin extends PHPUnit_Frame } private function buildFileViewMock($fileSize) { - // mock filesysten + // mock filesystem $view = $this->getMock('\OC\Files\View', array('filesize', 'unlink'), array(), '', FALSE); $view->expects($this->any())->method('filesize')->withAnyParameters()->will($this->returnValue($fileSize)); diff --git a/tests/lib/template.php b/tests/lib/template.php index fd12119da58..b4f1a4c4053 100644 --- a/tests/lib/template.php +++ b/tests/lib/template.php @@ -46,7 +46,6 @@ class Test_TemplateFunctions extends PHPUnit_Framework_TestCase { $this->assertEquals("This is a good string!", $result); } - public function testPrintUnescaped() { $htmlString = "<script>alert('xss');</script>"; @@ -66,5 +65,194 @@ class Test_TemplateFunctions extends PHPUnit_Framework_TestCase { $this->assertEquals("This is a good string!", $result); } + // --------------------------------------------------------------------------- + // 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); + } } |