From b412e59c2626ea8272c42834f309e04e110ea23b Mon Sep 17 00:00:00 2001 From: LEDfan Date: Sat, 6 Dec 2014 13:58:10 +0100 Subject: [PATCH 1/5] Fix permissions --- lib/private/contactsmanager.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/private/contactsmanager.php b/lib/private/contactsmanager.php index 737fc4f0e3..527b603ac3 100644 --- a/lib/private/contactsmanager.php +++ b/lib/private/contactsmanager.php @@ -63,10 +63,10 @@ namespace OC { } if ($addressBook->getPermissions() & \OCP\Constants::PERMISSION_DELETE) { - return null; + return $addressBook->delete($id); } - return $addressBook->delete($id); + return null; } /** @@ -84,10 +84,10 @@ namespace OC { } if ($addressBook->getPermissions() & \OCP\Constants::PERMISSION_CREATE) { - return null; + return $addressBook->createOrUpdate($properties); } - return $addressBook->createOrUpdate($properties); + return null; } /** From 88ad095cc797dd0590b1bceaa79447f67ce480c1 Mon Sep 17 00:00:00 2001 From: LEDfan Date: Sun, 7 Dec 2014 08:39:15 +0100 Subject: [PATCH 2/5] Add unit test for contactsmanager --- tests/lib/contactsmanager.php | 227 ++++++++++++++++++++++++++++++++++ 1 file changed, 227 insertions(+) create mode 100644 tests/lib/contactsmanager.php diff --git a/tests/lib/contactsmanager.php b/tests/lib/contactsmanager.php new file mode 100644 index 0000000000..1deeb818f0 --- /dev/null +++ b/tests/lib/contactsmanager.php @@ -0,0 +1,227 @@ +cm = new \OC\ContactsManager(); + } + + public function searchProvider(){ + $search1 = array( + 0 => array( + 'N' => array(0 => '', 1 => 'Jan', 2 => 'Jansen', 3 => '', 4 => '',), + 'UID' => '04ada7f5-01f9-4309-9c82-6b555b2170ed', + 'FN' => 'Jan Jansen', + 'id' => '1', + 'addressbook-key' => 'simple:1', + ), + 0 => array( + 'N' => array(0 => '', 1 => 'Tom', 2 => 'Peeters', 3 => '', 4 => '',), + 'UID' => '04ada7f5-01f9-4309-9c82-2345-2345--6b555b2170ed', + 'FN' => 'Tom Peeters', + 'id' => '2', + 'addressbook-key' => 'simple:1', + ), + ); + + $search2 = array( + 0 => array( + 'N' => array(0 => '', 1 => 'fg', 2 => '', 3 => '', 4 => '',), + 'UID' => '04ada234h5jh357f5-01f9-4309-9c82-6b555b2170ed', + 'FN' => 'Jan Rompuy', + 'id' => '1', + 'addressbook-key' => 'simple:2', + ), + 0 => array( + 'N' => array(0 => '', 1 => 'fg', 2 => '', 3 => '', 4 => '',), + 'UID' => '04ada7f5-01f9-4309-345kj345j9c82-2345-2345--6b555b2170ed', + 'FN' => 'Tim Peeters', + 'id' => '2', + 'addressbook-key' => 'simple:2', + ), + ); + + $expectedResult = array_merge($search1, $search2); + + return array( + array( + array( + new SimpleAddressbook('simple:1', 'Simeple Addressbook 1', $search1, \OCP\Constants::PERMISSION_ALL), + new SimpleAddressbook('simple:2', 'Simeple Addressbook 2', $search2, \OCP\Constants::PERMISSION_ALL), + ), + $expectedResult + ) + ); + } + + /** + * @dataProvider searchProvider + */ + public function testSearch(array $addressBooks,$expectedResult ){ + foreach ($addressBooks as $addressBook) { + $this->cm->registerAddressBook($addressBook); + } + $result = $this->cm->search(''); + $this->assertEquals($expectedResult, $result); + } + + + public function testDeleteHavePermission(){ + $addressbook = $this->getMockBuilder('SimpleAddressbook') + ->disableOriginalConstructor() + ->getMock(); + + $addressbook->expects($this->any()) + ->method('getPermissions') + ->willReturn(\OCP\Constants::PERMISSION_ALL); + + $addressbook->expects($this->once()) + ->method('delete') + ->willReturn('returnMe'); + + + $this->cm->registerAddressBook($addressbook); + $result = $this->cm->delete(1, $addressbook->getKey()); + $this->assertEquals($result, 'returnMe'); + } + + public function testDeleteNoPermission(){ + $addressbook = $this->getMockBuilder('SimpleAddressbook') + ->disableOriginalConstructor() + ->getMock(); + + $addressbook->expects($this->any()) + ->method('getPermissions') + ->willReturn(\OCP\Constants::PERMISSION_READ); + + $addressbook->expects($this->never()) + ->method('delete'); + + $this->cm->registerAddressBook($addressbook); + $result = $this->cm->delete(1, $addressbook->getKey()); + $this->assertEquals($result, null); + } + + public function testDeleteNoAddressbook(){ + $addressbook = $this->getMockBuilder('SimpleAddressbook') + ->disableOriginalConstructor() + ->getMock(); + + $addressbook->expects($this->never()) + ->method('delete'); + + $this->cm->registerAddressBook($addressbook); + $result = $this->cm->delete(1, 'noaddressbook'); + $this->assertEquals($result, null); + + } + + public function testCreateOrUpdateHavePermission(){ + $addressbook = $this->getMockBuilder('SimpleAddressbook') + ->disableOriginalConstructor() + ->getMock(); + + $addressbook->expects($this->any()) + ->method('getPermissions') + ->willReturn(\OCP\Constants::PERMISSION_ALL); + + $addressbook->expects($this->once()) + ->method('createOrUpdate') + ->willReturn('returnMe'); + + $this->cm->registerAddressBook($addressbook); + $result = $this->cm->createOrUpdate(array(), $addressbook->getKey()); + $this->assertEquals($result, 'returnMe'); + } + + public function testCreateOrUpdateNoPermission(){ + $addressbook = $this->getMockBuilder('SimpleAddressbook') + ->disableOriginalConstructor() + ->getMock(); + + $addressbook->expects($this->any()) + ->method('getPermissions') + ->willReturn(\OCP\Constants::PERMISSION_READ); + + $addressbook->expects($this->never()) + ->method('createOrUpdate'); + + $this->cm->registerAddressBook($addressbook); + $result = $this->cm->createOrUpdate(array(), $addressbook->getKey()); + $this->assertEquals($result, null); + + } + + public function testCreateOrUpdateNOAdressbook(){ + $addressbook = $this->getMockBuilder('SimpleAddressbook') + ->disableOriginalConstructor() + ->getMock(); + + $addressbook->expects($this->never()) + ->method('createOrUpdate'); + + $this->cm->registerAddressBook($addressbook); + $result = $this->cm->createOrUpdate(array(), 'noaddressbook'); + $this->assertEquals($result, null); + } + + public function testIsEnabledIfNot(){ + $result = $this->cm->isEnabled(); + $this->assertFalse($result); + } + + public function testIsEnabledIfSo(){ + $addressbook = $this->getMockBuilder('SimpleAddressbook') + ->disableOriginalConstructor() + ->getMock(); + + $this->cm->registerAddressBook($addressbook); + $result = $this->cm->isEnabled(); + $this->assertTrue($result); + } + + + + + + +} + + +class SimpleAddressbook implements \OCP\IAddressBook { + + public function __construct($key, $displayName, $contacts, $permissions){ + $this->key = $key; + $this->contacts = $contacts; + $this->displayName = $displayName; + $this->permissions = $permissions; + } + + + public function getKey(){ + return $this->key; + } + + public function getDisplayName(){ + return $this->displayName; + } + + public function search($pattern, $searchProperties, $options){ + return $this->contacts; + } + + public function createOrUpdate($properties){ + } + + public function getPermissions(){ + return $this->permissions; + } + + public function delete($id){ + } +} \ No newline at end of file From c05ff0965198c61068924e81d35cba3549452ce3 Mon Sep 17 00:00:00 2001 From: LEDfan Date: Sun, 7 Dec 2014 14:10:41 +0100 Subject: [PATCH 3/5] Use PHPUnit mocks --- config/config-mysql.php | 21 +++++++++++++ tests/lib/contactsmanager.php | 57 ++++++++++++++++++----------------- 2 files changed, 51 insertions(+), 27 deletions(-) create mode 100644 config/config-mysql.php diff --git a/config/config-mysql.php b/config/config-mysql.php new file mode 100644 index 0000000000..898dfb95b2 --- /dev/null +++ b/config/config-mysql.php @@ -0,0 +1,21 @@ + 'oclip61vhpsy', + 'passwordsalt' => 'M8h9O5EuS/tpqehZDb.C18yIBWd9HO', + 'secret' => 'rBz4iMuGwItwHf0qA9q5DeLG73NONGaRCztPQWUDSbjkqCj7', + 'trusted_domains' => + array ( + 0 => '33.33.33.33', + ), + 'datadirectory' => '/var/www/owncloud/data', + 'overwrite.cli.url' => 'http://33.33.33.33', + 'dbtype' => 'mysql', + 'version' => '7.8.1.0', + 'dbname' => 'owncloud', + 'dbhost' => 'localhost', + 'dbtableprefix' => 'oc_', + 'dbuser' => 'owncloud', + 'dbpassword' => 'random', + 'installed' => true, +); +define("DEBUG",1); \ No newline at end of file diff --git a/tests/lib/contactsmanager.php b/tests/lib/contactsmanager.php index 1deeb818f0..20341ea455 100644 --- a/tests/lib/contactsmanager.php +++ b/tests/lib/contactsmanager.php @@ -47,13 +47,10 @@ class Test_ContactsManager extends \Test\TestCase { ); $expectedResult = array_merge($search1, $search2); - return array( array( - array( - new SimpleAddressbook('simple:1', 'Simeple Addressbook 1', $search1, \OCP\Constants::PERMISSION_ALL), - new SimpleAddressbook('simple:2', 'Simeple Addressbook 2', $search2, \OCP\Constants::PERMISSION_ALL), - ), + $search1, + $search2, $expectedResult ) ); @@ -62,10 +59,34 @@ class Test_ContactsManager extends \Test\TestCase { /** * @dataProvider searchProvider */ - public function testSearch(array $addressBooks,$expectedResult ){ - foreach ($addressBooks as $addressBook) { - $this->cm->registerAddressBook($addressBook); - } + public function testSearch($search1, $search2, $expectedResult ){ + $addressbook1 = $this->getMockBuilder('SimpleAddressbook') + ->disableOriginalConstructor() + ->getMock(); + + $addressbook1->expects($this->once()) + ->method('search') + ->willReturn($search1); + + $addressbook1->expects($this->any()) + ->method('getKey') + ->willReturn('simple:1'); + + $addressbook2 = $this->getMockBuilder('SimpleAddressbook') + ->disableOriginalConstructor() + ->getMock(); + + $addressbook2->expects($this->once()) + ->method('search') + ->willReturn($search2); + + $addressbook2->expects($this->any()) + ->method('getKey') + ->willReturn('simple:2'); + + + $this->cm->registerAddressBook($addressbook1); + $this->cm->registerAddressBook($addressbook2); $result = $this->cm->search(''); $this->assertEquals($expectedResult, $result); } @@ -185,41 +206,23 @@ class Test_ContactsManager extends \Test\TestCase { $this->assertTrue($result); } - - - - - } - class SimpleAddressbook implements \OCP\IAddressBook { - public function __construct($key, $displayName, $contacts, $permissions){ - $this->key = $key; - $this->contacts = $contacts; - $this->displayName = $displayName; - $this->permissions = $permissions; - } - - public function getKey(){ - return $this->key; } public function getDisplayName(){ - return $this->displayName; } public function search($pattern, $searchProperties, $options){ - return $this->contacts; } public function createOrUpdate($properties){ } public function getPermissions(){ - return $this->permissions; } public function delete($id){ From 3d11e091d95a87bd4d85895b51bac69b349caa7f Mon Sep 17 00:00:00 2001 From: LEDfan Date: Mon, 8 Dec 2014 13:18:00 +0100 Subject: [PATCH 4/5] Mock interface --- tests/lib/contactsmanager.php | 39 ++++++++--------------------------- 1 file changed, 9 insertions(+), 30 deletions(-) diff --git a/tests/lib/contactsmanager.php b/tests/lib/contactsmanager.php index 20341ea455..39e44cc630 100644 --- a/tests/lib/contactsmanager.php +++ b/tests/lib/contactsmanager.php @@ -60,7 +60,7 @@ class Test_ContactsManager extends \Test\TestCase { * @dataProvider searchProvider */ public function testSearch($search1, $search2, $expectedResult ){ - $addressbook1 = $this->getMockBuilder('SimpleAddressbook') + $addressbook1 = $this->getMockBuilder('\OCP\IAddressBook') ->disableOriginalConstructor() ->getMock(); @@ -72,7 +72,7 @@ class Test_ContactsManager extends \Test\TestCase { ->method('getKey') ->willReturn('simple:1'); - $addressbook2 = $this->getMockBuilder('SimpleAddressbook') + $addressbook2 = $this->getMockBuilder('\OCP\IAddressBook') ->disableOriginalConstructor() ->getMock(); @@ -93,7 +93,7 @@ class Test_ContactsManager extends \Test\TestCase { public function testDeleteHavePermission(){ - $addressbook = $this->getMockBuilder('SimpleAddressbook') + $addressbook = $this->getMockBuilder('\OCP\IAddressBook') ->disableOriginalConstructor() ->getMock(); @@ -112,7 +112,7 @@ class Test_ContactsManager extends \Test\TestCase { } public function testDeleteNoPermission(){ - $addressbook = $this->getMockBuilder('SimpleAddressbook') + $addressbook = $this->getMockBuilder('\OCP\IAddressBook') ->disableOriginalConstructor() ->getMock(); @@ -129,7 +129,7 @@ class Test_ContactsManager extends \Test\TestCase { } public function testDeleteNoAddressbook(){ - $addressbook = $this->getMockBuilder('SimpleAddressbook') + $addressbook = $this->getMockBuilder('\OCP\IAddressBook') ->disableOriginalConstructor() ->getMock(); @@ -143,7 +143,7 @@ class Test_ContactsManager extends \Test\TestCase { } public function testCreateOrUpdateHavePermission(){ - $addressbook = $this->getMockBuilder('SimpleAddressbook') + $addressbook = $this->getMockBuilder('\OCP\IAddressBook') ->disableOriginalConstructor() ->getMock(); @@ -161,7 +161,7 @@ class Test_ContactsManager extends \Test\TestCase { } public function testCreateOrUpdateNoPermission(){ - $addressbook = $this->getMockBuilder('SimpleAddressbook') + $addressbook = $this->getMockBuilder('\OCP\IAddressBook') ->disableOriginalConstructor() ->getMock(); @@ -179,7 +179,7 @@ class Test_ContactsManager extends \Test\TestCase { } public function testCreateOrUpdateNOAdressbook(){ - $addressbook = $this->getMockBuilder('SimpleAddressbook') + $addressbook = $this->getMockBuilder('\OCP\IAddressBook') ->disableOriginalConstructor() ->getMock(); @@ -197,7 +197,7 @@ class Test_ContactsManager extends \Test\TestCase { } public function testIsEnabledIfSo(){ - $addressbook = $this->getMockBuilder('SimpleAddressbook') + $addressbook = $this->getMockBuilder('\OCP\IAddressBook') ->disableOriginalConstructor() ->getMock(); @@ -206,25 +206,4 @@ class Test_ContactsManager extends \Test\TestCase { $this->assertTrue($result); } -} - -class SimpleAddressbook implements \OCP\IAddressBook { - - public function getKey(){ - } - - public function getDisplayName(){ - } - - public function search($pattern, $searchProperties, $options){ - } - - public function createOrUpdate($properties){ - } - - public function getPermissions(){ - } - - public function delete($id){ - } } \ No newline at end of file From 94a176d4e8de9b1778910d26bda6c99ad9352c3b Mon Sep 17 00:00:00 2001 From: LEDfan Date: Mon, 8 Dec 2014 13:19:26 +0100 Subject: [PATCH 5/5] Remove config file --- config/config-mysql.php | 21 --------------------- 1 file changed, 21 deletions(-) delete mode 100644 config/config-mysql.php diff --git a/config/config-mysql.php b/config/config-mysql.php deleted file mode 100644 index 898dfb95b2..0000000000 --- a/config/config-mysql.php +++ /dev/null @@ -1,21 +0,0 @@ - 'oclip61vhpsy', - 'passwordsalt' => 'M8h9O5EuS/tpqehZDb.C18yIBWd9HO', - 'secret' => 'rBz4iMuGwItwHf0qA9q5DeLG73NONGaRCztPQWUDSbjkqCj7', - 'trusted_domains' => - array ( - 0 => '33.33.33.33', - ), - 'datadirectory' => '/var/www/owncloud/data', - 'overwrite.cli.url' => 'http://33.33.33.33', - 'dbtype' => 'mysql', - 'version' => '7.8.1.0', - 'dbname' => 'owncloud', - 'dbhost' => 'localhost', - 'dbtableprefix' => 'oc_', - 'dbuser' => 'owncloud', - 'dbpassword' => 'random', - 'installed' => true, -); -define("DEBUG",1); \ No newline at end of file