3 require_once 'Sabre/HTTP/ResponseMock.php';
4 require_once 'Sabre/TestUtil.php';
6 class Sabre_DAV_Locks_MSWordTest extends PHPUnit_Framework_TestCase {
8 function testLockEtc() {
10 mkdir(SABRE_TEMPDIR . '/mstest');
11 $tree = new Sabre_DAV_FS_Directory(SABRE_TEMPDIR . '/mstest');
13 $server = new Sabre_DAV_Server($tree);
14 $server->debugExceptions = true;
15 $locksBackend = new Sabre_DAV_Locks_Backend_File(SABRE_TEMPDIR . '/locksdb');
16 $locksPlugin = new Sabre_DAV_Locks_Plugin($locksBackend);
17 $server->addPlugin($locksPlugin);
19 $response1 = new Sabre_HTTP_ResponseMock();
21 $server->httpRequest = $this->getLockRequest();
22 $server->httpResponse = $response1;
25 $this->assertEquals('HTTP/1.1 201 Created', $server->httpResponse->status);
26 $this->assertTrue(isset($server->httpResponse->headers['Lock-Token']));
27 $lockToken = $server->httpResponse->headers['Lock-Token'];
31 $response2 = new Sabre_HTTP_ResponseMock();
33 $server->httpRequest = $this->getLockRequest2();
34 $server->httpResponse = $response2;
37 $this->assertEquals('HTTP/1.1 201 Created', $server->httpResponse->status);
38 $this->assertTrue(isset($server->httpResponse->headers['Lock-Token']));
42 $response3 = new Sabre_HTTP_ResponseMock();
43 $server->httpRequest = $this->getPutRequest($lockToken);
44 $server->httpResponse = $response3;
47 $this->assertEquals('HTTP/1.1 204 No Content', $server->httpResponse->status);
53 Sabre_TestUtil::clearTempDir();
57 function getLockRequest() {
59 $request = new Sabre_HTTP_Request(array(
60 'REQUEST_METHOD' => 'LOCK',
61 'HTTP_CONTENT_TYPE' => 'application/xml',
62 'HTTP_TIMEOUT' => 'Second-3600',
63 'REQUEST_URI' => '/Nouveau%20Microsoft%20Office%20Excel%20Worksheet.xlsx',
66 $request->setBody('<D:lockinfo xmlns:D="DAV:">
74 <D:href>PC-Vista\User</D:href>
81 function getLockRequest2() {
83 $request = new Sabre_HTTP_Request(array(
84 'REQUEST_METHOD' => 'LOCK',
85 'HTTP_CONTENT_TYPE' => 'application/xml',
86 'HTTP_TIMEOUT' => 'Second-3600',
87 'REQUEST_URI' => '/~$Nouveau%20Microsoft%20Office%20Excel%20Worksheet.xlsx',
90 $request->setBody('<D:lockinfo xmlns:D="DAV:">
98 <D:href>PC-Vista\User</D:href>
106 function getPutRequest($lockToken) {
108 $request = new Sabre_HTTP_Request(array(
109 'REQUEST_METHOD' => 'PUT',
110 'REQUEST_URI' => '/Nouveau%20Microsoft%20Office%20Excel%20Worksheet.xlsx',
111 'HTTP_IF' => 'If: ('.$lockToken.')',
113 $request->setBody('FAKE BODY');