diff --git a/plugins/libkolab/tests/kolab_storage_folder.php b/plugins/libkolab/tests/kolab_storage_folder.php index 835e9c88..c2f91756 100644 --- a/plugins/libkolab/tests/kolab_storage_folder.php +++ b/plugins/libkolab/tests/kolab_storage_folder.php @@ -40,6 +40,21 @@ class kolab_storage_folder_test extends PHPUnit_Framework_TestCase if (!$authenticated) { throw new Exception('IMAP login failed for user ' . $rcmail->config->get('tests_username')); } + + // check for defult groupware folders and clear them + $imap = $rcmail->get_storage(); + $folders = $imap->list_folders('', '*'); + + foreach (array('Calendar','Contacts','Files','Tasks','Notes') as $folder) { + if (in_array($folder, $folders)) { + if (!$imap->clear_folder($folder)) { + throw new Exception("Failed to clear folder '$folder'"); + } + } + else { + throw new Exception("Default folder '$folder' doesn't exits in test user account"); + } + } } else { throw new Exception('Missing test account username/password in config-test.inc.php'); @@ -48,7 +63,7 @@ class kolab_storage_folder_test extends PHPUnit_Framework_TestCase kolab_storage::setup(); } - function test_folder_type_check() + function test_001_folder_type_check() { $folder = new kolab_storage_folder('Calendar', 'event', 'event.default'); $this->assertTrue($folder->valid); @@ -57,22 +72,13 @@ class kolab_storage_folder_test extends PHPUnit_Framework_TestCase $folder = new kolab_storage_folder('Calendar', 'event', 'mail'); $this->assertFalse($folder->valid); $this->assertEquals($folder->get_error(), kolab_storage::ERROR_INVALID_FOLDER); + + $folder = new kolab_storage_folder('INBOX'); + $this->assertFalse($folder->valid); + $this->assertEquals($folder->get_error(), kolab_storage::ERROR_INVALID_FOLDER); } - function test_get_resource_uri() - { - $rcmail = rcmail::get_instance(); - $foldername = 'Calendar'; - - $folder = new kolab_storage_folder($foldername, 'event', 'event.default'); - $this->assertEquals($folder->get_resource_uri(), sprintf('imap://%s@%s/%s', - urlencode($rcmail->config->get('tests_username')), - $rcmail->config->get('default_host'), - $foldername - )); - } - - function test_get_owner() + function test_002_get_owner() { $rcmail = rcmail::get_instance(); $folder = new kolab_storage_folder('Calendar', 'event', 'event'); @@ -89,7 +95,20 @@ class kolab_storage_folder_test extends PHPUnit_Framework_TestCase $this->assertEquals($folder->get_owner(true), 'major.tom' . $domain); } - function test_get_uid() + function test_003_get_resource_uri() + { + $rcmail = rcmail::get_instance(); + $foldername = 'Calendar'; + + $folder = new kolab_storage_folder($foldername, 'event', 'event.default'); + $this->assertEquals($folder->get_resource_uri(), sprintf('imap://%s@%s/%s', + urlencode($rcmail->config->get('tests_username')), + $rcmail->config->get('default_host'), + $foldername + )); + } + + function test_004_get_uid() { $rcmail = rcmail::get_instance(); $folder = new kolab_storage_folder('Doesnt-Exist', 'event', 'event'); @@ -99,4 +118,51 @@ class kolab_storage_folder_test extends PHPUnit_Framework_TestCase $this->assertEquals($folder->get_uid(), $uid1); $this->assertEquals($folder->get_error(), kolab_storage::ERROR_IMAP_CONN); } + + function test_005_subscribe() + { + $folder = new kolab_storage_folder('Contacts', 'contact'); + $this->assertTrue($folder->subscribe(true)); + $this->assertTrue($folder->is_subscribed()); + + $this->assertTrue($folder->subscribe(false)); + $this->assertFalse($folder->is_subscribed()); + + $folder->subscribe(true); + } + + function test_006_activate() + { + $folder = new kolab_storage_folder('Calendar', 'contact'); + $this->assertTrue($folder->activate(true)); + $this->assertTrue($folder->is_active()); + + $this->assertTrue($folder->activate(false)); + $this->assertFalse($folder->is_active()); + } + + function test_010_write_contacts() + { + $contacts = array( + 'name' => 'FN', + 'surname' => 'Last', + 'firstname' => 'First', + 'email' => array( + array('type' => 'home', 'address' => 'first.last@example.org'), + ), + ); + + $folder = new kolab_storage_folder('Contacts', 'contact'); + $saved = $folder->save($contact, 'contact'); + $this->assertTrue((bool)$saved); + } + + /** + * @depends test_010_write_contacts + */ + function test_011_list_contacts() + { + $folder = new kolab_storage_folder('Contacts', 'contact'); + $this->assertEquals($folder->count(), 1); + } }