diff --git a/lib/public/contacts.php b/lib/public/contacts.php index 36195ef9c2..d14806bd0c 100644 --- a/lib/public/contacts.php +++ b/lib/public/contacts.php @@ -67,7 +67,7 @@ namespace OC { /** * @return mixed */ - public function isReadOnly(); + public function getPermissions(); /** * @param $id @@ -129,7 +129,7 @@ namespace OCP { return null; $address_book = self::$address_books[$address_book_key]; - if ($address_book->isReadOnly()) + if ($address_book->getPermissions() & \OCP\PERMISSION_DELETE) return null; return $address_book->delete($id); @@ -149,7 +149,7 @@ namespace OCP { return null; $address_book = self::$address_books[$address_book_key]; - if ($address_book->isReadOnly()) + if ($address_book->getPermissions() & \OCP\PERMISSION_CREATE) return null; return $address_book->createOrUpdate($properties); @@ -190,9 +190,16 @@ namespace OCP { return $result; } + /** + * removes all registered address book instances + */ + public static function clear() { + self::$address_books = array(); + } + /** * @var \OC\IAddressBook[] which holds all registered address books */ private static $address_books = array(); } -} \ No newline at end of file +} diff --git a/tests/lib/public/contacts.php b/tests/lib/public/contacts.php new file mode 100644 index 0000000000..abe0e1f625 --- /dev/null +++ b/tests/lib/public/contacts.php @@ -0,0 +1,80 @@ +. + */ + +OC::autoload('OCP\Contacts'); + +class Test_Contacts extends PHPUnit_Framework_TestCase +{ + + public function setUp() { + + OCP\Contacts::clear(); + } + + public function tearDown() { + } + + public function testDisabledIfEmpty() { + // pretty simple + $this->assertFalse(OCP\Contacts::isEnabled()); + } + + public function testEnabledAfterRegister() { + // create mock for the addressbook + $stub = $this->getMock("SimpleAddressBook", array('getKey')); + + // we expect getKey to be called once + $stub->expects($this->once()) + ->method('getKey'); + + // not enabled before register + $this->assertFalse(OCP\Contacts::isEnabled()); + + // register the address book + OCP\Contacts::registerAddressBook($stub); + + // contacts api shall be enabled + $this->assertTrue(OCP\Contacts::isEnabled()); + } + + // + // TODO: test unregister + // + + public function testAddressBookEnumeration() { + // create mock for the addressbook + $stub = $this->getMock("SimpleAddressBook", array('getKey', 'getDisplayName')); + + // setup return for method calls + $stub->expects($this->any()) + ->method('getKey') + ->will($this->returnValue('SIMPLE_ADDRESS_BOOK')); + $stub->expects($this->any()) + ->method('getDisplayName') + ->will($this->returnValue('A very simple Addressbook')); + + // register the address book + OCP\Contacts::registerAddressBook($stub); + $all_books = OCP\Contacts::getAddressBooks(); + + $this->assertEquals(1, count($all_books)); + } +}