aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate')
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/FileMock.php79
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/PluginTest.php130
2 files changed, 209 insertions, 0 deletions
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/FileMock.php b/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/FileMock.php
new file mode 100644
index 000000000..e8cdc1666
--- /dev/null
+++ b/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/FileMock.php
@@ -0,0 +1,79 @@
+<?php
+
+namespace Sabre\DAV\PartialUpdate;
+use Sabre\DAV;
+
+class FileMock implements IFile {
+
+ protected $data = '';
+
+ function put($str) {
+
+ if (is_resource($str)) {
+ $str = stream_get_contents($str);
+ }
+ $this->data = $str;
+
+ }
+
+ function putRange($str,$start) {
+
+ if (is_resource($str)) {
+ $str = stream_get_contents($str);
+ }
+ $this->data = substr($this->data, 0, $start) . $str . substr($this->data, $start + strlen($str));
+
+
+
+ }
+
+ function get() {
+
+ return $this->data;
+
+ }
+
+ function getContentType() {
+
+ return 'text/plain';
+
+ }
+
+ function getSize() {
+
+ return strlen($this->data);
+
+ }
+
+ function getETag() {
+
+ return '"' . $this->data . '"';
+
+ }
+
+ function delete() {
+
+ throw new DAV\Exception\MethodNotAllowed();
+
+ }
+
+ function setName($name) {
+
+ throw new DAV\Exception\MethodNotAllowed();
+
+ }
+
+ function getName() {
+
+ return 'partial';
+
+ }
+
+ function getLastModified() {
+
+ return null;
+
+ }
+
+
+}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/PluginTest.php b/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/PluginTest.php
new file mode 100644
index 000000000..7b90429d4
--- /dev/null
+++ b/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/PluginTest.php
@@ -0,0 +1,130 @@
+<?php
+
+namespace Sabre\DAV\PartialUpdate;
+
+use Sabre\DAV;
+use Sabre\HTTP;
+
+require_once 'Sabre/DAV/PartialUpdate/FileMock.php';
+
+class PluginTest extends \Sabre\DAVServerTest {
+
+ protected $node;
+ protected $plugin;
+
+ public function setUp() {
+
+ $this->node = new FileMock();
+ $this->tree[] = $this->node;
+
+ parent::setUp();
+
+ $this->plugin = new Plugin();
+ $this->server->addPlugin($this->plugin);
+
+
+
+ }
+
+ public function testInit() {
+
+ $this->assertEquals('partialupdate', $this->plugin->getPluginName());
+ $this->assertEquals(array('sabredav-partialupdate'), $this->plugin->getFeatures());
+ $this->assertEquals(array(
+ 'PATCH'
+ ), $this->plugin->getHTTPMethods('partial'));
+ $this->assertEquals(array(
+ ), $this->plugin->getHTTPMethods(''));
+
+ $this->assertNull($this->plugin->unknownMethod('FOO','partial'));
+
+ }
+
+ public function testPatchNoRange() {
+
+ $this->node->put('00000000');
+ $request = new HTTP\Request(array(
+ 'REQUEST_METHOD' => 'PATCH',
+ 'REQUEST_URI' => '/partial',
+ ));
+ $response = $this->request($request);
+
+ $this->assertEquals('HTTP/1.1 400 Bad request', $response->status, 'Full response body:' . $response->body);
+
+ }
+
+ public function testPatchNotSupported() {
+
+ $this->node->put('00000000');
+ $request = new HTTP\Request(array(
+ 'REQUEST_METHOD' => 'PATCH',
+ 'REQUEST_URI' => '/',
+ 'X_UPDATE_RANGE' => '3-4',
+
+ ));
+ $request->setBody(
+ '111'
+ );
+ $response = $this->request($request);
+
+ $this->assertEquals('HTTP/1.1 405 Method Not Allowed', $response->status, 'Full response body:' . $response->body);
+
+ }
+
+ public function testPatchNoContentType() {
+
+ $this->node->put('00000000');
+ $request = new HTTP\Request(array(
+ 'REQUEST_METHOD' => 'PATCH',
+ 'REQUEST_URI' => '/partial',
+ 'HTTP_X_UPDATE_RANGE' => 'bytes=3-4',
+
+ ));
+ $request->setBody(
+ '111'
+ );
+ $response = $this->request($request);
+
+ $this->assertEquals('HTTP/1.1 415 Unsupported Media Type', $response->status, 'Full response body:' . $response->body);
+
+ }
+
+ public function testPatchBadRange() {
+
+ $this->node->put('00000000');
+ $request = new HTTP\Request(array(
+ 'REQUEST_METHOD' => 'PATCH',
+ 'REQUEST_URI' => '/partial',
+ 'HTTP_X_UPDATE_RANGE' => 'bytes=3-4',
+ 'HTTP_CONTENT_TYPE' => 'application/x-sabredav-partialupdate',
+ ));
+ $request->setBody(
+ '111'
+ );
+ $response = $this->request($request);
+
+ $this->assertEquals('HTTP/1.1 416 Requested Range Not Satisfiable', $response->status, 'Full response body:' . $response->body);
+
+ }
+
+ public function testPatchSuccess() {
+
+ $this->node->put('00000000');
+ $request = new HTTP\Request(array(
+ 'REQUEST_METHOD' => 'PATCH',
+ 'REQUEST_URI' => '/partial',
+ 'HTTP_X_UPDATE_RANGE' => 'bytes=3-5',
+ 'HTTP_CONTENT_TYPE' => 'application/x-sabredav-partialupdate',
+ 'HTTP_CONTENT_LENGTH' => 3,
+ ));
+ $request->setBody(
+ '111'
+ );
+ $response = $this->request($request);
+
+ $this->assertEquals('HTTP/1.1 204 No Content', $response->status, 'Full response body:' . $response->body);
+ $this->assertEquals('00111000', $this->node->get());
+
+ }
+
+}