/** * Test Case: email from User to Contact and CC to another Contact and BCC archive. * Expected Behavior: Email is archived to both contact records. */ public function testCase6B() { EmailMessage::deleteAll(); $imapMessage = new ImapMessage(); $imapMessage->fromName = 'steve'; $imapMessage->fromEmail = self::$user->primaryEmail->emailAddress; $imapMessage->senderEmail = self::$user->primaryEmail->emailAddress; $imapMessage->to = array(array('name' => self::$contact1->firstName, 'email' => self::$contact1->primaryEmail->emailAddress)); $imapMessage->cc = array(array('name' => self::$contact2->firstName, 'email' => self::$contact2->primaryEmail->emailAddress)); $imapMessage->subject = "Test Email 6b"; $imapMessage->htmlBody = "<strong>Email</strong> from Steve 6b"; $imapMessage->textBody = "Email from Steve 6b"; $emailArchivingJob = new EmailArchivingJob(); $result = $emailArchivingJob->saveEmailMessage($imapMessage); $this->assertTrue($result); $emailMessages = EmailMessage::getAll(); $this->assertEquals(1, count($emailMessages)); $emailMessage = $emailMessages[0]; $this->assertEquals($imapMessage->subject, $emailMessage->subject); $this->assertEquals($imapMessage->textBody, trim($emailMessage->content->textContent)); $this->assertEquals($imapMessage->htmlBody, trim($emailMessage->content->htmlContent)); $this->assertEquals(self::$user->primaryEmail->emailAddress, $emailMessage->sender->fromAddress); $this->assertEquals(2, count($emailMessage->recipients)); $this->assertEquals(self::$contact1->primaryEmail->emailAddress, $emailMessage->recipients[0]->toAddress); $this->assertEquals(EmailMessageRecipient::TYPE_TO, $emailMessage->recipients[0]->type); $this->assertEquals(self::$contact2->primaryEmail->emailAddress, $emailMessage->recipients[1]->toAddress); $this->assertEquals(EmailMessageRecipient::TYPE_CC, $emailMessage->recipients[1]->type); $this->assertEquals(EmailFolder::TYPE_ARCHIVED, $emailMessage->folder->type); }
/** * Check if only new messages are pulled from dropdown * Also check case if message will be matched with user/contact/account primary email * * @depends testRunCaseFour */ public function testRunCaseFive() { $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; $user = User::getByUsername('steve'); Yii::app()->imap->connect(); ContactTestHelper::createContactByNameForOwner('contact', $user); $contacts = Contact::getByName('contact contactson'); $contacts[0]->primaryEmail->emailAddress = Yii::app()->params['emailTestAccounts']['testEmailAddress']; $this->assertTrue($contacts[0]->save()); AccountTestHelper::createAccountByNameForOwner('account', $user); $accounts = Account::getByName('account'); $accounts[0]->primaryEmail->emailAddress = Yii::app()->params['emailTestAccounts']['testEmailAddress']; $this->assertTrue($accounts[0]->save()); $john = User::getByUsername('john'); $john->primaryEmail->emailAddress = Yii::app()->params['emailTestAccounts']['testEmailAddress']; $this->assertTrue($john->save()); EmailMessage::deleteAll(); Yii::app()->imap->deleteMessages(true); // Check if there are no emails in dropbox $job = new EmailArchivingJob(); $this->assertTrue($job->run()); $this->assertEquals(0, EmailMessage::getCount()); $imapStats = Yii::app()->imap->getMessageBoxStatsDetailed(); $this->assertEquals(0, $imapStats->Nmsgs); //Now user send email to another user, and to dropbox $pathToFiles = Yii::getPathOfAlias('application.modules.emailMessages.tests.unit.files'); Yii::app()->emailHelper->sendRawEmail("Email from Steve 3", $user->primaryEmail->emailAddress, array(Yii::app()->params['emailTestAccounts']['testEmailAddress']), 'Email from Steve', '<strong>Email</strong> from Steve', null, array(Yii::app()->imap->imapUsername), null, self::$userMailer); sleep(30); $job = new EmailArchivingJob(); $this->assertTrue($job->run()); $imapStats = Yii::app()->imap->getMessageBoxStatsDetailed(); $this->assertEquals(0, $imapStats->Nmsgs); $this->assertEquals(2, EmailMessage::getCount()); $emailMessages = EmailMessage::getAll(); $emailMessage = $emailMessages[1]; $this->assertEquals('Email from Steve 3', $emailMessage->subject); $this->assertEquals('Email from Steve', trim($emailMessage->content->textContent)); $this->assertEquals('<!-- zurmo css inline --><strong>Email</strong> from Steve', preg_replace("/\r|\n/", "", $emailMessage->content->htmlContent)); $this->assertEquals($user->primaryEmail->emailAddress, $emailMessage->sender->fromAddress); $this->assertEquals(1, count($emailMessage->recipients)); $recipient = $emailMessage->recipients[0]; $this->assertCount(3, $recipient->personsOrAccounts); $this->assertEquals($recipient->toAddress, Yii::app()->params['emailTestAccounts']['testEmailAddress']); $this->assertEquals(EmailMessageRecipient::TYPE_TO, $recipient->type); $this->assertEquals(EmailFolder::TYPE_ARCHIVED, $emailMessage->folder->type); $job = new EmailArchivingJob(); $this->assertTrue($job->run()); $imapStats = Yii::app()->imap->getMessageBoxStatsDetailed(); $this->assertEquals(0, $imapStats->Nmsgs); $this->assertEquals(2, EmailMessage::getCount()); $this->assertEquals(1, Notification::getCountByTypeAndUser('EmailMessageArchivingEmailAddressNotMatching', $user)); }
/** * Check if only new messages are pulled from dropdown * Also check case if message will be matched with user primary email * * @depends testRunCaseFour */ public function testRunCaseFive() { if (!EmailMessageTestHelper::isSetEmailAccountsTestConfiguration()) { $this->markTestSkipped(Zurmo::t('EmailMessagesModule', 'Test email settings are not configured in perInstanceTest.php file.')); } $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; $user = User::getByUsername('steve'); Yii::app()->imap->connect(); $john = User::getByUsername('john'); $john->primaryEmail->emailAddress = Yii::app()->params['emailTestAccounts']['testEmailAddress']; $this->assertTrue($john->save()); $messages = EmailMessage::getAll(); foreach ($messages as $message) { $message->delete(); } Yii::app()->imap->deleteMessages(true); // Check if there are no emails in dropbox $job = new EmailArchivingJob(); $this->assertTrue($job->run()); $this->assertEquals(0, count(EmailMessage::getAll())); $imapStats = Yii::app()->imap->getMessageBoxStatsDetailed(); $this->assertEquals(0, $imapStats->Nmsgs); //Now user send email to another user, and to dropbox $pathToFiles = Yii::getPathOfAlias('application.modules.emailMessages.tests.unit.files'); Yii::app()->emailHelper->sendRawEmail("Email from Steve 3", $user->primaryEmail->emailAddress, array(Yii::app()->params['emailTestAccounts']['testEmailAddress']), 'Email from Steve', '<strong>Email</strong> from Steve', null, array(Yii::app()->imap->imapUsername), null, self::$userMailer); sleep(30); $job = new EmailArchivingJob(); $this->assertTrue($job->run()); $imapStats = Yii::app()->imap->getMessageBoxStatsDetailed(); $this->assertEquals(0, $imapStats->Nmsgs); $this->assertEquals(1, count(EmailMessage::getAll())); $emailMessages = EmailMessage::getAll(); $emailMessage = $emailMessages[0]; $this->assertEquals('Email from Steve 3', $emailMessage->subject); $this->assertEquals('Email from Steve', trim($emailMessage->content->textContent)); $this->assertEquals('<strong>Email</strong> from Steve', trim($emailMessage->content->htmlContent)); $this->assertEquals($user->primaryEmail->emailAddress, $emailMessage->sender->fromAddress); $this->assertEquals(1, count($emailMessage->recipients)); foreach ($emailMessage->recipients as $recipient) { $this->assertEquals($recipient->toAddress, Yii::app()->params['emailTestAccounts']['testEmailAddress']); $this->assertEquals(EmailMessageRecipient::TYPE_TO, $recipient->type); } $this->assertEquals(EmailFolder::TYPE_ARCHIVED, $emailMessage->folder->type); $job = new EmailArchivingJob(); $this->assertTrue($job->run()); $imapStats = Yii::app()->imap->getMessageBoxStatsDetailed(); $this->assertEquals(0, $imapStats->Nmsgs); $this->assertEquals(1, count(EmailMessage::getAll())); $this->assertEquals(1, Notification::getCountByTypeAndUser('EmailMessageArchivingEmailAddressNotMatching', $user)); }