1*a1a3b679SAndreas Boehler<?php 2*a1a3b679SAndreas Boehler 3*a1a3b679SAndreas Boehlernamespace Sabre\DAVACL; 4*a1a3b679SAndreas Boehler 5*a1a3b679SAndreas Boehleruse Sabre\DAV; 6*a1a3b679SAndreas Boehleruse Sabre\HTTP; 7*a1a3b679SAndreas Boehler 8*a1a3b679SAndreas Boehlerclass BlockAccessTest extends \PHPUnit_Framework_TestCase { 9*a1a3b679SAndreas Boehler 10*a1a3b679SAndreas Boehler /** 11*a1a3b679SAndreas Boehler * @var DAV\Server 12*a1a3b679SAndreas Boehler */ 13*a1a3b679SAndreas Boehler protected $server; 14*a1a3b679SAndreas Boehler protected $plugin; 15*a1a3b679SAndreas Boehler 16*a1a3b679SAndreas Boehler function setUp() { 17*a1a3b679SAndreas Boehler 18*a1a3b679SAndreas Boehler $nodes = [ 19*a1a3b679SAndreas Boehler new DAV\SimpleCollection('testdir'), 20*a1a3b679SAndreas Boehler ]; 21*a1a3b679SAndreas Boehler 22*a1a3b679SAndreas Boehler $this->server = new DAV\Server($nodes); 23*a1a3b679SAndreas Boehler $this->plugin = new Plugin(); 24*a1a3b679SAndreas Boehler $this->plugin->allowAccessToNodesWithoutACL = false; 25*a1a3b679SAndreas Boehler $this->server->addPlugin($this->plugin); 26*a1a3b679SAndreas Boehler 27*a1a3b679SAndreas Boehler } 28*a1a3b679SAndreas Boehler 29*a1a3b679SAndreas Boehler /** 30*a1a3b679SAndreas Boehler * @expectedException Sabre\DAVACL\Exception\NeedPrivileges 31*a1a3b679SAndreas Boehler */ 32*a1a3b679SAndreas Boehler function testGet() { 33*a1a3b679SAndreas Boehler 34*a1a3b679SAndreas Boehler $this->server->httpRequest->setMethod('GET'); 35*a1a3b679SAndreas Boehler $this->server->httpRequest->setUrl('/testdir'); 36*a1a3b679SAndreas Boehler 37*a1a3b679SAndreas Boehler $this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]); 38*a1a3b679SAndreas Boehler 39*a1a3b679SAndreas Boehler } 40*a1a3b679SAndreas Boehler 41*a1a3b679SAndreas Boehler function testGetDoesntExist() { 42*a1a3b679SAndreas Boehler 43*a1a3b679SAndreas Boehler $this->server->httpRequest->setMethod('GET'); 44*a1a3b679SAndreas Boehler $this->server->httpRequest->setUrl('/foo'); 45*a1a3b679SAndreas Boehler 46*a1a3b679SAndreas Boehler $r = $this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]); 47*a1a3b679SAndreas Boehler $this->assertTrue($r); 48*a1a3b679SAndreas Boehler 49*a1a3b679SAndreas Boehler } 50*a1a3b679SAndreas Boehler 51*a1a3b679SAndreas Boehler /** 52*a1a3b679SAndreas Boehler * @expectedException Sabre\DAVACL\Exception\NeedPrivileges 53*a1a3b679SAndreas Boehler */ 54*a1a3b679SAndreas Boehler function testHEAD() { 55*a1a3b679SAndreas Boehler 56*a1a3b679SAndreas Boehler $this->server->httpRequest->setMethod('HEAD'); 57*a1a3b679SAndreas Boehler $this->server->httpRequest->setUrl('/testdir'); 58*a1a3b679SAndreas Boehler 59*a1a3b679SAndreas Boehler $this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]); 60*a1a3b679SAndreas Boehler 61*a1a3b679SAndreas Boehler } 62*a1a3b679SAndreas Boehler 63*a1a3b679SAndreas Boehler /** 64*a1a3b679SAndreas Boehler * @expectedException Sabre\DAVACL\Exception\NeedPrivileges 65*a1a3b679SAndreas Boehler */ 66*a1a3b679SAndreas Boehler function testOPTIONS() { 67*a1a3b679SAndreas Boehler 68*a1a3b679SAndreas Boehler $this->server->httpRequest->setMethod('OPTIONS'); 69*a1a3b679SAndreas Boehler $this->server->httpRequest->setUrl('/testdir'); 70*a1a3b679SAndreas Boehler 71*a1a3b679SAndreas Boehler $this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]); 72*a1a3b679SAndreas Boehler 73*a1a3b679SAndreas Boehler } 74*a1a3b679SAndreas Boehler 75*a1a3b679SAndreas Boehler /** 76*a1a3b679SAndreas Boehler * @expectedException Sabre\DAVACL\Exception\NeedPrivileges 77*a1a3b679SAndreas Boehler */ 78*a1a3b679SAndreas Boehler function testPUT() { 79*a1a3b679SAndreas Boehler 80*a1a3b679SAndreas Boehler $this->server->httpRequest->setMethod('PUT'); 81*a1a3b679SAndreas Boehler $this->server->httpRequest->setUrl('/testdir'); 82*a1a3b679SAndreas Boehler 83*a1a3b679SAndreas Boehler $this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]); 84*a1a3b679SAndreas Boehler 85*a1a3b679SAndreas Boehler } 86*a1a3b679SAndreas Boehler 87*a1a3b679SAndreas Boehler /** 88*a1a3b679SAndreas Boehler * @expectedException Sabre\DAVACL\Exception\NeedPrivileges 89*a1a3b679SAndreas Boehler */ 90*a1a3b679SAndreas Boehler function testPROPPATCH() { 91*a1a3b679SAndreas Boehler 92*a1a3b679SAndreas Boehler $this->server->httpRequest->setMethod('PROPPATCH'); 93*a1a3b679SAndreas Boehler $this->server->httpRequest->setUrl('/testdir'); 94*a1a3b679SAndreas Boehler 95*a1a3b679SAndreas Boehler $this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]); 96*a1a3b679SAndreas Boehler 97*a1a3b679SAndreas Boehler } 98*a1a3b679SAndreas Boehler 99*a1a3b679SAndreas Boehler /** 100*a1a3b679SAndreas Boehler * @expectedException Sabre\DAVACL\Exception\NeedPrivileges 101*a1a3b679SAndreas Boehler */ 102*a1a3b679SAndreas Boehler function testCOPY() { 103*a1a3b679SAndreas Boehler 104*a1a3b679SAndreas Boehler $this->server->httpRequest->setMethod('COPY'); 105*a1a3b679SAndreas Boehler $this->server->httpRequest->setUrl('/testdir'); 106*a1a3b679SAndreas Boehler 107*a1a3b679SAndreas Boehler $this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]); 108*a1a3b679SAndreas Boehler 109*a1a3b679SAndreas Boehler } 110*a1a3b679SAndreas Boehler 111*a1a3b679SAndreas Boehler /** 112*a1a3b679SAndreas Boehler * @expectedException Sabre\DAVACL\Exception\NeedPrivileges 113*a1a3b679SAndreas Boehler */ 114*a1a3b679SAndreas Boehler function testMOVE() { 115*a1a3b679SAndreas Boehler 116*a1a3b679SAndreas Boehler $this->server->httpRequest->setMethod('MOVE'); 117*a1a3b679SAndreas Boehler $this->server->httpRequest->setUrl('/testdir'); 118*a1a3b679SAndreas Boehler 119*a1a3b679SAndreas Boehler $this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]); 120*a1a3b679SAndreas Boehler 121*a1a3b679SAndreas Boehler } 122*a1a3b679SAndreas Boehler 123*a1a3b679SAndreas Boehler /** 124*a1a3b679SAndreas Boehler * @expectedException Sabre\DAVACL\Exception\NeedPrivileges 125*a1a3b679SAndreas Boehler */ 126*a1a3b679SAndreas Boehler function testACL() { 127*a1a3b679SAndreas Boehler 128*a1a3b679SAndreas Boehler $this->server->httpRequest->setMethod('ACL'); 129*a1a3b679SAndreas Boehler $this->server->httpRequest->setUrl('/testdir'); 130*a1a3b679SAndreas Boehler 131*a1a3b679SAndreas Boehler $this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]); 132*a1a3b679SAndreas Boehler 133*a1a3b679SAndreas Boehler } 134*a1a3b679SAndreas Boehler 135*a1a3b679SAndreas Boehler /** 136*a1a3b679SAndreas Boehler * @expectedException Sabre\DAVACL\Exception\NeedPrivileges 137*a1a3b679SAndreas Boehler */ 138*a1a3b679SAndreas Boehler function testLOCK() { 139*a1a3b679SAndreas Boehler 140*a1a3b679SAndreas Boehler $this->server->httpRequest->setMethod('LOCK'); 141*a1a3b679SAndreas Boehler $this->server->httpRequest->setUrl('/testdir'); 142*a1a3b679SAndreas Boehler 143*a1a3b679SAndreas Boehler $this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]); 144*a1a3b679SAndreas Boehler 145*a1a3b679SAndreas Boehler } 146*a1a3b679SAndreas Boehler 147*a1a3b679SAndreas Boehler /** 148*a1a3b679SAndreas Boehler * @expectedException Sabre\DAVACL\Exception\NeedPrivileges 149*a1a3b679SAndreas Boehler */ 150*a1a3b679SAndreas Boehler function testBeforeBind() { 151*a1a3b679SAndreas Boehler 152*a1a3b679SAndreas Boehler $this->server->emit('beforeBind', ['testdir/file']); 153*a1a3b679SAndreas Boehler 154*a1a3b679SAndreas Boehler } 155*a1a3b679SAndreas Boehler 156*a1a3b679SAndreas Boehler /** 157*a1a3b679SAndreas Boehler * @expectedException Sabre\DAVACL\Exception\NeedPrivileges 158*a1a3b679SAndreas Boehler */ 159*a1a3b679SAndreas Boehler function testBeforeUnbind() { 160*a1a3b679SAndreas Boehler 161*a1a3b679SAndreas Boehler $this->server->emit('beforeUnbind', ['testdir']); 162*a1a3b679SAndreas Boehler 163*a1a3b679SAndreas Boehler } 164*a1a3b679SAndreas Boehler 165*a1a3b679SAndreas Boehler function testPropFind() { 166*a1a3b679SAndreas Boehler 167*a1a3b679SAndreas Boehler $propFind = new DAV\PropFind('testdir', [ 168*a1a3b679SAndreas Boehler '{DAV:}displayname', 169*a1a3b679SAndreas Boehler '{DAV:}getcontentlength', 170*a1a3b679SAndreas Boehler '{DAV:}bar', 171*a1a3b679SAndreas Boehler '{DAV:}owner', 172*a1a3b679SAndreas Boehler ]); 173*a1a3b679SAndreas Boehler 174*a1a3b679SAndreas Boehler $r = $this->server->emit('propFind', [$propFind, new DAV\SimpleCollection('testdir')]); 175*a1a3b679SAndreas Boehler $this->assertTrue($r); 176*a1a3b679SAndreas Boehler 177*a1a3b679SAndreas Boehler $expected = [ 178*a1a3b679SAndreas Boehler 200 => [], 179*a1a3b679SAndreas Boehler 404 => [], 180*a1a3b679SAndreas Boehler 403 => [ 181*a1a3b679SAndreas Boehler '{DAV:}displayname' => null, 182*a1a3b679SAndreas Boehler '{DAV:}getcontentlength' => null, 183*a1a3b679SAndreas Boehler '{DAV:}bar' => null, 184*a1a3b679SAndreas Boehler '{DAV:}owner' => null, 185*a1a3b679SAndreas Boehler ], 186*a1a3b679SAndreas Boehler ]; 187*a1a3b679SAndreas Boehler 188*a1a3b679SAndreas Boehler $this->assertEquals($expected, $propFind->getResultForMultiStatus()); 189*a1a3b679SAndreas Boehler 190*a1a3b679SAndreas Boehler } 191*a1a3b679SAndreas Boehler 192*a1a3b679SAndreas Boehler function testBeforeGetPropertiesNoListing() { 193*a1a3b679SAndreas Boehler 194*a1a3b679SAndreas Boehler $this->plugin->hideNodesFromListings = true; 195*a1a3b679SAndreas Boehler $propFind = new DAV\PropFind('testdir', [ 196*a1a3b679SAndreas Boehler '{DAV:}displayname', 197*a1a3b679SAndreas Boehler '{DAV:}getcontentlength', 198*a1a3b679SAndreas Boehler '{DAV:}bar', 199*a1a3b679SAndreas Boehler '{DAV:}owner', 200*a1a3b679SAndreas Boehler ]); 201*a1a3b679SAndreas Boehler 202*a1a3b679SAndreas Boehler $r = $this->server->emit('propFind', [$propFind, new DAV\SimpleCollection('testdir')]); 203*a1a3b679SAndreas Boehler $this->assertFalse($r); 204*a1a3b679SAndreas Boehler 205*a1a3b679SAndreas Boehler } 206*a1a3b679SAndreas Boehler} 207