ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
ServerTest.php
Go to the documentation of this file.
1 <?php
2 
3 namespace Sabre\DAV\FSExt;
4 
5 use Sabre\DAV;
6 use Sabre\HTTP;
7 
8 require_once 'Sabre/DAV/AbstractServer.php';
9 
11 
12  protected function getRootNode() {
13 
14  return new Directory($this->tempDir);
15 
16  }
17 
18  function testGet() {
19 
20  $request = new HTTP\Request('GET', '/test.txt');
21  $filename = $this->tempDir . '/test.txt';
22  $this->server->httpRequest = $request;
23  $this->server->exec();
24 
25  $this->assertEquals(200, $this->response->getStatus(), 'Invalid status code received.');
26  $this->assertEquals([
27  'X-Sabre-Version' => [DAV\Version::VERSION],
28  'Content-Type' => ['application/octet-stream'],
29  'Content-Length' => [13],
30  'Last-Modified' => [HTTP\Util::toHTTPDate(new \DateTime('@' . filemtime($filename)))],
31  'ETag' => ['"' . sha1(fileinode($filename) . filesize($filename) . filemtime($filename)) . '"'],
32  ],
33  $this->response->getHeaders()
34  );
35 
36 
37  $this->assertEquals('Test contents', stream_get_contents($this->response->body));
38 
39  }
40 
41  function testHEAD() {
42 
43  $request = new HTTP\Request('HEAD', '/test.txt');
44  $filename = $this->tempDir . '/test.txt';
45  $this->server->httpRequest = ($request);
46  $this->server->exec();
47 
48  $this->assertEquals([
49  'X-Sabre-Version' => [DAV\Version::VERSION],
50  'Content-Type' => ['application/octet-stream'],
51  'Content-Length' => [13],
52  'Last-Modified' => [HTTP\Util::toHTTPDate(new \DateTime('@' . filemtime($this->tempDir . '/test.txt')))],
53  'ETag' => ['"' . sha1(fileinode($filename) . filesize($filename) . filemtime($filename)) . '"'],
54  ],
55  $this->response->getHeaders()
56  );
57 
58  $this->assertEquals(200, $this->response->status);
59  $this->assertEquals('', $this->response->body);
60 
61  }
62 
63  function testPut() {
64 
65  $request = new HTTP\Request('PUT', '/testput.txt');
66  $filename = $this->tempDir . '/testput.txt';
67  $request->setBody('Testing new file');
68  $this->server->httpRequest = ($request);
69  $this->server->exec();
70 
71  $this->assertEquals([
72  'X-Sabre-Version' => [DAV\Version::VERSION],
73  'Content-Length' => ['0'],
74  'ETag' => ['"' . sha1(fileinode($filename) . filesize($filename) . filemtime($filename)) . '"'],
75  ], $this->response->getHeaders());
76 
77  $this->assertEquals(201, $this->response->status);
78  $this->assertEquals('', $this->response->body);
79  $this->assertEquals('Testing new file', file_get_contents($filename));
80 
81  }
82 
83  function testPutAlreadyExists() {
84 
85  $request = new HTTP\Request('PUT', '/test.txt', ['If-None-Match' => '*']);
86  $request->setBody('Testing new file');
87  $this->server->httpRequest = ($request);
88  $this->server->exec();
89 
90  $this->assertEquals([
91  'X-Sabre-Version' => [DAV\Version::VERSION],
92  'Content-Type' => ['application/xml; charset=utf-8'],
93  ], $this->response->getHeaders());
94 
95  $this->assertEquals(412, $this->response->status);
96  $this->assertNotEquals('Testing new file', file_get_contents($this->tempDir . '/test.txt'));
97 
98  }
99 
100  function testMkcol() {
101 
102  $request = new HTTP\Request('MKCOL', '/testcol');
103  $this->server->httpRequest = ($request);
104  $this->server->exec();
105 
106  $this->assertEquals([
107  'X-Sabre-Version' => [DAV\Version::VERSION],
108  'Content-Length' => ['0'],
109  ], $this->response->getHeaders());
110 
111  $this->assertEquals(201, $this->response->status);
112  $this->assertEquals('', $this->response->body);
113  $this->assertTrue(is_dir($this->tempDir . '/testcol'));
114 
115  }
116 
117  function testPutUpdate() {
118 
119  $request = new HTTP\Request('PUT', '/test.txt');
120  $request->setBody('Testing updated file');
121  $this->server->httpRequest = ($request);
122  $this->server->exec();
123 
124  $this->assertEquals('0', $this->response->getHeader('Content-Length'));
125 
126  $this->assertEquals(204, $this->response->status);
127  $this->assertEquals('', $this->response->body);
128  $this->assertEquals('Testing updated file', file_get_contents($this->tempDir . '/test.txt'));
129 
130  }
131 
132  function testDelete() {
133 
134  $request = new HTTP\Request('DELETE', '/test.txt');
135  $this->server->httpRequest = ($request);
136  $this->server->exec();
137 
138  $this->assertEquals([
139  'X-Sabre-Version' => [DAV\Version::VERSION],
140  'Content-Length' => ['0'],
141  ], $this->response->getHeaders());
142 
143  $this->assertEquals(204, $this->response->status);
144  $this->assertEquals('', $this->response->body);
145  $this->assertFalse(file_exists($this->tempDir . '/test.txt'));
146 
147  }
148 
149  function testDeleteDirectory() {
150 
151  mkdir($this->tempDir . '/testcol');
152  file_put_contents($this->tempDir . '/testcol/test.txt', 'Hi! I\'m a file with a short lifespan');
153 
154  $request = new HTTP\Request('DELETE', '/testcol');
155  $this->server->httpRequest = ($request);
156  $this->server->exec();
157 
158  $this->assertEquals([
159  'X-Sabre-Version' => [DAV\Version::VERSION],
160  'Content-Length' => ['0'],
161  ], $this->response->getHeaders());
162  $this->assertEquals(204, $this->response->status);
163  $this->assertEquals('', $this->response->body);
164  $this->assertFalse(file_exists($this->tempDir . '/testcol'));
165 
166  }
167 
168  function testOptions() {
169 
170  $request = new HTTP\Request('OPTIONS', '/');
171  $this->server->httpRequest = ($request);
172  $this->server->exec();
173 
174  $this->assertEquals([
175  'DAV' => ['1, 3, extended-mkcol'],
176  'MS-Author-Via' => ['DAV'],
177  'Allow' => ['OPTIONS, GET, HEAD, DELETE, PROPFIND, PUT, PROPPATCH, COPY, MOVE, REPORT'],
178  'Accept-Ranges' => ['bytes'],
179  'Content-Length' => ['0'],
180  'X-Sabre-Version' => [DAV\Version::VERSION],
181  ], $this->response->getHeaders());
182 
183  $this->assertEquals(200, $this->response->status);
184  $this->assertEquals('', $this->response->body);
185 
186  }
187 
188  function testMove() {
189 
190  mkdir($this->tempDir . '/testcol');
191 
192  $request = new HTTP\Request('MOVE', '/test.txt', ['Destination' => '/testcol/test2.txt']);
193  $this->server->httpRequest = ($request);
194  $this->server->exec();
195 
196  $this->assertEquals(201, $this->response->status);
197  $this->assertEquals('', $this->response->body);
198 
199  $this->assertEquals([
200  'Content-Length' => ['0'],
201  'X-Sabre-Version' => [DAV\Version::VERSION],
202  ], $this->response->getHeaders());
203 
204  $this->assertTrue(
205  is_file($this->tempDir . '/testcol/test2.txt')
206  );
207 
208 
209  }
210 
218  function testMoveOtherObject() {
219 
220  mkdir($this->tempDir . '/tree1');
221  mkdir($this->tempDir . '/tree2');
222 
223  $tree = new DAV\Tree(new DAV\SimpleCollection('root', [
224  new DAV\FS\Directory($this->tempDir . '/tree1'),
225  new DAV\FSExt\Directory($this->tempDir . '/tree2'),
226  ]));
227  $this->server->tree = $tree;
228 
229  $request = new HTTP\Request('MOVE', '/tree1', ['Destination' => '/tree2/tree1']);
230  $this->server->httpRequest = ($request);
231  $this->server->exec();
232 
233  $this->assertEquals(201, $this->response->status);
234  $this->assertEquals('', $this->response->body);
235 
236  $this->assertEquals([
237  'Content-Length' => ['0'],
238  'X-Sabre-Version' => [DAV\Version::VERSION],
239  ], $this->response->getHeaders());
240 
241  $this->assertTrue(
242  is_dir($this->tempDir . '/tree2/tree1')
243  );
244 
245  }
246 }
static toHTTPDate(\DateTime $dateTime)
Transforms a DateTime object to HTTP&#39;s most common date format.
Definition: Util.php:69
testMoveOtherObject()
This test checks if it&#39;s possible to move a non-FSExt collection into a FSExt collection.
Definition: ServerTest.php:218
const VERSION
Full version number.
Definition: Version.php:17
$filename
Definition: buildRTE.php:89
Directory class.
Definition: Directory.php:15
The tree object is responsible for basic tree operations.
Definition: Tree.php:17