| <?php |
| /** |
| * Basic test cases for the memory backend. |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| * @package Webdav |
| * @subpackage Tests |
| * @version //autogentag// |
| * @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved. |
| * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0 |
| */ |
| |
| /** |
| * Reqiuire base test |
| */ |
| |
| /** |
| * Tests for ezcWebdavMemoryBackend class. |
| * |
| * @package Webdav |
| * @subpackage Tests |
| */ |
| class ezcWebdavMemoryBackendTest extends ezcTestCase |
| { |
| public static function suite() |
| { |
| return new PHPUnit_Framework_TestSuite( 'ezcWebdavMemoryBackendTest' ); |
| } |
| |
| public function setUp() |
| { |
| $this->tmp = $this->createTempDir( __CLASS__ ); |
| } |
| |
| public function tearDown() |
| { |
| $this->removeTempDir(); |
| } |
| |
| public function testEmptyMemoryServerCreation() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| |
| $content = $this->readAttribute( $backend, 'content' ); |
| $this->assertEquals( |
| $content, |
| array( |
| '/' => array(), |
| ), |
| 'Expected empty content array.' |
| ); |
| |
| $props = $this->readAttribute( $backend, 'props' ); |
| $this->assertEquals( |
| $props, |
| array(), |
| 'Expected empty property array.' |
| ); |
| |
| $this->assertSame( |
| 0, |
| $backend->getFeatures(), |
| 'Memory backend should not support any special features.' |
| ); |
| } |
| |
| public function testFileListMemoryServerCreation() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'blubb' => 'Somme blubb blubbs.', |
| 'ignored', |
| 'ignored' => true, |
| ) ); |
| |
| $content = $this->readAttribute( $backend, 'content' ); |
| $this->assertEquals( |
| array( |
| '/' => array( |
| '/foo', |
| '/blubb', |
| ), |
| '/foo' => 'bar', |
| '/blubb' => 'Somme blubb blubbs.', |
| ), |
| $content |
| ); |
| |
| $props = $this->readAttribute( $backend, 'props' ); |
| $this->assertEquals( |
| array( |
| '/foo' => new ezcWebdavBasicPropertyStorage(), |
| '/blubb' => new ezcWebdavBasicPropertyStorage(), |
| ), |
| $props, |
| 'Expected empty property array.' |
| ); |
| } |
| |
| public function testCollectionMemoryServerCreation() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $content = $this->readAttribute( $backend, 'content' ); |
| $this->assertEquals( |
| array( |
| '/' => array( |
| '/foo', |
| '/bar', |
| ), |
| '/foo' => 'bar', |
| '/bar' => array( |
| '/bar/blubb', |
| ), |
| '/bar/blubb' => 'Somme blubb blubbs.', |
| ), |
| $content |
| ); |
| |
| $props = $this->readAttribute( $backend, 'props' ); |
| $this->assertEquals( |
| array( |
| '/foo' => new ezcWebdavBasicPropertyStorage(), |
| '/bar' => new ezcWebdavBasicPropertyStorage(), |
| '/bar/blubb' => new ezcWebdavBasicPropertyStorage(), |
| ), |
| $props, |
| 'Expected empty property array.' |
| ); |
| } |
| |
| public function testFakedLiveProperties() |
| { |
| $backend = new ezcWebdavMemoryBackend( true ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| ) ); |
| |
| // Expected properties |
| $propertyStorage = new ezcWebdavBasicPropertyStorage(); |
| $propertyStorage->attach( |
| new ezcWebdavCreationDateProperty( new ezcWebdavDateTime( '@1054034820' ) ) |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavDisplayNameProperty( 'foo' ) |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetContentLanguageProperty( array( 'en' ) ) |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetContentTypeProperty( 'application/octet-stream' ) |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetEtagProperty( md5( '/foo' ) ) |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetLastModifiedProperty( new ezcWebdavDateTime( '@1124118780' ) ) |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetContentLengthProperty( '3' ) |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavResourceTypeProperty( |
| ezcWebdavResourceTypeProperty::TYPE_RESSOURCE |
| ) |
| ); |
| |
| $props = $this->readAttribute( $backend, 'props' ); |
| $this->assertEquals( |
| $propertyStorage, |
| $props['/foo'], |
| 'Expected filled property array.' |
| ); |
| } |
| |
| public function testMemoryBackendOptionsInMemoryBackend() |
| { |
| $server = new ezcWebdavMemoryBackend( false ); |
| |
| $this->assertEquals( |
| $server->options, |
| new ezcWebdavMemoryBackendOptions(), |
| 'Expected initially unmodified backend options class.' |
| ); |
| |
| $this->assertSame( |
| 0, |
| $server->options->failingOperations, |
| 'Expected successfull access on option.' |
| ); |
| |
| try |
| { |
| // Read access |
| $server->unknownProperty; |
| } |
| catch ( ezcBasePropertyNotFoundException $e ) |
| { |
| return true; |
| } |
| |
| $this->fail( 'Expected ezcBasePropertyNotFoundException.' ); |
| } |
| |
| public function testMemoryBackendOptionsSetInMemoryBackend() |
| { |
| $server = new ezcWebdavMemoryBackend( false ); |
| |
| $options = new ezcWebdavMemoryBackendOptions(); |
| $options->failingOperations = 1; |
| |
| $this->assertSame( |
| 0, |
| $server->options->failingOperations, |
| 'Wrong initial value before changed option class.' |
| ); |
| |
| $server->options = $options; |
| |
| $this->assertSame( |
| 1, |
| $server->options->failingOperations, |
| 'Expected modified value, because of changed option class.' |
| ); |
| |
| try |
| { |
| $server->unknownProperty = $options; |
| } |
| catch ( ezcBasePropertyNotFoundException $e ) |
| { |
| return true; |
| } |
| |
| $this->fail( 'Expected ezcBasePropertyNotFoundException.' ); |
| } |
| |
| public function testMemoryBackendOptionsLockFile() |
| { |
| $options = new ezcWebdavMemoryBackendOptions(); |
| |
| $lockFile = $this->tmp . '/test.lock'; |
| |
| $this->assertSetProperty( |
| $options, |
| 'lockFile', |
| array( $lockFile ) |
| ); |
| |
| $this->assertSetPropertyFails( |
| $options, |
| 'lockFile', |
| array( '/foo/bar/baz/test.lock', $this->tmp . '/foo/test.lock' ) |
| ); |
| } |
| |
| public function testSettingProperty() |
| { |
| $backend = new ezcWebdavMemoryBackend( true ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| ) ); |
| |
| $backend->setProperty( |
| '/foo', |
| new ezcWebdavDeadProperty( 'wcv:', 'ctime', '123456' ) |
| ); |
| |
| // Expected properties |
| $propertyStorage = new ezcWebdavBasicPropertyStorage(); |
| $propertyStorage->attach( |
| new ezcWebdavCreationDateProperty( new ezcWebdavDateTime( '@1054034820' ) ) |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavDisplayNameProperty( 'foo' ) |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetContentLanguageProperty( array( 'en' ) ) |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetContentTypeProperty( 'application/octet-stream' ) |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetEtagProperty( md5( '/foo' ) ) |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetLastModifiedProperty( new ezcWebdavDateTime( '@1124118780' ) ) |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetContentLengthProperty( '3' ) |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavResourceTypeProperty( |
| ezcWebdavResourceTypeProperty::TYPE_RESSOURCE |
| ) |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavDeadProperty( 'wcv:', 'ctime', '123456' ) |
| ); |
| |
| $props = $this->readAttribute( $backend, 'props' ); |
| $this->assertEquals( |
| $propertyStorage, |
| $props['/foo'], |
| 'Expected filled property array.' |
| ); |
| } |
| |
| public function testSettingPropertyOnUnknownRessource() |
| { |
| $backend = new ezcWebdavMemoryBackend( true ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| ) ); |
| |
| $this->assertFalse( |
| $backend->setProperty( |
| '/bar', |
| new ezcWebdavDeadProperty( 'wcv:', 'ctime', '123456' ) |
| ), |
| 'Setting on unknown ressource sould return false.' |
| ); |
| } |
| |
| public function testResourceHead() |
| { |
| if ( version_compare( PHP_VERSION, '5.2.6', '<' ) ) |
| { |
| $this->markTestSkipped( 'PHP DateTime broken in versions < 5.2.6' ); |
| return; |
| } |
| |
| $backend = new ezcWebdavMemoryBackend(); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavHeadRequest( '/foo' ); |
| $request->validateHeaders(); |
| $response = $backend->head( $request ); |
| |
| $expectedResponse = new ezcWebdavHeadResponse( |
| new ezcWebdavResource( |
| '/foo', $backend->initializeProperties( '/foo' ) |
| ) |
| ); |
| $expectedResponse->setHeader( 'ETag', '1effb2475fcfba4f9e8b8a1dbc8f3caf' ); |
| |
| $this->assertEquals( |
| $expectedResponse, |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testCollectionHead() |
| { |
| if ( version_compare( PHP_VERSION, '5.2.6', '<' ) ) |
| { |
| $this->markTestSkipped( 'PHP DateTime broken in versions < 5.2.6' ); |
| return; |
| } |
| |
| $backend = new ezcWebdavMemoryBackend(); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavHeadRequest( '/bar' ); |
| $request->validateHeaders(); |
| $response = $backend->head( $request ); |
| |
| $expectedResponse = new ezcWebdavHeadResponse( |
| new ezcWebdavCollection( |
| '/bar', $backend->initializeProperties( '/bar', true ) |
| ) |
| ); |
| $expectedResponse->setHeader( 'ETag', '6a764eebfa109a9ef76c113f3f608c6b' ); |
| |
| $this->assertEquals( |
| $expectedResponse, |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testResourceHeadError() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavHeadRequest( '/unknown' ); |
| $request->validateHeaders(); |
| $response = $backend->head( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavErrorResponse( |
| ezcWebdavResponse::STATUS_404, |
| '/unknown' |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testResourceGet() |
| { |
| if ( version_compare( PHP_VERSION, '5.2.6', '<' ) ) |
| { |
| $this->markTestSkipped( 'PHP DateTime broken in versions < 5.2.6' ); |
| return; |
| } |
| |
| $backend = new ezcWebdavMemoryBackend(); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavGetRequest( '/foo' ); |
| $request->validateHeaders(); |
| $response = $backend->get( $request ); |
| |
| $expectedResponse = new ezcWebdavGetResourceResponse( |
| new ezcWebdavResource( |
| '/foo', $backend->initializeProperties( '/foo' ), 'bar' |
| ) |
| ); |
| $expectedResponse->setHeader( 'ETag', '1effb2475fcfba4f9e8b8a1dbc8f3caf' ); |
| |
| $this->assertEquals( |
| $expectedResponse, |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testResourceGetError() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavGetRequest( '/unknown' ); |
| $request->validateHeaders(); |
| $response = $backend->get( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavErrorResponse( |
| ezcWebdavResponse::STATUS_404, |
| '/unknown' |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testResourceGetWithProperties() |
| { |
| if ( version_compare( PHP_VERSION, '5.2.6', '<' ) ) |
| { |
| $this->markTestSkipped( 'PHP DateTime broken in versions < 5.2.6' ); |
| return; |
| } |
| |
| $backend = new ezcWebdavMemoryBackend( true ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| // Expected properties |
| $propertyStorage = new ezcWebdavBasicPropertyStorage(); |
| $propertyStorage->attach( |
| new ezcWebdavCreationDateProperty( new ezcWebdavDateTime( '@1054034820' ) ) |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavDisplayNameProperty( 'foo' ) |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetContentLanguageProperty( array( 'en' ) ) |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetContentTypeProperty( 'application/octet-stream' ) |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetEtagProperty( md5( '/foo' ) ) |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetLastModifiedProperty( new ezcWebdavDateTime( '@1124118780' ) ) |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetContentLengthProperty( '3' ) |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavResourceTypeProperty( |
| ezcWebdavResourceTypeProperty::TYPE_RESSOURCE |
| ) |
| ); |
| |
| $request = new ezcWebdavGetRequest( '/foo' ); |
| $request->validateHeaders(); |
| $response = $backend->get( $request ); |
| |
| $expectedResponse = new ezcWebdavGetResourceResponse( |
| new ezcWebdavResource( |
| '/foo', |
| $propertyStorage, |
| 'bar' |
| ) |
| ); |
| $expectedResponse->setHeader( 'ETag', '1effb2475fcfba4f9e8b8a1dbc8f3caf' ); |
| |
| $this->assertEquals( |
| $expectedResponse, |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testCollectionGet() |
| { |
| if ( version_compare( PHP_VERSION, '5.2.6', '<' ) ) |
| { |
| $this->markTestSkipped( 'PHP DateTime broken in versions < 5.2.6' ); |
| return; |
| } |
| |
| $backend = new ezcWebdavMemoryBackend(); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| 'blah' => array( |
| 'fumdiidudel.txt' => 'Willst du an \'was Rundes denken, denk\' an einen Plastikball. Willst du \'was gesundes schenken, schenke einen Plastikball. Plastikball, Plastikball, ...', |
| ), |
| ) |
| ) ); |
| |
| $request = new ezcWebdavGetRequest( '/bar' ); |
| $request->validateHeaders(); |
| $response = $backend->get( $request ); |
| |
| $expectedResponse = new ezcWebdavGetCollectionResponse( |
| new ezcWebdavCollection( |
| '/bar', $backend->initializeProperties( '/bar', true ), array( |
| new ezcWebdavResource( |
| '/bar/blubb' |
| ), |
| new ezcWebdavCollection( |
| '/bar/blah' |
| ), |
| ) |
| ) |
| ); |
| $expectedResponse->setHeader( 'ETag', '6a764eebfa109a9ef76c113f3f608c6b' ); |
| |
| $this->assertEquals( |
| $expectedResponse, |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testResourceDeepGet() |
| { |
| if ( version_compare( PHP_VERSION, '5.2.6', '<' ) ) |
| { |
| $this->markTestSkipped( 'PHP DateTime broken in versions < 5.2.6' ); |
| return; |
| } |
| |
| $backend = new ezcWebdavMemoryBackend(); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| 'blah' => array( |
| 'fumdiidudel.txt' => 'Willst du an \'was Rundes denken, denk\' an einen Plastikball. Willst du \'was gesundes schenken, schenke einen Plastikball. Plastikball, Plastikball, ...', |
| ), |
| ) |
| ) ); |
| |
| $request = new ezcWebdavGetRequest( '/bar/blah/fumdiidudel.txt' ); |
| $request->validateHeaders(); |
| $response = $backend->get( $request ); |
| |
| $expectedResponse = new ezcWebdavGetResourceResponse( |
| new ezcWebdavResource( |
| '/bar/blah/fumdiidudel.txt', |
| $backend->initializeProperties( '/bar/blah/fumdiidudel.txt' ), |
| 'Willst du an \'was Rundes denken, denk\' an einen Plastikball. Willst du \'was gesundes schenken, schenke einen Plastikball. Plastikball, Plastikball, ...' |
| ) |
| ); |
| $expectedResponse->setHeader( 'ETag', '1c4cc7ffb86ee1feec13f05fb667e806' ); |
| |
| $this->assertEquals( |
| $expectedResponse, |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testResourceCopy() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavCopyRequest( '/foo', '/dest' ); |
| $request->validateHeaders(); |
| $response = $backend->copy( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavCopyResponse( |
| false |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| |
| $this->assertNotSame( |
| $backend->getAllProperties( '/foo' ), |
| $backend->getAllProperties( '/dest' ), |
| 'Properties not cloned on copy.' |
| ); |
| } |
| |
| public function testResourceCopyUpdateLiveProps() |
| { |
| $backend = new ezcWebdavMemoryBackend( true ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $this->assertEquals( |
| 'foo', |
| $backend->getAllProperties( '/foo' )->get( 'displayname', 'DAV:' )->displayName |
| ); |
| |
| $request = new ezcWebdavCopyRequest( '/foo', '/dest' ); |
| $request->validateHeaders(); |
| $response = $backend->copy( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavCopyResponse( |
| false |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| |
| $this->assertEquals( |
| 'dest', |
| $backend->getAllProperties( '/dest' )->get( 'displayname', 'DAV:' )->displayName |
| ); |
| } |
| |
| public function testResourceCopyError() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavCopyRequest( '/unknown', '/irrelevant' ); |
| $request->validateHeaders(); |
| $response = $backend->copy( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavErrorResponse( |
| ezcWebdavResponse::STATUS_404, |
| '/unknown' |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testResourceCopyF() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavCopyRequest( '/foo', '/dest' ); |
| $request->setHeader( 'Overwrite', 'F' ); |
| $request->validateHeaders(); |
| $response = $backend->copy( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavCopyResponse( |
| false |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testResourceCopyOverwrite() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavCopyRequest( '/foo', '/bar' ); |
| $request->validateHeaders(); |
| $response = $backend->copy( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavCopyResponse( |
| true |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testResourceCopyOverwriteFailed() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavCopyRequest( '/foo', '/bar' ); |
| $request->setHeader( 'Overwrite', 'F' ); |
| $request->validateHeaders(); |
| $response = $backend->copy( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavErrorResponse( |
| ezcWebdavResponse::STATUS_412, |
| '/bar' |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testResourceCopyDestinationNotExisting() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavCopyRequest( '/foo', '/dum/di' ); |
| $request->validateHeaders(); |
| $response = $backend->copy( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavErrorResponse( |
| ezcWebdavResponse::STATUS_409, |
| '/dum/di' |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testResourceCopySourceEqualsDest() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavCopyRequest( '/foo', '/foo' ); |
| $request->validateHeaders(); |
| $response = $backend->copy( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavErrorResponse( |
| ezcWebdavResponse::STATUS_403, |
| '/foo' |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testResourceCopyDepthZero() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'bar' => array( |
| '_1' => 'contents', |
| '_2' => 'contents', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavCopyRequest( '/bar', '/foo' ); |
| $request->setHeader( 'Depth', ezcWebdavRequest::DEPTH_ZERO ); |
| $request->validateHeaders(); |
| $response = $backend->copy( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavCopyResponse( |
| false |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| |
| $content = $this->readAttribute( $backend, 'content' ); |
| $this->assertEquals( |
| array( |
| '/' => array( |
| '/bar', |
| '/foo', |
| ), |
| '/bar' => array( |
| '/bar/_1', |
| '/bar/_2', |
| ), |
| '/bar/_1' => 'contents', |
| '/bar/_2' => 'contents', |
| '/foo' => array(), |
| ), |
| $content |
| ); |
| } |
| |
| public function testResourceCopyDepthInfinity() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'bar' => array( |
| '_1' => 'contents', |
| '_2' => 'contents', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavCopyRequest( '/bar', '/foo' ); |
| $request->setHeader( 'Depth', ezcWebdavRequest::DEPTH_INFINITY ); |
| $request->validateHeaders(); |
| $response = $backend->copy( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavCopyResponse( |
| false |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| |
| $content = $this->readAttribute( $backend, 'content' ); |
| $this->assertEquals( |
| array( |
| '/' => array( |
| '/bar', |
| '/foo', |
| ), |
| '/bar' => array( |
| '/bar/_1', |
| '/bar/_2', |
| ), |
| '/bar/_1' => 'contents', |
| '/bar/_2' => 'contents', |
| '/foo' => array( |
| '/foo/_1', |
| '/foo/_2', |
| ), |
| '/foo/_1' => 'contents', |
| '/foo/_2' => 'contents', |
| ), |
| $content |
| ); |
| } |
| |
| public function testResourceCopyDepthInfinityErrors() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'bar' => array( |
| '_1' => 'contents', |
| '_2' => 'contents', |
| '_3' => 'contents', |
| '_4' => 'contents', |
| '_5' => 'contents', |
| ) |
| ) ); |
| |
| $backend->options->failingOperations = ezcWebdavMemoryBackendOptions::REQUEST_COPY; |
| $backend->options->failForRegexp = '(_[24]$)'; |
| |
| $request = new ezcWebdavCopyRequest( '/bar', '/foo' ); |
| $request->setHeader( 'Depth', ezcWebdavRequest::DEPTH_INFINITY ); |
| $request->validateHeaders(); |
| $response = $backend->copy( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavMultistatusResponse( |
| new ezcWebdavErrorResponse( |
| ezcWebdavResponse::STATUS_423, |
| '/bar/_2' |
| ), |
| new ezcWebdavErrorResponse( |
| ezcWebdavResponse::STATUS_423, |
| '/bar/_4' |
| ) |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| |
| $content = $this->readAttribute( $backend, 'content' ); |
| $this->assertEquals( |
| array( |
| '/' => array( |
| '/bar', |
| '/foo', |
| ), |
| '/bar' => array( |
| '/bar/_1', |
| '/bar/_2', |
| '/bar/_3', |
| '/bar/_4', |
| '/bar/_5', |
| ), |
| '/bar/_1' => 'contents', |
| '/bar/_2' => 'contents', |
| '/bar/_3' => 'contents', |
| '/bar/_4' => 'contents', |
| '/bar/_5' => 'contents', |
| '/foo' => array( |
| '/foo/_1', |
| '/foo/_3', |
| '/foo/_5', |
| ), |
| '/foo/_1' => 'contents', |
| '/foo/_3' => 'contents', |
| '/foo/_5' => 'contents', |
| ), |
| $content |
| ); |
| } |
| |
| public function testResourceMove() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavMoveRequest( '/foo', '/dest' ); |
| $request->validateHeaders(); |
| $response = $backend->move( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavMoveResponse( |
| false |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testResourceMoveError() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavMoveRequest( '/unknown', '/irrelevant' ); |
| $request->validateHeaders(); |
| $response = $backend->move( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavErrorResponse( |
| ezcWebdavResponse::STATUS_404, |
| '/unknown' |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testResourceMoveF() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavMoveRequest( '/foo', '/dest' ); |
| $request->setHeader( 'Overwrite', 'F' ); |
| $request->validateHeaders(); |
| $response = $backend->move( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavMoveResponse( |
| false |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testResourceMoveOverwrite() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavMoveRequest( '/foo', '/bar' ); |
| $request->validateHeaders(); |
| $response = $backend->move( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavMoveResponse( |
| true |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testResourceMoveOverwriteFailed() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavMoveRequest( '/foo', '/bar' ); |
| $request->setHeader( 'Overwrite', 'F' ); |
| $request->validateHeaders(); |
| $response = $backend->move( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavErrorResponse( |
| ezcWebdavResponse::STATUS_412, |
| '/bar' |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testResourceMoveDestinationNotExisting() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavMoveRequest( '/foo', '/dum/di' ); |
| $request->validateHeaders(); |
| $response = $backend->move( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavErrorResponse( |
| ezcWebdavResponse::STATUS_409, |
| '/dum/di' |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testResourceMoveSourceEqualsDest() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavMoveRequest( '/foo', '/foo' ); |
| $request->validateHeaders(); |
| $response = $backend->move( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavErrorResponse( |
| ezcWebdavResponse::STATUS_403, |
| '/foo' |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testResourceMoveDepthInfinity() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'bar' => array( |
| '_1' => 'contents', |
| '_2' => 'contents', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavMoveRequest( '/bar', '/foo' ); |
| $request->setHeader( 'Depth', ezcWebdavRequest::DEPTH_INFINITY ); |
| $request->validateHeaders(); |
| $response = $backend->move( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavMoveResponse( |
| false |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| |
| $content = $this->readAttribute( $backend, 'content' ); |
| $this->assertEquals( |
| array( |
| '/' => array( |
| '/foo', |
| ), |
| '/foo' => array( |
| '/foo/_1', |
| '/foo/_2', |
| ), |
| '/foo/_1' => 'contents', |
| '/foo/_2' => 'contents', |
| ), |
| $content |
| ); |
| } |
| |
| public function testResourceMoveDepthInfinityErrors() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'bar' => array( |
| '_1' => 'contents', |
| '_2' => 'contents', |
| '_3' => 'contents', |
| '_4' => 'contents', |
| '_5' => 'contents', |
| ) |
| ) ); |
| |
| $backend->options->failingOperations = ezcWebdavMemoryBackendOptions::REQUEST_COPY; |
| $backend->options->failForRegexp = '(_[24]$)'; |
| |
| $request = new ezcWebdavMoveRequest( '/bar', '/foo' ); |
| $request->setHeader( 'Depth', ezcWebdavRequest::DEPTH_INFINITY ); |
| $request->validateHeaders(); |
| $response = $backend->move( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavMultistatusResponse( |
| new ezcWebdavErrorResponse( |
| ezcWebdavResponse::STATUS_423, |
| '/bar/_2' |
| ), |
| new ezcWebdavErrorResponse( |
| ezcWebdavResponse::STATUS_423, |
| '/bar/_4' |
| ) |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| |
| $content = $this->readAttribute( $backend, 'content' ); |
| $this->assertEquals( |
| array( |
| '/' => array( |
| '/bar', |
| '/foo', |
| ), |
| '/bar' => array( |
| '/bar/_1', |
| '/bar/_2', |
| '/bar/_3', |
| '/bar/_4', |
| '/bar/_5', |
| ), |
| '/bar/_1' => 'contents', |
| '/bar/_2' => 'contents', |
| '/bar/_3' => 'contents', |
| '/bar/_4' => 'contents', |
| '/bar/_5' => 'contents', |
| '/foo' => array( |
| '/foo/_1', |
| '/foo/_3', |
| '/foo/_5', |
| ), |
| '/foo/_1' => 'contents', |
| '/foo/_3' => 'contents', |
| '/foo/_5' => 'contents', |
| ), |
| $content |
| ); |
| } |
| |
| public function testResourceDelete() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavDeleteRequest( '/foo' ); |
| $request->validateHeaders(); |
| $response = $backend->delete( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavDeleteResponse( |
| '/foo' |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| |
| $content = $this->readAttribute( $backend, 'content' ); |
| $this->assertEquals( |
| array( |
| '/' => array( |
| '/bar', |
| ), |
| '/bar' => array( |
| '/bar/blubb', |
| ), |
| '/bar/blubb' => 'Somme blubb blubbs.', |
| ), |
| $content |
| ); |
| } |
| |
| public function testCollectionDelete() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavDeleteRequest( '/bar' ); |
| $request->validateHeaders(); |
| $response = $backend->delete( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavDeleteResponse( |
| '/bar' |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| |
| $content = $this->readAttribute( $backend, 'content' ); |
| $this->assertEquals( |
| array( |
| '/' => array( |
| '/foo', |
| ), |
| '/foo' => 'bar', |
| ), |
| $content |
| ); |
| } |
| |
| public function testResourceDeleteError404() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavDeleteRequest( '/unknown' ); |
| $request->validateHeaders(); |
| $response = $backend->delete( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavErrorResponse( |
| ezcWebdavResponse::STATUS_404, |
| '/unknown' |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testResourceDeleteCausedError() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $backend->options->failingOperations = ezcWebdavMemoryBackendOptions::REQUEST_DELETE; |
| $backend->options->failForRegexp = '(foo)'; |
| |
| $request = new ezcWebdavDeleteRequest( '/foo' ); |
| $request->validateHeaders(); |
| $response = $backend->delete( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavMultistatusResponse( |
| array( |
| new ezcWebdavErrorResponse( |
| ezcWebdavResponse::STATUS_423, |
| '/foo' |
| ), |
| ) |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| |
| $content = $this->readAttribute( $backend, 'content' ); |
| $this->assertEquals( |
| array( |
| '/' => array( |
| '/foo', |
| '/bar', |
| ), |
| '/foo' => 'bar', |
| '/bar' => array( |
| '/bar/blubb', |
| ), |
| '/bar/blubb' => 'Somme blubb blubbs.', |
| ), |
| $content |
| ); |
| } |
| |
| public function testMakeCollectionOnExistingCollection() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavMakeCollectionRequest( '/bar' ); |
| $request->validateHeaders(); |
| $response = $backend->makeCollection( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavErrorResponse( |
| ezcWebdavResponse::STATUS_405, |
| '/bar' |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testMakeCollectionOnExistingRessource() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavMakeCollectionRequest( '/foo' ); |
| $request->validateHeaders(); |
| $response = $backend->makeCollection( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavErrorResponse( |
| ezcWebdavResponse::STATUS_405, |
| '/foo' |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testMakeCollectionMissingParent() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavMakeCollectionRequest( '/dum/di' ); |
| $request->validateHeaders(); |
| $response = $backend->makeCollection( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavErrorResponse( |
| ezcWebdavResponse::STATUS_409, |
| '/dum/di' |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testMakeCollectionInRessource() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavMakeCollectionRequest( '/foo/bar' ); |
| $request->validateHeaders(); |
| $response = $backend->makeCollection( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavErrorResponse( |
| ezcWebdavResponse::STATUS_403, |
| '/foo/bar' |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testMakeCollectionWithRequestBody() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavMakeCollectionRequest( '/bar/foo', 'with request body' ); |
| $request->validateHeaders(); |
| $response = $backend->makeCollection( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavErrorResponse( |
| ezcWebdavResponse::STATUS_415, |
| '/bar/foo' |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testMakeCollection() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavMakeCollectionRequest( '/bar/foo' ); |
| $request->validateHeaders(); |
| $response = $backend->makeCollection( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavMakeCollectionResponse( |
| '/bar/foo' |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| |
| $content = $this->readAttribute( $backend, 'content' ); |
| $this->assertEquals( |
| array( |
| '/' => array( |
| '/foo', |
| '/bar', |
| ), |
| '/foo' => 'bar', |
| '/bar' => array( |
| '/bar/blubb', |
| '/bar/foo', |
| ), |
| '/bar/blubb' => 'Somme blubb blubbs.', |
| '/bar/foo' => array(), |
| ), |
| $content |
| ); |
| } |
| |
| public function testMakeCollectionWithSpaces() |
| { |
| $backend = new ezcWebdavMemoryBackend( true ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavMakeCollectionRequest( '/bar/collection%20with%20spaces' ); |
| $request->validateHeaders(); |
| $response = $backend->makeCollection( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavMakeCollectionResponse( |
| '/bar/collection%20with%20spaces' |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| |
| $content = $this->readAttribute( $backend, 'content' ); |
| $this->assertEquals( |
| array( |
| '/' => array( |
| '/foo', |
| '/bar', |
| ), |
| '/foo' => 'bar', |
| '/bar' => array( |
| '/bar/blubb', |
| '/bar/collection%20with%20spaces', |
| ), |
| '/bar/blubb' => 'Somme blubb blubbs.', |
| '/bar/collection%20with%20spaces' => array(), |
| ), |
| $content |
| ); |
| |
| $this->assertEquals( |
| 'collection with spaces', |
| $backend->getAllProperties( '/bar/collection%20with%20spaces' )->get( 'displayname', 'DAV:' )->displayName |
| ); |
| } |
| |
| public function testPutOnExistingCollection() |
| { |
| if ( version_compare( PHP_VERSION, '5.2.6', '<' ) ) |
| { |
| $this->markTestSkipped( 'PHP DateTime broken in versions < 5.2.6' ); |
| return; |
| } |
| |
| $backend = new ezcWebdavMemoryBackend(); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavPutRequest( '/bar', 'some content' ); |
| $request->setHeader( 'Content-Type', 'text/plain' ); |
| $request->setHeader( 'Content-Length', strlen( $request->body ) ); |
| $request->validateHeaders(); |
| $response = $backend->put( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavErrorResponse( |
| ezcWebdavResponse::STATUS_409, |
| '/bar' |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testPutMissingParent() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavPutRequest( '/dum/di', 'some content' ); |
| $request->setHeader( 'Content-Type', 'text/plain' ); |
| $request->setHeader( 'Content-Length', strlen( $request->body ) ); |
| $request->validateHeaders(); |
| $response = $backend->put( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavErrorResponse( |
| ezcWebdavResponse::STATUS_409, |
| '/dum/di' |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testPutInRessource() |
| { |
| $backend = new ezcWebdavMemoryBackend( false ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavPutRequest( '/foo/bar', 'some content' ); |
| $request->setHeader( 'Content-Type', 'text/plain' ); |
| $request->setHeader( 'Content-Length', strlen( $request->body ) ); |
| $request->validateHeaders(); |
| $response = $backend->put( $request ); |
| |
| $this->assertEquals( |
| new ezcWebdavErrorResponse( |
| ezcWebdavResponse::STATUS_409, |
| '/foo/bar' |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testPut() |
| { |
| if ( version_compare( PHP_VERSION, '5.2.6', '<' ) ) |
| { |
| $this->markTestSkipped( 'PHP DateTime broken in versions < 5.2.6' ); |
| return; |
| } |
| |
| $backend = new ezcWebdavMemoryBackend(); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavPutRequest( '/bar/foo', 'some content' ); |
| $request->setHeader( 'Content-Type', 'text/plain' ); |
| $request->setHeader( 'Content-Length', strlen( $request->body ) ); |
| $request->validateHeaders(); |
| $response = $backend->put( $request ); |
| |
| $expectedResponse = new ezcWebdavPutResponse( |
| '/bar/foo' |
| ); |
| $expectedResponse->setHeader( 'ETag', 'e5bb98b3adcbc2496f67c8917c44191f' ); |
| |
| $this->assertEquals( |
| $expectedResponse, |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| |
| $content = $this->readAttribute( $backend, 'content' ); |
| $this->assertEquals( |
| array( |
| '/' => array( |
| '/foo', |
| '/bar', |
| ), |
| '/foo' => 'bar', |
| '/bar' => array( |
| '/bar/blubb', |
| '/bar/foo', |
| ), |
| '/bar/blubb' => 'Somme blubb blubbs.', |
| '/bar/foo' => 'some content', |
| ), |
| $content |
| ); |
| } |
| |
| public function testPutOnExistingRessource() |
| { |
| if ( version_compare( PHP_VERSION, '5.2.6', '<' ) ) |
| { |
| $this->markTestSkipped( 'PHP DateTime broken in versions < 5.2.6' ); |
| return; |
| } |
| |
| $backend = new ezcWebdavMemoryBackend(); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavPutRequest( '/foo', 'some content' ); |
| $request->setHeader( 'Content-Type', 'text/plain' ); |
| $request->setHeader( 'Content-Length', strlen( $request->body ) ); |
| $request->validateHeaders(); |
| $response = $backend->put( $request ); |
| |
| $expectedResponse = new ezcWebdavPutResponse( |
| '/foo' |
| ); |
| $expectedResponse->setHeader( 'ETag', '1effb2475fcfba4f9e8b8a1dbc8f3caf' ); |
| |
| $this->assertEquals( |
| $expectedResponse, |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| |
| $content = $this->readAttribute( $backend, 'content' ); |
| $this->assertEquals( |
| array( |
| '/' => array( |
| '/foo', |
| '/bar', |
| ), |
| '/foo' => 'some content', |
| '/bar' => array( |
| '/bar/blubb', |
| ), |
| '/bar/blubb' => 'Somme blubb blubbs.', |
| ), |
| $content |
| ); |
| } |
| |
| public function testPropFindOnResource() |
| { |
| $backend = new ezcWebdavMemoryBackend( true ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $requestedProperties = new ezcWebdavBasicPropertyStorage(); |
| $requestedProperties->attach( |
| $prop1 = new ezcWebdavGetLastModifiedProperty() |
| ); |
| $requestedProperties->attach( |
| $prop2 = new ezcWebdavGetContentLengthProperty() |
| ); |
| $requestedProperties->attach( |
| $prop3 = new ezcWebdavDeadProperty( 'http://apache.org/dav/props/', 'executable' ) |
| ); |
| |
| $request = new ezcWebdavPropFindRequest( '/foo' ); |
| $request->prop = $requestedProperties; |
| $request->validateHeaders(); |
| |
| $response = $backend->propfind( $request ); |
| |
| $prop200 = new ezcWebdavBasicPropertyStorage(); |
| $prop1->date = new ezcWebdavDateTime( '@1124118780' ); |
| $prop200->attach( $prop1 ); |
| $prop2->length = '3'; |
| $prop200->attach( $prop2 ); |
| $prop200->rewind(); |
| |
| $prop404 = new ezcWebdavBasicPropertyStorage(); |
| $prop404->attach( $prop3 ); |
| $prop404->rewind(); |
| |
| $expectedResponse = new ezcWebdavMultistatusResponse( |
| new ezcWebdavPropFindResponse( |
| new ezcWebdavResource( '/foo' ), |
| array( |
| new ezcWebdavPropStatResponse( |
| $prop200 |
| ), |
| new ezcWebdavPropStatResponse( |
| $prop404, |
| ezcWebdavResponse::STATUS_404 |
| ), |
| ) |
| ) |
| ); |
| |
| $this->assertEquals( |
| $expectedResponse, |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testPropFindOnCollection() |
| { |
| $backend = new ezcWebdavMemoryBackend( true ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $requestedProperties = new ezcWebdavBasicPropertyStorage(); |
| $requestedProperties->attach( |
| $prop1 = new ezcWebdavGetLastModifiedProperty() |
| ); |
| $requestedProperties->attach( |
| $prop2 = new ezcWebdavGetContentLengthProperty() |
| ); |
| $requestedProperties->attach( |
| $prop3 = new ezcWebdavDeadProperty( 'http://apache.org/dav/props/', 'executable' ) |
| ); |
| |
| $request = new ezcWebdavPropFindRequest( '/bar' ); |
| $request->prop = $requestedProperties; |
| $request->validateHeaders(); |
| $response = $backend->propfind( $request ); |
| |
| $prop200c = new ezcWebdavBasicPropertyStorage(); |
| $prop1c = clone $prop1; |
| $prop1c->date = new ezcWebdavDateTime( '@1124118780' ); |
| $prop200c->attach( $prop1c ); |
| $prop2c = clone $prop2; |
| $prop2c->length = '4096'; |
| $prop200c->attach( $prop2c ); |
| |
| $prop404c = new ezcWebdavBasicPropertyStorage(); |
| $prop404c->attach( $prop3 ); |
| |
| $prop200r = new ezcWebdavBasicPropertyStorage(); |
| $prop1r = clone $prop1; |
| $prop1r->date = new ezcWebdavDateTime( '@1124118780' ); |
| $prop200r->attach( $prop1r ); |
| $prop2r = clone $prop2; |
| $prop2r->length = '19'; |
| $prop200r->attach( $prop2r ); |
| |
| $prop404r = new ezcWebdavBasicPropertyStorage(); |
| $prop404r->attach( $prop3 ); |
| |
| $expectedResponse = new ezcWebdavMultistatusResponse( |
| new ezcWebdavPropFindResponse( |
| new ezcWebdavCollection( '/bar' ), |
| array( |
| new ezcWebdavPropStatResponse( |
| $prop200c |
| ), |
| new ezcWebdavPropStatResponse( |
| $prop404c, |
| ezcWebdavResponse::STATUS_404 |
| ), |
| ) |
| ), |
| new ezcWebdavPropFindResponse( |
| new ezcWebdavResource( '/bar/blubb' ), |
| array( |
| new ezcWebdavPropStatResponse( |
| $prop200r |
| ), |
| new ezcWebdavPropStatResponse( |
| $prop404r, |
| ezcWebdavResponse::STATUS_404 |
| ), |
| ) |
| ) |
| ); |
| |
| $prop200c->rewind(); |
| $prop404c->rewind(); |
| $prop200r->rewind(); |
| $prop404r->rewind(); |
| |
| $this->assertEquals( |
| $expectedResponse, |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testPropFindNamesOnResource() |
| { |
| $backend = new ezcWebdavMemoryBackend( true ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavPropFindRequest( '/foo' ); |
| $request->propName = true; |
| $request->validateHeaders(); |
| $response = $backend->propfind( $request ); |
| |
| $propertyStorage = new ezcWebdavBasicPropertyStorage(); |
| $propertyStorage->attach( |
| new ezcWebdavCreationDateProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavDisplayNameProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetContentLanguageProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetContentTypeProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetEtagProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetLastModifiedProperty() |
| ); |
| $propertyStorage->attach( |
| $test = new ezcWebdavGetContentLengthProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavResourceTypeProperty() |
| ); |
| |
| $expectedResponse = new ezcWebdavMultistatusResponse( |
| new ezcWebdavPropFindResponse( |
| new ezcWebdavResource( '/foo' ), |
| array( |
| new ezcWebdavPropStatResponse( |
| $propertyStorage |
| ), |
| ) |
| ) |
| ); |
| |
| $this->assertEquals( |
| $expectedResponse, |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testPropFindNamesOnCollection() |
| { |
| $backend = new ezcWebdavMemoryBackend( true ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavPropFindRequest( '/bar' ); |
| $request->propName = true; |
| $request->validateHeaders(); |
| $response = $backend->propfind( $request ); |
| |
| $propertyStorage = new ezcWebdavBasicPropertyStorage(); |
| $propertyStorage->attach( |
| new ezcWebdavCreationDateProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavDisplayNameProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetContentLanguageProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetContentTypeProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetEtagProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetLastModifiedProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetContentLengthProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavResourceTypeProperty() |
| ); |
| |
| $expectedResponse = new ezcWebdavMultistatusResponse( |
| new ezcWebdavPropFindResponse( |
| new ezcWebdavCollection( '/bar' ), |
| array( |
| new ezcWebdavPropStatResponse( |
| $propertyStorage |
| ), |
| ) |
| ), |
| new ezcWebdavPropFindResponse( |
| new ezcWebdavResource( '/bar/blubb' ), |
| array( |
| new ezcWebdavPropStatResponse( |
| $propertyStorage |
| ), |
| ) |
| ) |
| ); |
| |
| $this->assertEquals( |
| $expectedResponse, |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testPropFindNamesOnCollectionDepthZero() |
| { |
| $backend = new ezcWebdavMemoryBackend( true ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blah' => array( |
| 'dum' => array( |
| 'di' => 'blah blah', |
| ), |
| ), |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavPropFindRequest( '/bar' ); |
| $request->propName = true; |
| $request->setHeader( 'Depth', ezcWebdavRequest::DEPTH_ZERO ); |
| $request->validateHeaders(); |
| $response = $backend->propfind( $request ); |
| |
| $propertyStorage = new ezcWebdavBasicPropertyStorage(); |
| $propertyStorage->attach( |
| new ezcWebdavCreationDateProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavDisplayNameProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetContentLanguageProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetContentTypeProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetEtagProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetLastModifiedProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetContentLengthProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavResourceTypeProperty() |
| ); |
| |
| $expectedResponse = new ezcWebdavMultistatusResponse( |
| new ezcWebdavPropFindResponse( |
| new ezcWebdavCollection( '/bar' ), |
| array( |
| new ezcWebdavPropStatResponse( |
| $propertyStorage |
| ), |
| ) |
| ) |
| ); |
| |
| $this->assertEquals( |
| $expectedResponse, |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testPropFindNamesOnCollectionDepthOne() |
| { |
| $backend = new ezcWebdavMemoryBackend( true ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blah' => array( |
| 'dum' => array( |
| 'di' => 'blah blah', |
| ), |
| ), |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavPropFindRequest( '/bar' ); |
| $request->propName = true; |
| $request->setHeader( 'Depth', ezcWebdavRequest::DEPTH_ONE ); |
| $request->validateHeaders(); |
| $response = $backend->propfind( $request ); |
| |
| $propertyStorage = new ezcWebdavBasicPropertyStorage(); |
| $propertyStorage->attach( |
| new ezcWebdavCreationDateProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavDisplayNameProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetContentLanguageProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetContentTypeProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetEtagProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetLastModifiedProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetContentLengthProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavResourceTypeProperty() |
| ); |
| |
| $expectedResponse = new ezcWebdavMultistatusResponse( |
| new ezcWebdavPropFindResponse( |
| new ezcWebdavCollection( '/bar' ), |
| array( |
| new ezcWebdavPropStatResponse( |
| $propertyStorage |
| ), |
| ) |
| ), |
| new ezcWebdavPropFindResponse( |
| new ezcWebdavCollection( '/bar/blah' ), |
| array( |
| new ezcWebdavPropStatResponse( |
| $propertyStorage |
| ), |
| ) |
| ), |
| new ezcWebdavPropFindResponse( |
| new ezcWebdavResource( '/bar/blubb' ), |
| array( |
| new ezcWebdavPropStatResponse( |
| $propertyStorage |
| ), |
| ) |
| ) |
| ); |
| |
| $this->assertEquals( |
| $expectedResponse, |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testPropFindNamesOnCollectionDepthInfinite() |
| { |
| $backend = new ezcWebdavMemoryBackend( true ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blah' => array( |
| 'dum' => array( |
| 'di' => 'blah blah', |
| ), |
| ), |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavPropFindRequest( '/bar' ); |
| $request->propName = true; |
| $request->setHeader( 'Depth', ezcWebdavRequest::DEPTH_INFINITY ); |
| $request->validateHeaders(); |
| $response = $backend->propfind( $request ); |
| |
| $propertyStorage = new ezcWebdavBasicPropertyStorage(); |
| $propertyStorage->attach( |
| new ezcWebdavCreationDateProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavDisplayNameProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetContentLanguageProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetContentTypeProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetEtagProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetLastModifiedProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetContentLengthProperty() |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavResourceTypeProperty() |
| ); |
| |
| $expectedResponse = new ezcWebdavMultistatusResponse( |
| new ezcWebdavPropFindResponse( |
| new ezcWebdavCollection( '/bar' ), |
| array( |
| new ezcWebdavPropStatResponse( |
| $propertyStorage |
| ), |
| ) |
| ), |
| new ezcWebdavPropFindResponse( |
| new ezcWebdavCollection( '/bar/blah' ), |
| array( |
| new ezcWebdavPropStatResponse( |
| $propertyStorage |
| ), |
| ) |
| ), |
| new ezcWebdavPropFindResponse( |
| new ezcWebdavResource( '/bar/blubb' ), |
| array( |
| new ezcWebdavPropStatResponse( |
| $propertyStorage |
| ), |
| ) |
| ), |
| new ezcWebdavPropFindResponse( |
| new ezcWebdavCollection( '/bar/blah/dum' ), |
| array( |
| new ezcWebdavPropStatResponse( |
| $propertyStorage |
| ), |
| ) |
| ), |
| new ezcWebdavPropFindResponse( |
| new ezcWebdavResource( '/bar/blah/dum/di' ), |
| array( |
| new ezcWebdavPropStatResponse( |
| $propertyStorage |
| ), |
| ) |
| ) |
| ); |
| |
| $this->assertEquals( |
| $expectedResponse, |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testPropFindAllPropsOnResource() |
| { |
| $backend = new ezcWebdavMemoryBackend( true ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavPropFindRequest( '/foo' ); |
| $request->allProp = true; |
| $request->validateHeaders(); |
| $response = $backend->propfind( $request ); |
| |
| $propertyStorage = new ezcWebdavBasicPropertyStorage(); |
| $propertyStorage->attach( |
| new ezcWebdavCreationDateProperty( new ezcWebdavDateTime( '@1054034820' ) ) |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavDisplayNameProperty( 'foo' ) |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetContentLanguageProperty( array( 'en' ) ) |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetContentTypeProperty( 'application/octet-stream' ) |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetEtagProperty( md5( '/foo' ) ) |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetLastModifiedProperty( new ezcWebdavDateTime( '@1124118780' ) ) |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavGetContentLengthProperty( '3' ) |
| ); |
| $propertyStorage->attach( |
| new ezcWebdavResourceTypeProperty( |
| ezcWebdavResourceTypeProperty::TYPE_RESSOURCE |
| ) |
| ); |
| |
| $expectedResponse = new ezcWebdavMultistatusResponse( |
| new ezcWebdavPropFindResponse( |
| new ezcWebdavResource( '/foo' ), |
| array( |
| new ezcWebdavPropStatResponse( |
| $propertyStorage |
| ), |
| ) |
| ) |
| ); |
| |
| $this->assertEquals( |
| $expectedResponse, |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testPropFindAllPropsOnCollection() |
| { |
| $backend = new ezcWebdavMemoryBackend( true ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $request = new ezcWebdavPropFindRequest( '/bar' ); |
| $request->allProp = true; |
| $request->validateHeaders(); |
| $response = $backend->propfind( $request ); |
| |
| $propertyStorageC = new ezcWebdavBasicPropertyStorage(); |
| $propertyStorageC->attach( |
| new ezcWebdavCreationDateProperty( new ezcWebdavDateTime( '@1054034820' ) ) |
| ); |
| $propertyStorageC->attach( |
| new ezcWebdavDisplayNameProperty( 'bar' ) |
| ); |
| $propertyStorageC->attach( |
| new ezcWebdavGetContentLanguageProperty( array( 'en' ) ) |
| ); |
| $propertyStorageC->attach( |
| new ezcWebdavGetContentTypeProperty( 'httpd/unix-directory' ) |
| ); |
| $propertyStorageC->attach( |
| new ezcWebdavGetEtagProperty( md5( '/bar' ) ) |
| ); |
| $propertyStorageC->attach( |
| new ezcWebdavGetLastModifiedProperty( new ezcWebdavDateTime( '@1124118780' ) ) |
| ); |
| $propertyStorageC->attach( |
| new ezcWebdavGetContentLengthProperty( ezcWebdavGetContentLengthProperty::COLLECTION ) |
| ); |
| $propertyStorageC->attach( |
| new ezcWebdavResourceTypeProperty( |
| ezcWebdavResourceTypeProperty::TYPE_COLLECTION |
| ) |
| ); |
| |
| $propertyStorageR = new ezcWebdavBasicPropertyStorage(); |
| $propertyStorageR->attach( |
| new ezcWebdavCreationDateProperty( new ezcWebdavDateTime( '@1054034820' ) ) |
| ); |
| $propertyStorageR->attach( |
| new ezcWebdavDisplayNameProperty( 'blubb' ) |
| ); |
| $propertyStorageR->attach( |
| new ezcWebdavGetContentLanguageProperty( array( 'en' ) ) |
| ); |
| $propertyStorageR->attach( |
| new ezcWebdavGetContentTypeProperty( 'application/octet-stream' ) |
| ); |
| $propertyStorageR->attach( |
| new ezcWebdavGetEtagProperty( md5( '/bar/blubb' ) ) |
| ); |
| $propertyStorageR->attach( |
| new ezcWebdavGetLastModifiedProperty( new ezcWebdavDateTime( '@1124118780' ) ) |
| ); |
| $propertyStorageR->attach( |
| new ezcWebdavGetContentLengthProperty( '19' ) |
| ); |
| $propertyStorageR->attach( |
| new ezcWebdavResourceTypeProperty( |
| ezcWebdavResourceTypeProperty::TYPE_RESSOURCE |
| ) |
| ); |
| |
| $expectedResponse = new ezcWebdavMultistatusResponse( |
| new ezcWebdavPropFindResponse( |
| new ezcWebdavCollection( '/bar' ), |
| array( |
| new ezcWebdavPropStatResponse( |
| $propertyStorageC |
| ), |
| ) |
| ), |
| new ezcWebdavPropFindResponse( |
| new ezcWebdavResource( '/bar/blubb' ), |
| array( |
| new ezcWebdavPropStatResponse( |
| $propertyStorageR |
| ), |
| ) |
| ) |
| ); |
| |
| $this->assertEquals( |
| $expectedResponse, |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testPropPatchAddProperty() |
| { |
| $backend = new ezcWebdavMemoryBackend( true ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| $newProperties = new ezcWebdavFlaggedPropertyStorage(); |
| $newProperties->attach( $p1 = new ezcWebdavDeadProperty( |
| 'foo:', 'bar', 'some content' |
| ), ezcWebdavPropPatchRequest::SET ); |
| $newProperties->attach( $p2 = new ezcWebdavDeadProperty( |
| 'foo:', 'blubb', 'some other content' |
| ), ezcWebdavPropPatchRequest::SET ); |
| |
| $addedProperties = new ezcWebdavBasicPropertyStorage(); |
| $addedProperties->attach( $p1 ); |
| $addedProperties->attach( $p2 ); |
| |
| $request = new ezcWebdavPropPatchRequest( '/foo' ); |
| $request->updates = $newProperties; |
| $request->validateHeaders(); |
| $response = $backend->proppatch( $request ); |
| |
| $resProps = new ezcWebdavBasicPropertyStorage(); |
| $resProps->attach( new ezcWebdavDeadProperty( 'foo:', 'bar' ) ); |
| $resProps->attach( new ezcWebdavDeadProperty( 'foo:', 'blubb' ) ); |
| |
| $this->assertEquals( |
| new ezcWebdavPropPatchResponse( |
| new ezcWebdavResource( '/foo' ), |
| new ezcWebdavPropStatResponse( $resProps ) |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| |
| $request = new ezcWebdavPropFindRequest( '/foo' ); |
| $request->prop = $newProperties; |
| $request->validateHeaders(); |
| $response = $backend->propfind( $request ); |
| |
| $addedProperties->rewind(); |
| $expectedResponse = new ezcWebdavMultistatusResponse( |
| new ezcWebdavPropFindResponse( |
| new ezcWebdavResource( '/foo' ), |
| new ezcWebdavPropStatResponse( |
| $addedProperties |
| ) |
| ) |
| ); |
| |
| $this->assertEquals( |
| $expectedResponse, |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testPropPatchAddPropertyFail() |
| { |
| $backend = new ezcWebdavMemoryBackend( true ); |
| $backend->options->failingOperations = ezcWebdavMemoryBackendOptions::REQUEST_PROPPATCH; |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| // Add properties, but cause errors |
| $newProperties = new ezcWebdavFlaggedPropertyStorage(); |
| $newProperties->attach( $p_bar = new ezcWebdavDeadProperty( |
| 'foo:', 'bar', 'some content' |
| ), ezcWebdavPropPatchRequest::SET ); |
| $newProperties->attach( $p_blubb = new ezcWebdavDeadProperty( |
| 'foo:', 'blubb', 'some other content' |
| ), ezcWebdavPropPatchRequest::SET ); |
| $newProperties->attach( $p_blah = new ezcWebdavDeadProperty( |
| 'foo:', 'blah', 'evn more content' |
| ), ezcWebdavPropPatchRequest::SET ); |
| |
| $addedProperties = new ezcWebdavBasicPropertyStorage(); |
| $addedProperties->attach( $p_bar ); |
| $addedProperties->attach( $p_blubb ); |
| $addedProperties->attach( $p_blah ); |
| |
| $request = new ezcWebdavPropPatchRequest( '/foo' ); |
| $request->updates = $newProperties; |
| $request->validateHeaders(); |
| $response = $backend->proppatch( $request ); |
| |
| // We expect the first to fail "normally". |
| $failed = new ezcWebdavBasicPropertyStorage(); |
| $failed->attach( $p_bar ); |
| $failed->rewind(); |
| |
| // All other will cause dep errors. |
| $depError = new ezcWebdavBasicPropertyStorage(); |
| $depError->attach( $p_blubb ); |
| $depError->attach( $p_blah ); |
| $depError->rewind(); |
| |
| $this->assertEquals( |
| new ezcWebdavMultistatusResponse( |
| new ezcWebdavPropPatchResponse( |
| new ezcWebdavResource( '/foo' ), |
| new ezcWebdavPropStatResponse( |
| $failed, |
| ezcWebdavResponse::STATUS_403 |
| ), |
| new ezcWebdavPropStatResponse( |
| new ezcWebdavBasicPropertyStorage, |
| ezcWebdavResponse::STATUS_409 |
| ), |
| new ezcWebdavPropStatResponse( |
| $depError, |
| ezcWebdavResponse::STATUS_424 |
| ) |
| ) |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| |
| // Verfify that none of the properties has been added. |
| $request = new ezcWebdavPropFindRequest( '/foo' ); |
| $request->prop = $newProperties; |
| $request->validateHeaders(); |
| $response = $backend->propfind( $request ); |
| |
| $addedProperties->rewind(); |
| $expectedResponse = new ezcWebdavMultistatusResponse( |
| new ezcWebdavPropFindResponse( |
| new ezcWebdavResource( '/foo' ), |
| new ezcWebdavPropStatResponse( |
| $addedProperties, |
| ezcWebdavResponse::STATUS_404 |
| ) |
| ) |
| ); |
| |
| $this->assertEquals( |
| $expectedResponse, |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testPropPatchRemoveProperty() |
| { |
| $backend = new ezcWebdavMemoryBackend( true ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| // First add some custom properties. |
| $newProperties = new ezcWebdavFlaggedPropertyStorage(); |
| $newProperties->attach( $p_bar = new ezcWebdavDeadProperty( |
| 'foo:', 'bar', 'some content' |
| ), ezcWebdavPropPatchRequest::SET ); |
| $newProperties->attach( $p_blubb = new ezcWebdavDeadProperty( |
| 'foo:', 'blubb', 'some other content' |
| ), ezcWebdavPropPatchRequest::SET ); |
| |
| $request = new ezcWebdavPropPatchRequest( '/foo' ); |
| $request->updates = $newProperties; |
| $request->validateHeaders(); |
| $response = $backend->proppatch( $request ); |
| |
| $resProps = new ezcWebdavBasicPropertyStorage(); |
| $resProps->attach( new ezcWebdavDeadProperty( 'foo:', 'bar' ) ); |
| $resProps->attach( new ezcWebdavDeadProperty( 'foo:', 'blubb' ) ); |
| |
| $this->assertEquals( |
| new ezcWebdavPropPatchResponse( |
| new ezcWebdavResource( '/foo' ), |
| new ezcWebdavPropStatResponse( $resProps ) |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| |
| // Then remove one of them using proppatch |
| $removeProperties = new ezcWebdavFlaggedPropertyStorage(); |
| $removeProperties->attach( $p_blubb, ezcWebdavPropPatchRequest::REMOVE ); |
| |
| $removedProperties = new ezcWebdavBasicPropertyStorage(); |
| $removedProperties->attach( $p_blubb ); |
| |
| $request = new ezcWebdavPropPatchRequest( '/foo' ); |
| $request->updates = $removeProperties; |
| $request->validateHeaders(); |
| $response = $backend->proppatch( $request ); |
| |
| $resProps = new ezcWebdavBasicPropertyStorage(); |
| $resProps->attach( new ezcWebdavDeadProperty( 'foo:', 'blubb' ) ); |
| |
| $this->assertEquals( |
| new ezcWebdavPropPatchResponse( |
| new ezcWebdavResource( '/foo' ), |
| new ezcWebdavPropStatResponse( $resProps ) |
| ), |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| |
| // Ensure property has been deleted by requesting both, expecting a 404 |
| // for the removed property. |
| $leftProperties = new ezcWebdavBasicPropertyStorage(); |
| $leftProperties->attach( $p_bar ); |
| |
| $request = new ezcWebdavPropFindRequest( '/foo' ); |
| $request->prop = $newProperties; |
| $request->validateHeaders(); |
| $response = $backend->propfind( $request ); |
| |
| $leftProperties->rewind(); |
| $removedProperties->rewind(); |
| $expectedResponse = new ezcWebdavMultistatusResponse( |
| new ezcWebdavPropFindResponse( |
| new ezcWebdavResource( '/foo' ), |
| new ezcWebdavPropStatResponse( |
| $leftProperties |
| ), |
| new ezcWebdavPropStatResponse( |
| $removedProperties, |
| ezcWebdavResponse::STATUS_404 |
| ) |
| ) |
| ); |
| |
| $this->assertEquals( |
| $expectedResponse, |
| $response, |
| 'Expected response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testPropPatchFailOnRemoveProperty() |
| { |
| $backend = new ezcWebdavMemoryBackend( true ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| // First add some custom properties. |
| $newProperties = new ezcWebdavFlaggedPropertyStorage(); |
| $newProperties->attach( $p_bar = new ezcWebdavDeadProperty( |
| 'foo:', 'bar', 'some content' |
| ), ezcWebdavPropPatchRequest::SET ); |
| $newProperties->attach( $p_blubb = new ezcWebdavDeadProperty( |
| 'foo:', 'blubb', 'some other content' |
| ), ezcWebdavPropPatchRequest::SET ); |
| |
| $newProperties->rewind(); |
| |
| $request = new ezcWebdavPropPatchRequest( '/foo' ); |
| $request->updates = $newProperties; |
| $request->validateHeaders(); |
| $response = $backend->proppatch( $request ); |
| |
| $resProps = new ezcWebdavBasicPropertyStorage(); |
| $resProps->attach( new ezcWebdavDeadProperty( 'foo:', 'bar' ) ); |
| $resProps->attach( new ezcWebdavDeadProperty( 'foo:', 'blubb' ) ); |
| |
| $this->assertEquals( |
| new ezcWebdavPropPatchResponse( |
| new ezcWebdavResource( '/foo' ), |
| new ezcWebdavPropStatResponse( $resProps ) |
| ), |
| $response, |
| 'Expected property adding PROPPATCH response does not match real response.', |
| 0, |
| 20 |
| ); |
| |
| // Then remove them again, with one live property in the middle to |
| // check for proper failed dependency response codes. |
| $removeProperties = new ezcWebdavFlaggedPropertyStorage(); |
| $removeProperties->attach( $p_blubb, ezcWebdavPropPatchRequest::REMOVE ); |
| $removeProperties->attach( |
| $p_length = new ezcWebdavGetContentLengthProperty(), |
| ezcWebdavPropPatchRequest::REMOVE |
| ); |
| $removeProperties->attach( $p_bar, ezcWebdavPropPatchRequest::REMOVE ); |
| $removeProperties->attach( |
| $p_last = new ezcWebdavGetLastModifiedProperty(), |
| ezcWebdavPropPatchRequest::REMOVE |
| ); |
| |
| $request = new ezcWebdavPropPatchRequest( '/foo' ); |
| $request->updates = $removeProperties; |
| $request->validateHeaders(); |
| $response = $backend->proppatch( $request ); |
| |
| $failed = new ezcWebdavBasicPropertyStorage(); |
| $failed->attach( $p_length ); |
| |
| $depError = new ezcWebdavBasicPropertyStorage(); |
| $depError->attach( $p_bar ); |
| $depError->attach( $p_last ); |
| |
| $failed->rewind(); |
| $depError->rewind(); |
| $this->assertEquals( |
| new ezcWebdavMultistatusResponse( |
| new ezcWebdavPropPatchResponse( |
| new ezcWebdavResource( '/foo' ), |
| new ezcWebdavPropStatResponse( |
| $failed, |
| ezcWebdavResponse::STATUS_403 |
| ), |
| new ezcWebdavPropStatResponse( |
| new ezcWebdavBasicPropertyStorage, |
| ezcWebdavResponse::STATUS_409 |
| ), |
| new ezcWebdavPropStatResponse( |
| $depError, |
| ezcWebdavResponse::STATUS_424 |
| ) |
| ) |
| ), |
| $response, |
| 'Expected property removing PROPPATCH response does not match real response.', |
| 0, |
| 20 |
| ); |
| |
| // Ensure nothing has been removed, and the transactions has been |
| // properly reverted. |
| $leftProperties = new ezcWebdavBasicPropertyStorage(); |
| $leftProperties->attach( $p_bar ); |
| |
| $request = new ezcWebdavPropFindRequest( '/foo' ); |
| $request->prop = $removeProperties; |
| $request->validateHeaders(); |
| $response = $backend->propfind( $request ); |
| |
| $checkProperties = new ezcWebdavBasicPropertyStorage(); |
| $checkProperties->attach( |
| $p_last = new ezcWebdavGetLastModifiedProperty( new ezcWebdavDateTime( '@1124118780' ) ) |
| ); |
| $checkProperties->attach( |
| $p_length = new ezcWebdavGetContentLengthProperty( '3' ) |
| ); |
| $checkProperties->attach( $p_bar ); |
| $checkProperties->attach( $p_blubb ); |
| $checkProperties->rewind(); |
| |
| $expectedResponse = new ezcWebdavMultistatusResponse( |
| new ezcWebdavPropFindResponse( |
| new ezcWebdavResource( '/foo' ), |
| new ezcWebdavPropStatResponse( |
| $checkProperties |
| ) |
| ) |
| ); |
| |
| $this->assertEquals( |
| $expectedResponse, |
| $response, |
| 'Expected validating PROPFIND response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testPropPatchCombinedSetDelete() |
| { |
| $backend = new ezcWebdavMemoryBackend( true ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| // First add some custom properties. |
| $newProperties = new ezcWebdavFlaggedPropertyStorage(); |
| $newProperties->attach( $p_bar = new ezcWebdavDeadProperty( |
| 'foo:', 'bar', 'some content' |
| ), ezcWebdavPropPatchRequest::SET ); |
| $newProperties->attach( $p_blubb = new ezcWebdavDeadProperty( |
| 'foo:', 'blubb', 'some other content' |
| ), ezcWebdavPropPatchRequest::SET ); |
| |
| $request = new ezcWebdavPropPatchRequest( '/foo' ); |
| $request->updates = $newProperties; |
| $request->validateHeaders(); |
| $response = $backend->proppatch( $request ); |
| |
| $resProps = new ezcWebdavBasicPropertyStorage(); |
| $resProps->attach( new ezcWebdavDeadProperty( 'foo:', 'bar' ) ); |
| $resProps->attach( new ezcWebdavDeadProperty( 'foo:', 'blubb' ) ); |
| |
| $this->assertEquals( |
| new ezcWebdavPropPatchResponse( |
| new ezcWebdavResource( '/foo' ), |
| new ezcWebdavPropStatResponse( $resProps ) |
| ), |
| $response, |
| 'Expected property adding PROPPATCH response does not match real response.', |
| 0, |
| 20 |
| ); |
| |
| // Then remove them again, with one live property in the middle to |
| // check for proper failed dependency response codes. |
| $updateProperties = new ezcWebdavFlaggedPropertyStorage(); |
| $updateProperties->attach( $p_blubb, ezcWebdavPropPatchRequest::REMOVE ); |
| $updateProperties->attach( |
| $p_foo = new ezcWebdavDeadProperty( 'foo:', 'foo', 'random content' ), |
| ezcWebdavPropPatchRequest::SET |
| ); |
| $updateProperties->attach( $p_bar, ezcWebdavPropPatchRequest::REMOVE ); |
| |
| $request = new ezcWebdavPropPatchRequest( '/foo' ); |
| $request->updates = $updateProperties; |
| $request->validateHeaders(); |
| $response = $backend->proppatch( $request ); |
| |
| $resProps = new ezcWebdavBasicPropertyStorage(); |
| $resProps->attach( new ezcWebdavDeadProperty( 'foo:', 'blubb' ) ); |
| $resProps->attach( new ezcWebdavDeadProperty( 'foo:', 'foo' ) ); |
| $resProps->attach( new ezcWebdavDeadProperty( 'foo:', 'bar' ) ); |
| |
| $this->assertEquals( |
| new ezcWebdavPropPatchResponse( |
| new ezcWebdavResource( '/foo' ), |
| new ezcWebdavPropStatResponse( $resProps ) |
| ), |
| $response, |
| 'Expected property removing PROPPATCH response does not match real response.', |
| 0, |
| 20 |
| ); |
| |
| // Ensure nothing has been removed, and the transactions has been |
| // properly reverted. |
| $leftProperties = new ezcWebdavBasicPropertyStorage(); |
| $leftProperties->attach( $p_bar ); |
| |
| $request = new ezcWebdavPropFindRequest( '/foo' ); |
| $request->prop = $updateProperties; |
| $request->validateHeaders(); |
| $response = $backend->propfind( $request ); |
| |
| $failed = new ezcWebdavBasicPropertyStorage(); |
| $failed->attach( $p_blubb ); |
| $failed->attach( $p_bar ); |
| $failed->rewind(); |
| |
| $success = new ezcWebdavBasicPropertyStorage(); |
| $success->attach( $p_foo ); |
| $success->rewind(); |
| |
| $expectedResponse = new ezcWebdavMultistatusResponse( |
| new ezcWebdavPropFindResponse( |
| new ezcWebdavResource( '/foo' ), |
| new ezcWebdavPropStatResponse( |
| $success |
| ), |
| new ezcWebdavPropStatResponse( |
| $failed, |
| ezcWebdavResponse::STATUS_404 |
| ) |
| ) |
| ); |
| |
| $this->assertEquals( |
| $expectedResponse, |
| $response, |
| 'Expected validating PROPFIND response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testPropPatchCombinedSetDeleteFail() |
| { |
| $backend = new ezcWebdavMemoryBackend( true ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| // First add some custom properties. |
| $newProperties = new ezcWebdavFlaggedPropertyStorage(); |
| $newProperties->attach( $p_bar = new ezcWebdavDeadProperty( |
| 'foo:', 'bar', 'some content' |
| ), ezcWebdavPropPatchRequest::SET ); |
| $newProperties->attach( $p_blubb = new ezcWebdavDeadProperty( |
| 'foo:', 'blubb', 'some other content' |
| ), ezcWebdavPropPatchRequest::SET ); |
| |
| $request = new ezcWebdavPropPatchRequest( '/foo' ); |
| $request->updates = $newProperties; |
| $request->validateHeaders(); |
| $response = $backend->proppatch( $request ); |
| |
| $resProps = new ezcWebdavBasicPropertyStorage(); |
| $resProps->attach( new ezcWebdavDeadProperty( 'foo:', 'bar' ) ); |
| $resProps->attach( new ezcWebdavDeadProperty( 'foo:', 'blubb' ) ); |
| |
| $this->assertEquals( |
| new ezcWebdavPropPatchResponse( |
| new ezcWebdavResource( '/foo' ), |
| new ezcWebdavPropStatResponse( $resProps ) |
| ), |
| $response, |
| 'Expected property adding PROPPATCH response does not match real response.', |
| 0, |
| 20 |
| ); |
| |
| // Then remove them again, with one live property in the middle to |
| // check for proper failed dependency response codes. |
| $updateProperties = new ezcWebdavFlaggedPropertyStorage(); |
| $updateProperties->attach( $p_blubb, ezcWebdavPropPatchRequest::REMOVE ); |
| $updateProperties->attach( |
| $p_length = new ezcWebdavGetContentLengthProperty(), |
| ezcWebdavPropPatchRequest::REMOVE |
| ); |
| $updateProperties->attach( |
| $p_foo = new ezcWebdavDeadProperty( 'foo:', 'foo', 'random content' ), |
| ezcWebdavPropPatchRequest::SET |
| ); |
| $updateProperties->attach( $p_bar, ezcWebdavPropPatchRequest::REMOVE ); |
| |
| $request = new ezcWebdavPropPatchRequest( '/foo' ); |
| $request->updates = $updateProperties; |
| $request->validateHeaders(); |
| $response = $backend->proppatch( $request ); |
| |
| $failed = new ezcWebdavBasicPropertyStorage(); |
| $failed->attach( $p_length ); |
| |
| $depError = new ezcWebdavBasicPropertyStorage(); |
| $depError->attach( $p_foo ); |
| $depError->attach( $p_bar ); |
| |
| $failed->rewind(); |
| $depError->rewind(); |
| $this->assertEquals( |
| new ezcWebdavMultistatusResponse( |
| new ezcWebdavPropPatchResponse( |
| new ezcWebdavResource( '/foo' ), |
| new ezcWebdavPropStatResponse( |
| $failed, |
| ezcWebdavResponse::STATUS_403 |
| ), |
| new ezcWebdavPropStatResponse( |
| new ezcWebdavBasicPropertyStorage, |
| ezcWebdavResponse::STATUS_409 |
| ), |
| new ezcWebdavPropStatResponse( |
| $depError, |
| ezcWebdavResponse::STATUS_424 |
| ) |
| ) |
| ), |
| $response, |
| 'Expected property removing PROPPATCH response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testPropPatchCombinedSetDeleteValidationError() |
| { |
| $backend = new ezcWebdavMemoryBackend( true ); |
| $backend->addContents( array( |
| 'foo' => 'bar', |
| 'bar' => array( |
| 'blubb' => 'Somme blubb blubbs.', |
| ) |
| ) ); |
| |
| // First add some custom properties. |
| $newProperties = new ezcWebdavFlaggedPropertyStorage(); |
| $newProperties->attach( $p_bar = new ezcWebdavDeadProperty( |
| 'foo:', 'bar', 'some content' |
| ), ezcWebdavPropPatchRequest::SET ); |
| $newProperties->attach( $p_blubb = new ezcWebdavDeadProperty( |
| 'foo:', 'blubb', 'some other content' |
| ), ezcWebdavPropPatchRequest::SET ); |
| |
| $request = new ezcWebdavPropPatchRequest( '/foo' ); |
| $request->updates = $newProperties; |
| $request->validateHeaders(); |
| $response = $backend->proppatch( $request ); |
| |
| $resProps = new ezcWebdavBasicPropertyStorage(); |
| $resProps->attach( new ezcWebdavDeadProperty( 'foo:', 'bar' ) ); |
| $resProps->attach( new ezcWebdavDeadProperty( 'foo:', 'blubb' ) ); |
| |
| $this->assertEquals( |
| new ezcWebdavPropPatchResponse( |
| new ezcWebdavResource( '/foo' ), |
| new ezcWebdavPropStatResponse( $resProps ) |
| ), |
| $response, |
| 'Expected property adding PROPPATCH response does not match real response.', |
| 0, |
| 20 |
| ); |
| |
| // Then remove them again, with one live property in the middle to |
| // check for proper failed dependency response codes. |
| $updateProperties = new ezcWebdavFlaggedPropertyStorage(); |
| $updateProperties->attach( $p_blubb, ezcWebdavPropPatchRequest::REMOVE ); |
| $updateProperties->attach( |
| $p_length = new ezcWebdavGetContentLengthProperty(), |
| ezcWebdavPropPatchRequest::REMOVE |
| ); |
| |
| // Cause validation error |
| $p_length->length = 'not a number'; |
| |
| $updateProperties->attach( |
| $p_foo = new ezcWebdavDeadProperty( 'foo:', 'foo', 'random content' ), |
| ezcWebdavPropPatchRequest::SET |
| ); |
| $updateProperties->attach( $p_bar, ezcWebdavPropPatchRequest::REMOVE ); |
| |
| $request = new ezcWebdavPropPatchRequest( '/foo' ); |
| $request->updates = $updateProperties; |
| $request->validateHeaders(); |
| $response = $backend->proppatch( $request ); |
| |
| $failed = new ezcWebdavBasicPropertyStorage(); |
| $failed->attach( $p_length ); |
| |
| $depError = new ezcWebdavBasicPropertyStorage(); |
| $depError->attach( $p_foo ); |
| $depError->attach( $p_bar ); |
| |
| $failed->rewind(); |
| $depError->rewind(); |
| $this->assertEquals( |
| new ezcWebdavMultistatusResponse( |
| new ezcWebdavPropPatchResponse( |
| new ezcWebdavResource( '/foo' ), |
| new ezcWebdavPropStatResponse( |
| new ezcWebdavBasicPropertyStorage, |
| ezcWebdavResponse::STATUS_403 |
| ), |
| new ezcWebdavPropStatResponse( |
| $failed, |
| ezcWebdavResponse::STATUS_409 |
| ), |
| new ezcWebdavPropStatResponse( |
| $depError, |
| ezcWebdavResponse::STATUS_424 |
| ) |
| ) |
| ), |
| $response, |
| 'Expected property removing PROPPATCH response does not match real response.', |
| 0, |
| 20 |
| ); |
| } |
| |
| public function testLock() |
| { |
| $backend = new ezcWebdavMemoryBackend(); |
| $backend->options->lockFile = $this->tmp . 'backend.lock'; |
| |
| $backend->lock( 1000, 200000 ); |
| |
| $this->assertFileExists( |
| $backend->options->lockFile, |
| 'Lock file not created' |
| ); |
| |
| $backend->unlock(); |
| |
| $this->assertFileNotExists( |
| $backend->options->lockFile, |
| 'Lock file not removed.' |
| ); |
| } |
| } |
| |
| ?> |