1*a1a3b679SAndreas Boehler<?php 2*a1a3b679SAndreas Boehler 3*a1a3b679SAndreas Boehlernamespace Sabre\DAV; 4*a1a3b679SAndreas Boehler 5*a1a3b679SAndreas Boehleruse Sabre\HTTP; 6*a1a3b679SAndreas Boehler 7*a1a3b679SAndreas Boehlerrequire_once 'Sabre/HTTP/ResponseMock.php'; 8*a1a3b679SAndreas Boehlerrequire_once 'Sabre/DAV/AbstractServer.php'; 9*a1a3b679SAndreas Boehler 10*a1a3b679SAndreas Boehlerclass GetIfConditionsTest extends AbstractServer { 11*a1a3b679SAndreas Boehler 12*a1a3b679SAndreas Boehler function testNoConditions() { 13*a1a3b679SAndreas Boehler 14*a1a3b679SAndreas Boehler $request = new HTTP\Request(); 15*a1a3b679SAndreas Boehler 16*a1a3b679SAndreas Boehler $conditions = $this->server->getIfConditions($request); 17*a1a3b679SAndreas Boehler $this->assertEquals(array(),$conditions); 18*a1a3b679SAndreas Boehler 19*a1a3b679SAndreas Boehler } 20*a1a3b679SAndreas Boehler 21*a1a3b679SAndreas Boehler function testLockToken() { 22*a1a3b679SAndreas Boehler 23*a1a3b679SAndreas Boehler $request = new HTTP\Request('GET', '/path/', ['If' => '(<opaquelocktoken:token1>)']); 24*a1a3b679SAndreas Boehler $conditions = $this->server->getIfConditions($request); 25*a1a3b679SAndreas Boehler 26*a1a3b679SAndreas Boehler $compare = array( 27*a1a3b679SAndreas Boehler 28*a1a3b679SAndreas Boehler array( 29*a1a3b679SAndreas Boehler 'uri' => 'path', 30*a1a3b679SAndreas Boehler 'tokens' => array( 31*a1a3b679SAndreas Boehler array( 32*a1a3b679SAndreas Boehler 'negate' => false, 33*a1a3b679SAndreas Boehler 'token' => 'opaquelocktoken:token1', 34*a1a3b679SAndreas Boehler 'etag' => '', 35*a1a3b679SAndreas Boehler ), 36*a1a3b679SAndreas Boehler ), 37*a1a3b679SAndreas Boehler 38*a1a3b679SAndreas Boehler ), 39*a1a3b679SAndreas Boehler 40*a1a3b679SAndreas Boehler ); 41*a1a3b679SAndreas Boehler 42*a1a3b679SAndreas Boehler $this->assertEquals($compare,$conditions); 43*a1a3b679SAndreas Boehler 44*a1a3b679SAndreas Boehler } 45*a1a3b679SAndreas Boehler 46*a1a3b679SAndreas Boehler function testNotLockToken() { 47*a1a3b679SAndreas Boehler 48*a1a3b679SAndreas Boehler $serverVars = array( 49*a1a3b679SAndreas Boehler 'HTTP_IF' => '(Not <opaquelocktoken:token1>)', 50*a1a3b679SAndreas Boehler 'REQUEST_URI' => '/bla' 51*a1a3b679SAndreas Boehler ); 52*a1a3b679SAndreas Boehler 53*a1a3b679SAndreas Boehler $request = HTTP\Sapi::createFromServerArray($serverVars); 54*a1a3b679SAndreas Boehler $conditions = $this->server->getIfConditions($request); 55*a1a3b679SAndreas Boehler 56*a1a3b679SAndreas Boehler $compare = array( 57*a1a3b679SAndreas Boehler 58*a1a3b679SAndreas Boehler array( 59*a1a3b679SAndreas Boehler 'uri' => 'bla', 60*a1a3b679SAndreas Boehler 'tokens' => array( 61*a1a3b679SAndreas Boehler array( 62*a1a3b679SAndreas Boehler 'negate' => true, 63*a1a3b679SAndreas Boehler 'token' => 'opaquelocktoken:token1', 64*a1a3b679SAndreas Boehler 'etag' => '', 65*a1a3b679SAndreas Boehler ), 66*a1a3b679SAndreas Boehler ), 67*a1a3b679SAndreas Boehler 68*a1a3b679SAndreas Boehler ), 69*a1a3b679SAndreas Boehler 70*a1a3b679SAndreas Boehler ); 71*a1a3b679SAndreas Boehler $this->assertEquals($compare,$conditions); 72*a1a3b679SAndreas Boehler 73*a1a3b679SAndreas Boehler } 74*a1a3b679SAndreas Boehler 75*a1a3b679SAndreas Boehler function testLockTokenUrl() { 76*a1a3b679SAndreas Boehler 77*a1a3b679SAndreas Boehler $serverVars = array( 78*a1a3b679SAndreas Boehler 'HTTP_IF' => '<http://www.example.com/> (<opaquelocktoken:token1>)', 79*a1a3b679SAndreas Boehler ); 80*a1a3b679SAndreas Boehler 81*a1a3b679SAndreas Boehler $request = HTTP\Sapi::createFromServerArray($serverVars); 82*a1a3b679SAndreas Boehler $conditions = $this->server->getIfConditions($request); 83*a1a3b679SAndreas Boehler 84*a1a3b679SAndreas Boehler $compare = array( 85*a1a3b679SAndreas Boehler 86*a1a3b679SAndreas Boehler array( 87*a1a3b679SAndreas Boehler 'uri' => '', 88*a1a3b679SAndreas Boehler 'tokens' => array( 89*a1a3b679SAndreas Boehler array( 90*a1a3b679SAndreas Boehler 'negate' => false, 91*a1a3b679SAndreas Boehler 'token' => 'opaquelocktoken:token1', 92*a1a3b679SAndreas Boehler 'etag' => '', 93*a1a3b679SAndreas Boehler ), 94*a1a3b679SAndreas Boehler ), 95*a1a3b679SAndreas Boehler 96*a1a3b679SAndreas Boehler ), 97*a1a3b679SAndreas Boehler 98*a1a3b679SAndreas Boehler ); 99*a1a3b679SAndreas Boehler $this->assertEquals($compare,$conditions); 100*a1a3b679SAndreas Boehler 101*a1a3b679SAndreas Boehler } 102*a1a3b679SAndreas Boehler 103*a1a3b679SAndreas Boehler function test2LockTokens() { 104*a1a3b679SAndreas Boehler 105*a1a3b679SAndreas Boehler $serverVars = array( 106*a1a3b679SAndreas Boehler 'HTTP_IF' => '(<opaquelocktoken:token1>) (Not <opaquelocktoken:token2>)', 107*a1a3b679SAndreas Boehler 'REQUEST_URI' => '/bla', 108*a1a3b679SAndreas Boehler ); 109*a1a3b679SAndreas Boehler 110*a1a3b679SAndreas Boehler $request = HTTP\Sapi::createFromServerArray($serverVars); 111*a1a3b679SAndreas Boehler $conditions = $this->server->getIfConditions($request); 112*a1a3b679SAndreas Boehler 113*a1a3b679SAndreas Boehler $compare = array( 114*a1a3b679SAndreas Boehler 115*a1a3b679SAndreas Boehler array( 116*a1a3b679SAndreas Boehler 'uri' => 'bla', 117*a1a3b679SAndreas Boehler 'tokens' => array( 118*a1a3b679SAndreas Boehler array( 119*a1a3b679SAndreas Boehler 'negate' => false, 120*a1a3b679SAndreas Boehler 'token' => 'opaquelocktoken:token1', 121*a1a3b679SAndreas Boehler 'etag' => '', 122*a1a3b679SAndreas Boehler ), 123*a1a3b679SAndreas Boehler array( 124*a1a3b679SAndreas Boehler 'negate' => true, 125*a1a3b679SAndreas Boehler 'token' => 'opaquelocktoken:token2', 126*a1a3b679SAndreas Boehler 'etag' => '', 127*a1a3b679SAndreas Boehler ), 128*a1a3b679SAndreas Boehler ), 129*a1a3b679SAndreas Boehler 130*a1a3b679SAndreas Boehler ), 131*a1a3b679SAndreas Boehler 132*a1a3b679SAndreas Boehler ); 133*a1a3b679SAndreas Boehler $this->assertEquals($compare,$conditions); 134*a1a3b679SAndreas Boehler 135*a1a3b679SAndreas Boehler } 136*a1a3b679SAndreas Boehler 137*a1a3b679SAndreas Boehler function test2UriLockTokens() { 138*a1a3b679SAndreas Boehler 139*a1a3b679SAndreas Boehler $serverVars = array( 140*a1a3b679SAndreas Boehler 'HTTP_IF' => '<http://www.example.org/node1> (<opaquelocktoken:token1>) <http://www.example.org/node2> (Not <opaquelocktoken:token2>)', 141*a1a3b679SAndreas Boehler ); 142*a1a3b679SAndreas Boehler 143*a1a3b679SAndreas Boehler $request = HTTP\Sapi::createFromServerArray($serverVars); 144*a1a3b679SAndreas Boehler $conditions = $this->server->getIfConditions($request); 145*a1a3b679SAndreas Boehler 146*a1a3b679SAndreas Boehler $compare = array( 147*a1a3b679SAndreas Boehler 148*a1a3b679SAndreas Boehler array( 149*a1a3b679SAndreas Boehler 'uri' => 'node1', 150*a1a3b679SAndreas Boehler 'tokens' => array( 151*a1a3b679SAndreas Boehler array( 152*a1a3b679SAndreas Boehler 'negate' => false, 153*a1a3b679SAndreas Boehler 'token' => 'opaquelocktoken:token1', 154*a1a3b679SAndreas Boehler 'etag' => '', 155*a1a3b679SAndreas Boehler ), 156*a1a3b679SAndreas Boehler ), 157*a1a3b679SAndreas Boehler ), 158*a1a3b679SAndreas Boehler array( 159*a1a3b679SAndreas Boehler 'uri' => 'node2', 160*a1a3b679SAndreas Boehler 'tokens' => array( 161*a1a3b679SAndreas Boehler array( 162*a1a3b679SAndreas Boehler 'negate' => true, 163*a1a3b679SAndreas Boehler 'token' => 'opaquelocktoken:token2', 164*a1a3b679SAndreas Boehler 'etag' => '', 165*a1a3b679SAndreas Boehler ), 166*a1a3b679SAndreas Boehler ), 167*a1a3b679SAndreas Boehler 168*a1a3b679SAndreas Boehler ), 169*a1a3b679SAndreas Boehler 170*a1a3b679SAndreas Boehler ); 171*a1a3b679SAndreas Boehler $this->assertEquals($compare,$conditions); 172*a1a3b679SAndreas Boehler 173*a1a3b679SAndreas Boehler } 174*a1a3b679SAndreas Boehler 175*a1a3b679SAndreas Boehler function test2UriMultiLockTokens() { 176*a1a3b679SAndreas Boehler 177*a1a3b679SAndreas Boehler $serverVars = array( 178*a1a3b679SAndreas Boehler 'HTTP_IF' => '<http://www.example.org/node1> (<opaquelocktoken:token1>) (<opaquelocktoken:token2>) <http://www.example.org/node2> (Not <opaquelocktoken:token3>)', 179*a1a3b679SAndreas Boehler ); 180*a1a3b679SAndreas Boehler 181*a1a3b679SAndreas Boehler $request = HTTP\Sapi::createFromServerArray($serverVars); 182*a1a3b679SAndreas Boehler $conditions = $this->server->getIfConditions($request); 183*a1a3b679SAndreas Boehler 184*a1a3b679SAndreas Boehler $compare = array( 185*a1a3b679SAndreas Boehler 186*a1a3b679SAndreas Boehler array( 187*a1a3b679SAndreas Boehler 'uri' => 'node1', 188*a1a3b679SAndreas Boehler 'tokens' => array( 189*a1a3b679SAndreas Boehler array( 190*a1a3b679SAndreas Boehler 'negate' => false, 191*a1a3b679SAndreas Boehler 'token' => 'opaquelocktoken:token1', 192*a1a3b679SAndreas Boehler 'etag' => '', 193*a1a3b679SAndreas Boehler ), 194*a1a3b679SAndreas Boehler array( 195*a1a3b679SAndreas Boehler 'negate' => false, 196*a1a3b679SAndreas Boehler 'token' => 'opaquelocktoken:token2', 197*a1a3b679SAndreas Boehler 'etag' => '', 198*a1a3b679SAndreas Boehler ), 199*a1a3b679SAndreas Boehler ), 200*a1a3b679SAndreas Boehler ), 201*a1a3b679SAndreas Boehler array( 202*a1a3b679SAndreas Boehler 'uri' => 'node2', 203*a1a3b679SAndreas Boehler 'tokens' => array( 204*a1a3b679SAndreas Boehler array( 205*a1a3b679SAndreas Boehler 'negate' => true, 206*a1a3b679SAndreas Boehler 'token' => 'opaquelocktoken:token3', 207*a1a3b679SAndreas Boehler 'etag' => '', 208*a1a3b679SAndreas Boehler ), 209*a1a3b679SAndreas Boehler ), 210*a1a3b679SAndreas Boehler 211*a1a3b679SAndreas Boehler ), 212*a1a3b679SAndreas Boehler 213*a1a3b679SAndreas Boehler ); 214*a1a3b679SAndreas Boehler $this->assertEquals($compare,$conditions); 215*a1a3b679SAndreas Boehler 216*a1a3b679SAndreas Boehler } 217*a1a3b679SAndreas Boehler 218*a1a3b679SAndreas Boehler function testEtag() { 219*a1a3b679SAndreas Boehler 220*a1a3b679SAndreas Boehler $serverVars = array( 221*a1a3b679SAndreas Boehler 'HTTP_IF' => '(["etag1"])', 222*a1a3b679SAndreas Boehler 'REQUEST_URI' => '/foo', 223*a1a3b679SAndreas Boehler ); 224*a1a3b679SAndreas Boehler 225*a1a3b679SAndreas Boehler $request = HTTP\Sapi::createFromServerArray($serverVars); 226*a1a3b679SAndreas Boehler $conditions = $this->server->getIfConditions($request); 227*a1a3b679SAndreas Boehler 228*a1a3b679SAndreas Boehler $compare = array( 229*a1a3b679SAndreas Boehler 230*a1a3b679SAndreas Boehler array( 231*a1a3b679SAndreas Boehler 'uri' => 'foo', 232*a1a3b679SAndreas Boehler 'tokens' => array( 233*a1a3b679SAndreas Boehler array( 234*a1a3b679SAndreas Boehler 'negate' => false, 235*a1a3b679SAndreas Boehler 'token' => '', 236*a1a3b679SAndreas Boehler 'etag' => '"etag1"', 237*a1a3b679SAndreas Boehler ), 238*a1a3b679SAndreas Boehler ), 239*a1a3b679SAndreas Boehler ), 240*a1a3b679SAndreas Boehler 241*a1a3b679SAndreas Boehler ); 242*a1a3b679SAndreas Boehler $this->assertEquals($compare,$conditions); 243*a1a3b679SAndreas Boehler 244*a1a3b679SAndreas Boehler } 245*a1a3b679SAndreas Boehler 246*a1a3b679SAndreas Boehler function test2Etags() { 247*a1a3b679SAndreas Boehler 248*a1a3b679SAndreas Boehler $serverVars = array( 249*a1a3b679SAndreas Boehler 'HTTP_IF' => '<http://www.example.org/> (["etag1"]) (["etag2"])', 250*a1a3b679SAndreas Boehler ); 251*a1a3b679SAndreas Boehler 252*a1a3b679SAndreas Boehler $request = HTTP\Sapi::createFromServerArray($serverVars); 253*a1a3b679SAndreas Boehler $conditions = $this->server->getIfConditions($request); 254*a1a3b679SAndreas Boehler 255*a1a3b679SAndreas Boehler $compare = array( 256*a1a3b679SAndreas Boehler 257*a1a3b679SAndreas Boehler array( 258*a1a3b679SAndreas Boehler 'uri' => '', 259*a1a3b679SAndreas Boehler 'tokens' => array( 260*a1a3b679SAndreas Boehler array( 261*a1a3b679SAndreas Boehler 'negate' => false, 262*a1a3b679SAndreas Boehler 'token' => '', 263*a1a3b679SAndreas Boehler 'etag' => '"etag1"', 264*a1a3b679SAndreas Boehler ), 265*a1a3b679SAndreas Boehler array( 266*a1a3b679SAndreas Boehler 'negate' => false, 267*a1a3b679SAndreas Boehler 'token' => '', 268*a1a3b679SAndreas Boehler 'etag' => '"etag2"', 269*a1a3b679SAndreas Boehler ), 270*a1a3b679SAndreas Boehler ), 271*a1a3b679SAndreas Boehler ), 272*a1a3b679SAndreas Boehler 273*a1a3b679SAndreas Boehler ); 274*a1a3b679SAndreas Boehler $this->assertEquals($compare,$conditions); 275*a1a3b679SAndreas Boehler 276*a1a3b679SAndreas Boehler } 277*a1a3b679SAndreas Boehler 278*a1a3b679SAndreas Boehler function testComplexIf() { 279*a1a3b679SAndreas Boehler 280*a1a3b679SAndreas Boehler $serverVars = array( 281*a1a3b679SAndreas Boehler 'HTTP_IF' => '<http://www.example.org/node1> (<opaquelocktoken:token1> ["etag1"]) ' . 282*a1a3b679SAndreas Boehler '(Not <opaquelocktoken:token2>) (["etag2"]) <http://www.example.org/node2> ' . 283*a1a3b679SAndreas Boehler '(<opaquelocktoken:token3>) (Not <opaquelocktoken:token4>) (["etag3"])', 284*a1a3b679SAndreas Boehler ); 285*a1a3b679SAndreas Boehler 286*a1a3b679SAndreas Boehler $request = HTTP\Sapi::createFromServerArray($serverVars); 287*a1a3b679SAndreas Boehler $conditions = $this->server->getIfConditions($request); 288*a1a3b679SAndreas Boehler 289*a1a3b679SAndreas Boehler $compare = array( 290*a1a3b679SAndreas Boehler 291*a1a3b679SAndreas Boehler array( 292*a1a3b679SAndreas Boehler 'uri' => 'node1', 293*a1a3b679SAndreas Boehler 'tokens' => array( 294*a1a3b679SAndreas Boehler array( 295*a1a3b679SAndreas Boehler 'negate' => false, 296*a1a3b679SAndreas Boehler 'token' => 'opaquelocktoken:token1', 297*a1a3b679SAndreas Boehler 'etag' => '"etag1"', 298*a1a3b679SAndreas Boehler ), 299*a1a3b679SAndreas Boehler array( 300*a1a3b679SAndreas Boehler 'negate' => true, 301*a1a3b679SAndreas Boehler 'token' => 'opaquelocktoken:token2', 302*a1a3b679SAndreas Boehler 'etag' => '', 303*a1a3b679SAndreas Boehler ), 304*a1a3b679SAndreas Boehler array( 305*a1a3b679SAndreas Boehler 'negate' => false, 306*a1a3b679SAndreas Boehler 'token' => '', 307*a1a3b679SAndreas Boehler 'etag' => '"etag2"', 308*a1a3b679SAndreas Boehler ), 309*a1a3b679SAndreas Boehler ), 310*a1a3b679SAndreas Boehler ), 311*a1a3b679SAndreas Boehler array( 312*a1a3b679SAndreas Boehler 'uri' => 'node2', 313*a1a3b679SAndreas Boehler 'tokens' => array( 314*a1a3b679SAndreas Boehler array( 315*a1a3b679SAndreas Boehler 'negate' => false, 316*a1a3b679SAndreas Boehler 'token' => 'opaquelocktoken:token3', 317*a1a3b679SAndreas Boehler 'etag' => '', 318*a1a3b679SAndreas Boehler ), 319*a1a3b679SAndreas Boehler array( 320*a1a3b679SAndreas Boehler 'negate' => true, 321*a1a3b679SAndreas Boehler 'token' => 'opaquelocktoken:token4', 322*a1a3b679SAndreas Boehler 'etag' => '', 323*a1a3b679SAndreas Boehler ), 324*a1a3b679SAndreas Boehler array( 325*a1a3b679SAndreas Boehler 'negate' => false, 326*a1a3b679SAndreas Boehler 'token' => '', 327*a1a3b679SAndreas Boehler 'etag' => '"etag3"', 328*a1a3b679SAndreas Boehler ), 329*a1a3b679SAndreas Boehler ), 330*a1a3b679SAndreas Boehler ), 331*a1a3b679SAndreas Boehler 332*a1a3b679SAndreas Boehler ); 333*a1a3b679SAndreas Boehler $this->assertEquals($compare,$conditions); 334*a1a3b679SAndreas Boehler 335*a1a3b679SAndreas Boehler } 336*a1a3b679SAndreas Boehler 337*a1a3b679SAndreas Boehler} 338