392 lines
12 KiB
PHP
392 lines
12 KiB
PHP
|
<?php
|
||
|
|
||
|
require_once 'Sabre/HTTP/ResponseMock.php';
|
||
|
|
||
|
class Sabre_DAV_ServerPreconditionsTest extends PHPUnit_Framework_TestCase {
|
||
|
|
||
|
/**
|
||
|
* @covers Sabre_DAV_Server::checkPreconditions
|
||
|
* @expectedException Sabre_DAV_Exception_PreconditionFailed
|
||
|
*/
|
||
|
function testIfMatchNoNode() {
|
||
|
|
||
|
$root = new Sabre_DAV_SimpleCollection('root',array(new Sabre_DAV_ServerPreconditionsNode()));
|
||
|
$server = new Sabre_DAV_Server($root);
|
||
|
$httpRequest = new Sabre_HTTP_Request(array(
|
||
|
'HTTP_IF_MATCH' => '*',
|
||
|
'REQUEST_URI' => '/bar'
|
||
|
));
|
||
|
$server->httpRequest = $httpRequest;
|
||
|
|
||
|
$server->checkPreconditions();
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @covers Sabre_DAV_Server::checkPreconditions
|
||
|
*/
|
||
|
function testIfMatchHasNode() {
|
||
|
|
||
|
$root = new Sabre_DAV_SimpleCollection('root',array(new Sabre_DAV_ServerPreconditionsNode()));
|
||
|
$server = new Sabre_DAV_Server($root);
|
||
|
$httpRequest = new Sabre_HTTP_Request(array(
|
||
|
'HTTP_IF_MATCH' => '*',
|
||
|
'REQUEST_URI' => '/foo'
|
||
|
));
|
||
|
$server->httpRequest = $httpRequest;
|
||
|
|
||
|
$this->assertTrue($server->checkPreconditions());
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @covers Sabre_DAV_Server::checkPreconditions
|
||
|
* @expectedException Sabre_DAV_Exception_PreconditionFailed
|
||
|
*/
|
||
|
function testIfMatchWrongEtag() {
|
||
|
|
||
|
$root = new Sabre_DAV_SimpleCollection('root',array(new Sabre_DAV_ServerPreconditionsNode()));
|
||
|
$server = new Sabre_DAV_Server($root);
|
||
|
$httpRequest = new Sabre_HTTP_Request(array(
|
||
|
'HTTP_IF_MATCH' => '1234',
|
||
|
'REQUEST_URI' => '/foo'
|
||
|
));
|
||
|
$server->httpRequest = $httpRequest;
|
||
|
|
||
|
$server->checkPreconditions();
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @covers Sabre_DAV_Server::checkPreconditions
|
||
|
*/
|
||
|
function testIfMatchCorrectEtag() {
|
||
|
|
||
|
$root = new Sabre_DAV_SimpleCollection('root',array(new Sabre_DAV_ServerPreconditionsNode()));
|
||
|
$server = new Sabre_DAV_Server($root);
|
||
|
$httpRequest = new Sabre_HTTP_Request(array(
|
||
|
'HTTP_IF_MATCH' => '"abc123"',
|
||
|
'REQUEST_URI' => '/foo'
|
||
|
));
|
||
|
$server->httpRequest = $httpRequest;
|
||
|
|
||
|
$this->assertTrue($server->checkPreconditions());
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Evolution sometimes uses \" instead of " for If-Match headers.
|
||
|
*
|
||
|
* @covers Sabre_DAV_Server::checkPreconditions
|
||
|
* @depends testIfMatchCorrectEtag
|
||
|
*/
|
||
|
function testIfMatchEvolutionEtag() {
|
||
|
|
||
|
$root = new Sabre_DAV_SimpleCollection('root',array(new Sabre_DAV_ServerPreconditionsNode()));
|
||
|
$server = new Sabre_DAV_Server($root);
|
||
|
$httpRequest = new Sabre_HTTP_Request(array(
|
||
|
'HTTP_IF_MATCH' => '\\"abc123\\"',
|
||
|
'REQUEST_URI' => '/foo'
|
||
|
));
|
||
|
$server->httpRequest = $httpRequest;
|
||
|
|
||
|
$this->assertTrue($server->checkPreconditions());
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @covers Sabre_DAV_Server::checkPreconditions
|
||
|
*/
|
||
|
function testIfMatchMultiple() {
|
||
|
|
||
|
$root = new Sabre_DAV_SimpleCollection('root',array(new Sabre_DAV_ServerPreconditionsNode()));
|
||
|
$server = new Sabre_DAV_Server($root);
|
||
|
$httpRequest = new Sabre_HTTP_Request(array(
|
||
|
'HTTP_IF_MATCH' => '"hellothere", "abc123"',
|
||
|
'REQUEST_URI' => '/foo'
|
||
|
));
|
||
|
$server->httpRequest = $httpRequest;
|
||
|
|
||
|
$this->assertTrue($server->checkPreconditions());
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @covers Sabre_DAV_Server::checkPreconditions
|
||
|
*/
|
||
|
function testIfNoneMatchNoNode() {
|
||
|
|
||
|
$root = new Sabre_DAV_SimpleCollection('root',array(new Sabre_DAV_ServerPreconditionsNode()));
|
||
|
$server = new Sabre_DAV_Server($root);
|
||
|
$httpRequest = new Sabre_HTTP_Request(array(
|
||
|
'HTTP_IF_NONE_MATCH' => '*',
|
||
|
'REQUEST_URI' => '/bar'
|
||
|
));
|
||
|
$server->httpRequest = $httpRequest;
|
||
|
|
||
|
$this->assertTrue($server->checkPreconditions());
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @covers Sabre_DAV_Server::checkPreconditions
|
||
|
* @expectedException Sabre_DAV_Exception_PreconditionFailed
|
||
|
*/
|
||
|
function testIfNoneMatchHasNode() {
|
||
|
|
||
|
$root = new Sabre_DAV_SimpleCollection('root',array(new Sabre_DAV_ServerPreconditionsNode()));
|
||
|
$server = new Sabre_DAV_Server($root);
|
||
|
$httpRequest = new Sabre_HTTP_Request(array(
|
||
|
'HTTP_IF_NONE_MATCH' => '*',
|
||
|
'REQUEST_URI' => '/foo'
|
||
|
));
|
||
|
$server->httpRequest = $httpRequest;
|
||
|
|
||
|
$server->checkPreconditions();
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @covers Sabre_DAV_Server::checkPreconditions
|
||
|
*/
|
||
|
function testIfNoneMatchWrongEtag() {
|
||
|
|
||
|
$root = new Sabre_DAV_SimpleCollection('root',array(new Sabre_DAV_ServerPreconditionsNode()));
|
||
|
$server = new Sabre_DAV_Server($root);
|
||
|
$httpRequest = new Sabre_HTTP_Request(array(
|
||
|
'HTTP_IF_NONE_MATCH' => '"1234"',
|
||
|
'REQUEST_URI' => '/foo'
|
||
|
));
|
||
|
$server->httpRequest = $httpRequest;
|
||
|
|
||
|
$this->assertTrue($server->checkPreconditions());
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @covers Sabre_DAV_Server::checkPreconditions
|
||
|
*/
|
||
|
function testIfNoneMatchWrongEtagMultiple() {
|
||
|
|
||
|
$root = new Sabre_DAV_SimpleCollection('root',array(new Sabre_DAV_ServerPreconditionsNode()));
|
||
|
$server = new Sabre_DAV_Server($root);
|
||
|
$httpRequest = new Sabre_HTTP_Request(array(
|
||
|
'HTTP_IF_NONE_MATCH' => '"1234", "5678"',
|
||
|
'REQUEST_URI' => '/foo'
|
||
|
));
|
||
|
$server->httpRequest = $httpRequest;
|
||
|
|
||
|
$this->assertTrue($server->checkPreconditions());
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @covers Sabre_DAV_Server::checkPreconditions
|
||
|
* @expectedException Sabre_DAV_Exception_PreconditionFailed
|
||
|
*/
|
||
|
public function testIfNoneMatchCorrectEtag() {
|
||
|
|
||
|
$root = new Sabre_DAV_SimpleCollection('root',array(new Sabre_DAV_ServerPreconditionsNode()));
|
||
|
$server = new Sabre_DAV_Server($root);
|
||
|
$httpRequest = new Sabre_HTTP_Request(array(
|
||
|
'HTTP_IF_NONE_MATCH' => '"abc123"',
|
||
|
'REQUEST_URI' => '/foo'
|
||
|
));
|
||
|
$server->httpRequest = $httpRequest;
|
||
|
|
||
|
$server->checkPreconditions();
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @covers Sabre_DAV_Server::checkPreconditions
|
||
|
* @expectedException Sabre_DAV_Exception_PreconditionFailed
|
||
|
*/
|
||
|
public function testIfNoneMatchCorrectEtagMultiple() {
|
||
|
|
||
|
$root = new Sabre_DAV_SimpleCollection('root',array(new Sabre_DAV_ServerPreconditionsNode()));
|
||
|
$server = new Sabre_DAV_Server($root);
|
||
|
$httpRequest = new Sabre_HTTP_Request(array(
|
||
|
'HTTP_IF_NONE_MATCH' => '"1234", "abc123"',
|
||
|
'REQUEST_URI' => '/foo'
|
||
|
));
|
||
|
$server->httpRequest = $httpRequest;
|
||
|
|
||
|
$server->checkPreconditions();
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @covers Sabre_DAV_Server::checkPreconditions
|
||
|
*/
|
||
|
public function testIfNoneMatchCorrectEtagAsGet() {
|
||
|
|
||
|
$root = new Sabre_DAV_SimpleCollection('root',array(new Sabre_DAV_ServerPreconditionsNode()));
|
||
|
$server = new Sabre_DAV_Server($root);
|
||
|
$httpRequest = new Sabre_HTTP_Request(array(
|
||
|
'HTTP_IF_NONE_MATCH' => '"abc123"',
|
||
|
'REQUEST_URI' => '/foo'
|
||
|
));
|
||
|
$server->httpRequest = $httpRequest;
|
||
|
$server->httpResponse = new Sabre_HTTP_ResponseMock();
|
||
|
|
||
|
$this->assertFalse($server->checkPreconditions(true));
|
||
|
$this->assertEquals('HTTP/1.1 304 Not Modified',$server->httpResponse->status);
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @covers Sabre_DAV_Server::checkPreconditions
|
||
|
*/
|
||
|
public function testIfModifiedSinceUnModified() {
|
||
|
|
||
|
$root = new Sabre_DAV_SimpleCollection('root',array(new Sabre_DAV_ServerPreconditionsNode()));
|
||
|
$server = new Sabre_DAV_Server($root);
|
||
|
$httpRequest = new Sabre_HTTP_Request(array(
|
||
|
'HTTP_IF_MODIFIED_SINCE' => 'Sun, 06 Nov 1994 08:49:37 GMT',
|
||
|
'REQUEST_URI' => '/foo'
|
||
|
));
|
||
|
$server->httpRequest = $httpRequest;
|
||
|
$server->httpResponse = new Sabre_HTTP_ResponseMock();
|
||
|
$this->assertFalse($server->checkPreconditions());
|
||
|
|
||
|
$this->assertEquals('HTTP/1.1 304 Not Modified',$server->httpResponse->status);
|
||
|
$this->assertEquals(array(
|
||
|
'Last-Modified' => 'Sat, 06 Apr 1985 23:30:00 GMT',
|
||
|
), $server->httpResponse->headers);
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @covers Sabre_DAV_Server::checkPreconditions
|
||
|
*/
|
||
|
public function testIfModifiedSinceModified() {
|
||
|
|
||
|
$root = new Sabre_DAV_SimpleCollection('root',array(new Sabre_DAV_ServerPreconditionsNode()));
|
||
|
$server = new Sabre_DAV_Server($root);
|
||
|
$httpRequest = new Sabre_HTTP_Request(array(
|
||
|
'HTTP_IF_MODIFIED_SINCE' => 'Tue, 06 Nov 1984 08:49:37 GMT',
|
||
|
'REQUEST_URI' => '/foo'
|
||
|
));
|
||
|
$server->httpRequest = $httpRequest;
|
||
|
$server->httpResponse = new Sabre_HTTP_ResponseMock();
|
||
|
$this->assertTrue($server->checkPreconditions());
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @covers Sabre_DAV_Server::checkPreconditions
|
||
|
*/
|
||
|
public function testIfModifiedSinceInvalidDate() {
|
||
|
|
||
|
$root = new Sabre_DAV_SimpleCollection('root',array(new Sabre_DAV_ServerPreconditionsNode()));
|
||
|
$server = new Sabre_DAV_Server($root);
|
||
|
$httpRequest = new Sabre_HTTP_Request(array(
|
||
|
'HTTP_IF_MODIFIED_SINCE' => 'Your mother',
|
||
|
'REQUEST_URI' => '/foo'
|
||
|
));
|
||
|
$server->httpRequest = $httpRequest;
|
||
|
$server->httpResponse = new Sabre_HTTP_ResponseMock();
|
||
|
|
||
|
// Invalid dates must be ignored, so this should return true
|
||
|
$this->assertTrue($server->checkPreconditions());
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @covers Sabre_DAV_Server::checkPreconditions
|
||
|
*/
|
||
|
public function testIfModifiedSinceInvalidDate2() {
|
||
|
|
||
|
$root = new Sabre_DAV_SimpleCollection('root',array(new Sabre_DAV_ServerPreconditionsNode()));
|
||
|
$server = new Sabre_DAV_Server($root);
|
||
|
$httpRequest = new Sabre_HTTP_Request(array(
|
||
|
'HTTP_IF_MODIFIED_SINCE' => 'Sun, 06 Nov 1994 08:49:37 EST',
|
||
|
'REQUEST_URI' => '/foo'
|
||
|
));
|
||
|
$server->httpRequest = $httpRequest;
|
||
|
$server->httpResponse = new Sabre_HTTP_ResponseMock();
|
||
|
$this->assertTrue($server->checkPreconditions());
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @covers Sabre_DAV_Server::checkPreconditions
|
||
|
*/
|
||
|
public function testIfUnmodifiedSinceUnModified() {
|
||
|
|
||
|
$root = new Sabre_DAV_SimpleCollection('root',array(new Sabre_DAV_ServerPreconditionsNode()));
|
||
|
$server = new Sabre_DAV_Server($root);
|
||
|
$httpRequest = new Sabre_HTTP_Request(array(
|
||
|
'HTTP_IF_UNMODIFIED_SINCE' => 'Sun, 06 Nov 1994 08:49:37 GMT',
|
||
|
'REQUEST_URI' => '/foo'
|
||
|
));
|
||
|
$server->httpRequest = $httpRequest;
|
||
|
$this->assertTrue($server->checkPreconditions());
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @covers Sabre_DAV_Server::checkPreconditions
|
||
|
* @expectedException Sabre_DAV_Exception_PreconditionFailed
|
||
|
*/
|
||
|
public function testIfUnmodifiedSinceModified() {
|
||
|
|
||
|
$root = new Sabre_DAV_SimpleCollection('root',array(new Sabre_DAV_ServerPreconditionsNode()));
|
||
|
$server = new Sabre_DAV_Server($root);
|
||
|
$httpRequest = new Sabre_HTTP_Request(array(
|
||
|
'HTTP_IF_UNMODIFIED_SINCE' => 'Tue, 06 Nov 1984 08:49:37 GMT',
|
||
|
'REQUEST_URI' => '/foo'
|
||
|
));
|
||
|
$server->httpRequest = $httpRequest;
|
||
|
$server->httpResponse = new Sabre_HTTP_ResponseMock();
|
||
|
$server->checkPreconditions();
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @covers Sabre_DAV_Server::checkPreconditions
|
||
|
*/
|
||
|
public function testIfUnmodifiedSinceInvalidDate() {
|
||
|
|
||
|
$root = new Sabre_DAV_SimpleCollection('root',array(new Sabre_DAV_ServerPreconditionsNode()));
|
||
|
$server = new Sabre_DAV_Server($root);
|
||
|
$httpRequest = new Sabre_HTTP_Request(array(
|
||
|
'HTTP_IF_UNMODIFIED_SINCE' => 'Sun, 06 Nov 1984 08:49:37 CET',
|
||
|
'REQUEST_URI' => '/foo'
|
||
|
));
|
||
|
$server->httpRequest = $httpRequest;
|
||
|
$server->httpResponse = new Sabre_HTTP_ResponseMock();
|
||
|
$this->assertTrue($server->checkPreconditions());
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
class Sabre_DAV_ServerPreconditionsNode extends Sabre_DAV_File {
|
||
|
|
||
|
function getETag() {
|
||
|
|
||
|
return '"abc123"';
|
||
|
|
||
|
}
|
||
|
|
||
|
function getLastModified() {
|
||
|
|
||
|
/* my birthday & time, I believe */
|
||
|
return strtotime('1985-04-07 01:30 +02:00');
|
||
|
|
||
|
}
|
||
|
|
||
|
function getName() {
|
||
|
|
||
|
return 'foo';
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|