ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
HTTPPreferParsingTest.php
Go to the documentation of this file.
1 <?php
2 
3 namespace Sabre\DAV;
4 
5 use Sabre\HTTP;
6 
8 
9  function testParseSimple() {
10 
11  $httpRequest = HTTP\Sapi::createFromServerArray([
12  'HTTP_PREFER' => 'return-asynch',
13  ]);
14 
15  $server = new Server();
16  $server->httpRequest = $httpRequest;
17 
18  $this->assertEquals([
19  'respond-async' => true,
20  'return' => null,
21  'handling' => null,
22  'wait' => null,
23  ], $server->getHTTPPrefer());
24 
25  }
26 
27  function testParseValue() {
28 
29  $httpRequest = HTTP\Sapi::createFromServerArray([
30  'HTTP_PREFER' => 'wait=10',
31  ]);
32 
33  $server = new Server();
34  $server->httpRequest = $httpRequest;
35 
36  $this->assertEquals([
37  'respond-async' => false,
38  'return' => null,
39  'handling' => null,
40  'wait' => '10',
41  ], $server->getHTTPPrefer());
42 
43  }
44 
45  function testParseMultiple() {
46 
47  $httpRequest = HTTP\Sapi::createFromServerArray([
48  'HTTP_PREFER' => 'return-minimal, strict,lenient',
49  ]);
50 
51  $server = new Server();
52  $server->httpRequest = $httpRequest;
53 
54  $this->assertEquals([
55  'respond-async' => false,
56  'return' => 'minimal',
57  'handling' => 'lenient',
58  'wait' => null,
59  ], $server->getHTTPPrefer());
60 
61  }
62 
63  function testParseWeirdValue() {
64 
65  $httpRequest = HTTP\Sapi::createFromServerArray([
66  'HTTP_PREFER' => 'BOOOH',
67  ]);
68 
69  $server = new Server();
70  $server->httpRequest = $httpRequest;
71 
72  $this->assertEquals([
73  'respond-async' => false,
74  'return' => null,
75  'handling' => null,
76  'wait' => null,
77  'boooh' => true,
78  ], $server->getHTTPPrefer());
79 
80  }
81 
82  function testBrief() {
83 
84  $httpRequest = HTTP\Sapi::createFromServerArray([
85  'HTTP_BRIEF' => 't',
86  ]);
87 
88  $server = new Server();
89  $server->httpRequest = $httpRequest;
90 
91  $this->assertEquals([
92  'respond-async' => false,
93  'return' => 'minimal',
94  'handling' => null,
95  'wait' => null,
96  ], $server->getHTTPPrefer());
97 
98  }
99 
105  function testpropfindMinimal() {
106 
108  'REQUEST_METHOD' => 'PROPFIND',
109  'REQUEST_URI' => '/',
110  'HTTP_PREFER' => 'return-minimal',
111  ]);
112  $request->setBody(<<<BLA
113 <?xml version="1.0"?>
114 <d:propfind xmlns:d="DAV:">
115  <d:prop>
116  <d:something />
117  <d:resourcetype />
118  </d:prop>
119 </d:propfind>
120 BLA
121  );
122 
123  $response = $this->request($request);
124 
125  $body = $response->getBodyAsString();
126 
127  $this->assertEquals(207, $response->getStatus(), $body);
128 
129  $this->assertTrue(strpos($body, 'resourcetype') !== false, $body);
130  $this->assertTrue(strpos($body, 'something') === false, $body);
131 
132  }
133 
134  function testproppatchMinimal() {
135 
136  $request = new HTTP\Request('PROPPATCH', '/', ['Prefer' => 'return-minimal']);
137  $request->setBody(<<<BLA
138 <?xml version="1.0"?>
139 <d:propertyupdate xmlns:d="DAV:">
140  <d:set>
141  <d:prop>
142  <d:something>nope!</d:something>
143  </d:prop>
144  </d:set>
145 </d:propertyupdate>
146 BLA
147  );
148 
149  $this->server->on('propPatch', function($path, PropPatch $propPatch) {
150 
151  $propPatch->handle('{DAV:}something', function($props) {
152  return true;
153  });
154 
155  });
156 
157  $response = $this->request($request);
158 
159  $this->assertEquals(0, strlen($response->body), 'Expected empty body: ' . $response->body);
160  $this->assertEquals(204, $response->status);
161 
162  }
163 
165 
166  $request = new HTTP\Request('PROPPATCH', '/', ['Prefer' => 'return-minimal']);
167  $request->setBody(<<<BLA
168 <?xml version="1.0"?>
169 <d:propertyupdate xmlns:d="DAV:">
170  <d:set>
171  <d:prop>
172  <d:something>nope!</d:something>
173  </d:prop>
174  </d:set>
175 </d:propertyupdate>
176 BLA
177  );
178 
179  $response = $this->request($request);
180 
181  $body = $response->getBodyAsString();
182 
183  $this->assertEquals(207, $response->status);
184  $this->assertTrue(strpos($body, 'something') !== false);
185  $this->assertTrue(strpos($body, '403 Forbidden') !== false, $body);
186 
187  }
188 }
$path
Definition: aliased.php:25
This class represents a set of properties that are going to be updated.
Definition: PropPatch.php:20
foreach($paths as $path) $request
Definition: asyncclient.php:32
handle($properties, callable $callback)
Call this function if you wish to handle updating certain properties.
Definition: PropPatch.php:87
This class may be used as a basis for other webdav-related unittests.
Main DAV server class.
Definition: Server.php:23
request($request, $expectedStatus=null)
Makes a request, and returns a response object.
static createFromServerArray(array $serverArray)
This static method will create a new Request object, based on a PHP $_SERVER array.
Definition: Sapi.php:107
$response