Blame view

sources/3rdparty/sabre/dav/tests/Sabre/DAV/PartialUpdate/SpecificationTest.php 2.54 KB
6d9380f96   Cédric Dupont   Update sources OC...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
  <?php
  
  namespace Sabre\DAV\PartialUpdate;
  
  use Sabre\DAV\FSExt\File;
  use Sabre\DAV\Server;
  use Sabre\HTTP;
  
  /**
   * This test is an end-to-end sabredav test that goes through all
   * the cases in the specification.
   *
   * See: http://sabre.io/dav/http-patch/
   */
  class SpecificationTest extends \PHPUnit_Framework_TestCase {
  
      protected $server;
  
      public function setUp() {
  
          $tree = array(
              new File(SABRE_TEMPDIR . '/foobar.txt')
          );
          $server = new Server($tree);
          $server->debugExceptions = true;
          $server->addPlugin(new Plugin());
  
          $tree[0]->put('1234567890');
  
          $this->server = $server;
  
      }
  
      public function tearDown() {
  
          \Sabre\TestUtil::clearTempDir();
  
      }
  
      /**
       * @dataProvider data
       */
      public function testUpdateRange($headerValue, $httpStatus, $endResult, $contentLength = 4) {
  
          $vars = array(
              'REQUEST_METHOD' => 'PATCH',
              'HTTP_CONTENT_TYPE' => 'application/x-sabredav-partialupdate',
              'HTTP_X_UPDATE_RANGE' => $headerValue,
              'REQUEST_URI' => '/foobar.txt',
          );
          if ($contentLength) {
              $vars['HTTP_CONTENT_LENGTH'] = (string)$contentLength;
          }
  
          $request = new HTTP\Request($vars);
  
          $request->setBody('----');
          $this->server->httpRequest = $request;
          $this->server->httpResponse = new HTTP\ResponseMock();
          $this->server->exec();
  
          $this->assertEquals($httpStatus, $this->server->httpResponse->status, 'Incorrect http status received: ' . $this->server->httpResponse->body);
          if (!is_null($endResult)) {
              $this->assertEquals($endResult, file_get_contents(SABRE_TEMPDIR . '/foobar.txt'));
          }
  
      } 
  
      public function data() {
  
          return array(
              // Problems
              array('foo',       'HTTP/1.1 400 Bad request', null),
              array('bytes=0-3', 'HTTP/1.1 411 Length Required', null, 0),
              array('bytes=4-1', 'HTTP/1.1 416 Requested Range Not Satisfiable', null),
  
              array('bytes=0-3', 'HTTP/1.1 204 No Content', '----567890'),
              array('bytes=1-4', 'HTTP/1.1 204 No Content', '1----67890'),
              array('bytes=0-',  'HTTP/1.1 204 No Content', '----567890'),
              array('bytes=-4',  'HTTP/1.1 204 No Content', '123456----'),
              array('bytes=-2',  'HTTP/1.1 204 No Content', '12345678----'),
              array('bytes=2-',  'HTTP/1.1 204 No Content', '12----7890'),
              array('append',    'HTTP/1.1 204 No Content', '1234567890----'),
  
          );
  
      }
  
  }