/** * Sets up the fixture. * This method is called before a test is executed. * * @access protected */ protected function setUp() { $this->_account = Expressomail_Controller_Account::getInstance()->search()->getFirstRecord(); $this->_controller = Expressomail_Controller_Message::getInstance(); $this->_imap = Expressomail_Backend_ImapFactory::factory($this->_account); $this->_folder = $this->getFolder($this->_testFolderName); $this->_imap->selectFolder($this->_testFolderName); $this->_createdMessages = new Tinebase_Record_RecordSet('Expressomail_Model_Message'); }
/** * Sets up the fixture. * This method is called before a test is executed. * * @access protected */ protected function setUp() { // get (or create) test accout $this->_account = Expressomail_Controller_Account::getInstance()->search()->getFirstRecord(); // init controller and imap backend $this->_controller = Felamimail_Controller_Cache_Message::getInstance(); $this->_imap = Expressomail_Backend_ImapFactory::factory($this->_account); try { $this->_imap->createFolder($this->_testFolderName, '', $this->_account->delimiter); } catch (Zend_Mail_Storage_Exception $zmse) { // exists } $this->_imap->selectFolder($this->_testFolderName); // init folder cache and get INBOX //Expressomail_Controller_Cache_Folder::getInstance()->update($this->_account->getId()); $this->_folder = $this->_getFolder($this->_testFolderName); $this->_emailTestClass = new Expressomail_Controller_MessageTest(); $this->_emailTestClass->setup(); }
/** * test flag update */ public function testUpdateFlags() { $message = $this->_emailTestClass->messageTestHelper('multipart_mixed.eml', 'multipart/mixed'); // appended messages already have the SEEN flag $this->assertTrue(in_array(Zend_Mail_Storage::FLAG_SEEN, $message->flags), 'SEEN flag not found: ' . print_r($message->flags, TRUE)); // add another flag Felamimail_Controller_Message_Flags::getInstance()->addFlags($message, Zend_Mail_Storage::FLAG_ANSWERED); while (!isset($updatedFolder) || $updatedFolder->cache_status === Felamimail_Model_Folder::CACHE_STATUS_INCOMPLETE) { $updatedFolder = $this->_controller->updateCache($this->_folder, 30, 1); } $this->_imap->selectFolder($this->_folder->globalname); // clear/add flag on imap $this->_imap->clearFlags($message->messageuid, array(Zend_Mail_Storage::FLAG_SEEN)); $flagsToAdd = array(Zend_Mail_Storage::FLAG_FLAGGED, Zend_Mail_Storage::FLAG_DRAFT, Zend_Mail_Storage::FLAG_PASSED); try { $this->_imap->addFlags($message->messageuid, $flagsToAdd); } catch (Zend_Mail_Storage_Exception $zmse) { // some imap servers (dbmail, ...) do not support PASSED flag if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) { Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' ' . $zmse->getMessage()); } $this->_imap->addFlags($message->messageuid, array(Zend_Mail_Storage::FLAG_FLAGGED, Zend_Mail_Storage::FLAG_DRAFT)); } $updatedFolder = $this->_controller->updateFlags($updatedFolder); $this->_imap->selectFolder($updatedFolder->globalname); $cachedMessage = Felamimail_Controller_Message::getInstance()->get($message->getId()); $this->assertTrue(!in_array(Zend_Mail_Storage::FLAG_SEEN, $cachedMessage->flags), 'SEEN flag found: ' . print_r($cachedMessage->flags, TRUE)); $expectedFlags = array(Zend_Mail_Storage::FLAG_FLAGGED, Zend_Mail_Storage::FLAG_DRAFT, Zend_Mail_Storage::FLAG_ANSWERED); $this->assertEquals(3, count($cachedMessage->flags), 'found too many flags: ' . print_r($cachedMessage->flags, TRUE)); foreach ($expectedFlags as $expectedFlag) { $this->assertTrue(in_array($expectedFlag, $cachedMessage->flags), $expectedFlag . ' flag not found: ' . print_r($cachedMessage->flags, TRUE)); } $this->_controller->updateFlags($updatedFolder); $cachedMessageAgain = Felamimail_Controller_Message::getInstance()->get($message->getId()); // cached message should not have been updated again $this->assertEquals($cachedMessage->timestamp->__toString(), $cachedMessageAgain->timestamp->__toString()); }