public function testSendSystemEmail() { 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; Yii::app()->imap->connect(); EmailMessage::deleteAll(); // Expunge all emails from dropbox Yii::app()->imap->deleteMessages(true); $this->assertEquals(0, EmailMessage::getCount()); $imapStats = Yii::app()->imap->getMessageBoxStatsDetailed(); $this->assertEquals(0, $imapStats->Nmsgs); $subject = "System Message"; $textMessage = "System message content."; $htmlMessage = "<strong>System</strong> message content."; EmailMessageHelper::sendSystemEmail($subject, array(Yii::app()->imap->imapUsername), $textMessage, $htmlMessage); sleep(30); Yii::app()->imap->connect(); $imapStats = Yii::app()->imap->getMessageBoxStatsDetailed(); $this->assertEquals(1, $imapStats->Nmsgs); $this->assertEquals(1, EmailMessage::getCount()); $emailMessages = EmailMessage::getAll(); $emailMessage = $emailMessages[0]; $this->assertEquals('System Message', $emailMessage->subject); $this->assertEquals('System message content.', trim($emailMessage->content->textContent)); $this->assertEquals('<strong>System</strong> message content.', trim($emailMessage->content->htmlContent)); $this->assertEquals(1, count($emailMessage->recipients)); foreach ($emailMessage->recipients as $recipient) { $this->assertEquals($recipient->toAddress, Yii::app()->imap->imapUsername); $this->assertEquals(EmailMessageRecipient::TYPE_TO, $recipient->type); } }
public function setUp() { parent::setUp(); if (!EmailMessageTestHelper::isSetEmailAccountsTestConfiguration()) { $this->markTestSkipped('Please fix the test email settings'); } }
public function setUp() { parent::setUp(); if (!(EmailMessageTestHelper::isSetEmailAccountsTestConfiguration() && SendGridTestHelper::isSetSendGridAccountTestConfiguration())) { $this->markTestSkipped('Please fix the test email settings'); } $this->user = User::getByUsername('super'); Yii::app()->user->userModel = $this->user; }
public function setUp() { parent::setUp(); $this->user = User::getByUsername('super'); Yii::app()->user->userModel = $this->user; EmailAccount::deleteAll(); EmailMessage::deleteAll(); EmailMessageContent::deleteAll(); EmailMessageSender::deleteAll(); EmailMessageRecipient::deleteAll(); EmailMessageSendError::deleteAll(); FileModel::deleteAll(); if (!EmailMessageTestHelper::isSetEmailAccountsTestConfiguration()) { $this->markTestSkipped('Please fix the test email settings'); } }
public function testActionSend() { if (EmailMessageTestHelper::isSetEmailAccountsTestConfiguration()) { $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; chdir(COMMON_ROOT . DIRECTORY_SEPARATOR . 'protected' . DIRECTORY_SEPARATOR . 'commands'); $outboundHost = Yii::app()->params['emailTestAccounts']['smtpSettings']['outboundHost']; $outboundPort = Yii::app()->params['emailTestAccounts']['smtpSettings']['outboundPort']; $outboundUsername = Yii::app()->params['emailTestAccounts']['smtpSettings']['outboundUsername']; $outboundPassword = Yii::app()->params['emailTestAccounts']['smtpSettings']['outboundPassword']; $outboundSecurity = Yii::app()->params['emailTestAccounts']['smtpSettings']['outboundSecurity']; $toAddress = Yii::app()->params['emailTestAccounts']['userImapSettings']['imapUsername']; $subject = 'A test email from Zurmo'; $textContent = 'A test text message from Zurmo.'; $htmlContent = 'A test html message from Zurmo.'; self::$userImap->deleteMessages(true); self::$userImap->connect(); $imapStats = self::$userImap->getMessageBoxStatsDetailed(); $this->assertEquals(0, $imapStats->Nmsgs); // Begin Not Coding Standard $command = "php zurmocTest.php email send --username=super --toAddress={$toAddress} --subject='{$subject}' --textContent='{$textContent}' " . "--htmlContent='{$htmlContent}' --host={$outboundHost} --port={$outboundPort} --outboundUsername={$outboundUsername} " . "--outboundPassword={$outboundPassword}"; // End Not Coding Standard if (isset($outboundSecurity) && $outboundSecurity != false) { $command .= " --outboundSecurity={$outboundSecurity}"; // Not Coding Standard } if (!IS_WINNT) { $command .= ' 2>&1'; } exec($command, $output); // Check if user got email sleep(30); self::$userImap->connect(); $imapStats = self::$userImap->getMessageBoxStatsDetailed(); $this->assertEquals(1, $imapStats->Nmsgs); $messages = self::$userImap->getMessages(); $this->assertEquals(1, count($messages)); $this->assertEquals('A test email from Zurmo', trim($messages[0]->subject)); $this->assertEquals('<!-- zurmo css inline -->A test html message from Zurmo.', preg_replace("/\r|\n/", "", $messages[0]->htmlBody)); $this->assertEquals('A test text message from Zurmo.', trim($messages[0]->textBody)); $this->assertEquals(strval(Yii::app()->user->userModel), trim($messages[0]->fromName)); $this->assertEquals(Yii::app()->emailHelper->resolveFromAddressByUser(Yii::app()->user->userModel), trim($messages[0]->fromEmail)); $this->assertTrue(empty($messages[0]->attachments)); } }
/** * @depends testSendRealEmail */ public function testTooManySendAttemptsResultingInFailure() { $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; if (EmailMessageTestHelper::isSetEmailAccountsTestConfiguration()) { //add a message in the outbox_error folder. $emailMessage = EmailMessageTestHelper::createDraftSystemEmail('a test email 2', $this->user); $box = EmailBox::resolveAndGetByName(EmailBox::NOTIFICATIONS_NAME); $emailMessage->folder = EmailFolder::getByBoxAndType($box, EmailFolder::TYPE_OUTBOX_ERROR); $emailMessage->sendAttempts = 5; $emailMessage->save(); $this->assertEquals(1, Yii::app()->emailHelper->getQueuedCount()); $this->assertEquals(7, Yii::app()->emailHelper->getSentCount()); Yii::app()->emailHelper->sendQueued(); $this->assertEquals(0, Yii::app()->emailHelper->getQueuedCount()); $this->assertEquals(7, Yii::app()->emailHelper->getSentCount()); $this->assertTrue($emailMessage->folder->isSame(EmailFolder::getByBoxAndType($box, EmailFolder::TYPE_OUTBOX_FAILURE))); } else { $this->markTestSkipped(); } }
protected function skipTestIfMissingSettings($checkBounceSettingsToo = false) { if (!EmailMessageTestHelper::isSetEmailAccountsTestConfiguration()) { $this->markTestSkipped(Zurmo::t('EmailMessagesModule', 'Test email settings are not configured in perInstanceTest.php file.')); } elseif ($checkBounceSettingsToo && !BounceMessageTestHelper::isSetBounceImapSettings()) { $this->markTestSkipped(Zurmo::t('EmailMessagesModule', 'Test bounce settings are not configured in perInstanceTest.php file.')); } }
public function setup() { ForgetAllCacheUtil::forgetAllCaches(); //Special situation to deal with email box and ensuring the user cache doesn't get corrupted parent::setup(); $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; if (EmailMessageTestHelper::isSetEmailAccountsTestConfiguration()) { $user = User::getByUsername('steve'); $user->primaryEmail->emailAddress = Yii::app()->params['emailTestAccounts']['userImapSettings']['imapUsername']; $this->assertTrue($user->save()); } else { $this->markTestSkipped(Zurmo::t('EmailMessagesModule', 'Test email settings are not configured in perInstanceTest.php file.')); } }
/** * @depends testSend */ public function testSendRealEmail() { $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; Yii::app()->emailHelper->sendEmailThroughTransport = true; Yii::app()->imap->imapHost = Yii::app()->params['emailTestAccounts']['userImapSettings']['imapHost']; Yii::app()->imap->imapUsername = Yii::app()->params['emailTestAccounts']['userImapSettings']['imapUsername']; Yii::app()->imap->imapPassword = Yii::app()->params['emailTestAccounts']['userImapSettings']['imapPassword']; Yii::app()->imap->imapPort = Yii::app()->params['emailTestAccounts']['userImapSettings']['imapPort']; Yii::app()->imap->imapSSL = Yii::app()->params['emailTestAccounts']['userImapSettings']['imapSSL']; Yii::app()->imap->imapFolder = Yii::app()->params['emailTestAccounts']['userImapSettings']['imapFolder']; Yii::app()->imap->setInboundSettings(); Yii::app()->imap->init(); Yii::app()->emailHelper->outboundHost = Yii::app()->params['emailTestAccounts']['smtpSettings']['outboundHost']; Yii::app()->emailHelper->outboundPort = Yii::app()->params['emailTestAccounts']['smtpSettings']['outboundPort']; Yii::app()->emailHelper->outboundUsername = Yii::app()->params['emailTestAccounts']['smtpSettings']['outboundUsername']; Yii::app()->emailHelper->outboundPassword = Yii::app()->params['emailTestAccounts']['smtpSettings']['outboundPassword']; Yii::app()->emailHelper->outboundSecurity = Yii::app()->params['emailTestAccounts']['smtpSettings']['outboundSecurity']; Yii::app()->emailHelper->sendEmailThroughTransport = true; Yii::app()->emailHelper->setOutboundSettings(); Yii::app()->emailHelper->init(); $steve = UserTestHelper::createBasicUser('steve'); EmailMessageTestHelper::createEmailAccount($steve); if (EmailMessageTestHelper::isSetEmailAccountsTestConfiguration()) { $user = User::getByUsername('steve'); $user->primaryEmail->emailAddress = Yii::app()->params['emailTestAccounts']['userImapSettings']['imapUsername']; $this->assertTrue($user->save()); Yii::app()->imap->connect(); Yii::app()->imap->deleteMessages(true); $imapStats = Yii::app()->imap->getMessageBoxStatsDetailed(); $this->assertEquals(0, $imapStats->Nmsgs); $emailMessage = EmailMessageTestHelper::createOutboxEmail($super, 'Test email', 'Raw content', ',b>html content</b>end.', 'Zurmo', Yii::app()->emailHelper->outboundUsername, 'Ivica', Yii::app()->params['emailTestAccounts']['userImapSettings']['imapUsername']); Yii::app()->imap->connect(); $imapStats = Yii::app()->imap->getMessageBoxStatsDetailed(); $this->assertEquals(0, $imapStats->Nmsgs); $this->assertEquals(1, Yii::app()->emailHelper->getQueuedCount()); $this->assertEquals(3, Yii::app()->emailHelper->getSentCount()); Yii::app()->emailHelper->sendQueued($emailMessage); $job = new ProcessOutboundEmailJob(); $this->assertTrue($job->run()); $this->assertEquals(0, Yii::app()->emailHelper->getQueuedCount()); $this->assertEquals(4, Yii::app()->emailHelper->getSentCount()); sleep(30); Yii::app()->imap->connect(); $imapStats = Yii::app()->imap->getMessageBoxStatsDetailed(); $this->assertEquals(1, $imapStats->Nmsgs); } Yii::app()->emailHelper->sendEmailThroughTransport = false; }
/** * 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() { 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(); 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(1, EmailMessage::getCount()); $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)); $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(1, EmailMessage::getCount()); $this->assertEquals(1, Notification::getCountByTypeAndUser('EmailMessageArchivingEmailAddressNotMatching', $user)); }