1*a1a3b679SAndreas Boehler<?php 2*a1a3b679SAndreas Boehler 3*a1a3b679SAndreas Boehlernamespace Sabre\DAV; 4*a1a3b679SAndreas Boehleruse Sabre\HTTP; 5*a1a3b679SAndreas Boehler 6*a1a3b679SAndreas Boehlerclass ServerUpdatePropertiesTest extends \PHPUnit_Framework_TestCase { 7*a1a3b679SAndreas Boehler 8*a1a3b679SAndreas Boehler function testUpdatePropertiesFail() { 9*a1a3b679SAndreas Boehler 10*a1a3b679SAndreas Boehler $tree = array( 11*a1a3b679SAndreas Boehler new SimpleCollection('foo'), 12*a1a3b679SAndreas Boehler ); 13*a1a3b679SAndreas Boehler $server = new Server($tree); 14*a1a3b679SAndreas Boehler 15*a1a3b679SAndreas Boehler $result = $server->updateProperties('foo', array( 16*a1a3b679SAndreas Boehler '{DAV:}foo' => 'bar' 17*a1a3b679SAndreas Boehler )); 18*a1a3b679SAndreas Boehler 19*a1a3b679SAndreas Boehler $expected = array( 20*a1a3b679SAndreas Boehler '{DAV:}foo' => 403, 21*a1a3b679SAndreas Boehler ); 22*a1a3b679SAndreas Boehler $this->assertEquals($expected, $result); 23*a1a3b679SAndreas Boehler 24*a1a3b679SAndreas Boehler } 25*a1a3b679SAndreas Boehler 26*a1a3b679SAndreas Boehler function testUpdatePropertiesProtected() { 27*a1a3b679SAndreas Boehler 28*a1a3b679SAndreas Boehler $tree = array( 29*a1a3b679SAndreas Boehler new SimpleCollection('foo'), 30*a1a3b679SAndreas Boehler ); 31*a1a3b679SAndreas Boehler $server = new Server($tree); 32*a1a3b679SAndreas Boehler 33*a1a3b679SAndreas Boehler $server->on('propPatch', function($path, PropPatch $propPatch) { 34*a1a3b679SAndreas Boehler $propPatch->handleRemaining(function() { return true; }); 35*a1a3b679SAndreas Boehler }); 36*a1a3b679SAndreas Boehler $result = $server->updateProperties('foo', array( 37*a1a3b679SAndreas Boehler '{DAV:}getetag' => 'bla', 38*a1a3b679SAndreas Boehler '{DAV:}foo' => 'bar' 39*a1a3b679SAndreas Boehler )); 40*a1a3b679SAndreas Boehler 41*a1a3b679SAndreas Boehler $expected = array( 42*a1a3b679SAndreas Boehler '{DAV:}getetag' => 403, 43*a1a3b679SAndreas Boehler '{DAV:}foo' => 424, 44*a1a3b679SAndreas Boehler ); 45*a1a3b679SAndreas Boehler $this->assertEquals($expected, $result); 46*a1a3b679SAndreas Boehler 47*a1a3b679SAndreas Boehler } 48*a1a3b679SAndreas Boehler 49*a1a3b679SAndreas Boehler function testUpdatePropertiesEventFail() { 50*a1a3b679SAndreas Boehler 51*a1a3b679SAndreas Boehler $tree = array( 52*a1a3b679SAndreas Boehler new SimpleCollection('foo'), 53*a1a3b679SAndreas Boehler ); 54*a1a3b679SAndreas Boehler $server = new Server($tree); 55*a1a3b679SAndreas Boehler $server->on('propPatch', function($path, PropPatch $propPatch) { 56*a1a3b679SAndreas Boehler $propPatch->setResultCode('{DAV:}foo', 404); 57*a1a3b679SAndreas Boehler $propPatch->handleRemaining(function() { return true; }); 58*a1a3b679SAndreas Boehler }); 59*a1a3b679SAndreas Boehler 60*a1a3b679SAndreas Boehler $result = $server->updateProperties('foo', array( 61*a1a3b679SAndreas Boehler '{DAV:}foo' => 'bar', 62*a1a3b679SAndreas Boehler '{DAV:}foo2' => 'bla', 63*a1a3b679SAndreas Boehler )); 64*a1a3b679SAndreas Boehler 65*a1a3b679SAndreas Boehler $expected = array( 66*a1a3b679SAndreas Boehler '{DAV:}foo' => 404, 67*a1a3b679SAndreas Boehler '{DAV:}foo2' => 424, 68*a1a3b679SAndreas Boehler ); 69*a1a3b679SAndreas Boehler $this->assertEquals($expected, $result); 70*a1a3b679SAndreas Boehler 71*a1a3b679SAndreas Boehler } 72*a1a3b679SAndreas Boehler 73*a1a3b679SAndreas Boehler function updatePropFail(&$propertyDelta, &$result, $node) { 74*a1a3b679SAndreas Boehler 75*a1a3b679SAndreas Boehler $result[404] = array( 76*a1a3b679SAndreas Boehler '{DAV:}foo' => null, 77*a1a3b679SAndreas Boehler ); 78*a1a3b679SAndreas Boehler unset($propertyDelta['{DAV:}foo']); 79*a1a3b679SAndreas Boehler return false; 80*a1a3b679SAndreas Boehler 81*a1a3b679SAndreas Boehler } 82*a1a3b679SAndreas Boehler 83*a1a3b679SAndreas Boehler 84*a1a3b679SAndreas Boehler function testUpdatePropertiesEventSuccess() { 85*a1a3b679SAndreas Boehler 86*a1a3b679SAndreas Boehler $tree = array( 87*a1a3b679SAndreas Boehler new SimpleCollection('foo'), 88*a1a3b679SAndreas Boehler ); 89*a1a3b679SAndreas Boehler $server = new Server($tree); 90*a1a3b679SAndreas Boehler $server->on('propPatch', function($path, PropPatch $propPatch) { 91*a1a3b679SAndreas Boehler 92*a1a3b679SAndreas Boehler $propPatch->handle(['{DAV:}foo', '{DAV:}foo2'], function() { 93*a1a3b679SAndreas Boehler return [ 94*a1a3b679SAndreas Boehler '{DAV:}foo' => 200, 95*a1a3b679SAndreas Boehler '{DAV:}foo2' => 201, 96*a1a3b679SAndreas Boehler ]; 97*a1a3b679SAndreas Boehler }); 98*a1a3b679SAndreas Boehler 99*a1a3b679SAndreas Boehler }); 100*a1a3b679SAndreas Boehler 101*a1a3b679SAndreas Boehler $result = $server->updateProperties('foo', array( 102*a1a3b679SAndreas Boehler '{DAV:}foo' => 'bar', 103*a1a3b679SAndreas Boehler '{DAV:}foo2' => 'bla', 104*a1a3b679SAndreas Boehler )); 105*a1a3b679SAndreas Boehler 106*a1a3b679SAndreas Boehler $expected = array( 107*a1a3b679SAndreas Boehler '{DAV:}foo' => 200, 108*a1a3b679SAndreas Boehler '{DAV:}foo2' => 201, 109*a1a3b679SAndreas Boehler ); 110*a1a3b679SAndreas Boehler $this->assertEquals($expected, $result); 111*a1a3b679SAndreas Boehler 112*a1a3b679SAndreas Boehler } 113*a1a3b679SAndreas Boehler 114*a1a3b679SAndreas Boehler function updatePropSuccess(&$propertyDelta, &$result, $node) { 115*a1a3b679SAndreas Boehler 116*a1a3b679SAndreas Boehler $result[200] = array( 117*a1a3b679SAndreas Boehler '{DAV:}foo' => null, 118*a1a3b679SAndreas Boehler ); 119*a1a3b679SAndreas Boehler $result[201] = array( 120*a1a3b679SAndreas Boehler '{DAV:}foo2' => null, 121*a1a3b679SAndreas Boehler ); 122*a1a3b679SAndreas Boehler unset($propertyDelta['{DAV:}foo']); 123*a1a3b679SAndreas Boehler unset($propertyDelta['{DAV:}foo2']); 124*a1a3b679SAndreas Boehler return; 125*a1a3b679SAndreas Boehler 126*a1a3b679SAndreas Boehler } 127*a1a3b679SAndreas Boehler} 128