public function testGetPersonsAndAccountsByEmailAddress() { //Create user, contact, lead and accout $user = UserTestHelper::createBasicUser('newUser'); $account = AccountTestHelper::createAccountByNameForOwner('newAccount', $user); $lead = LeadTestHelper::createLeadbyNameForOwner('newLead', $user); $contact = ContactTestHelper::createContactWithAccountByNameForOwner('newContact', $user, $account); $lead->primaryEmail->emailAddress = '*****@*****.**'; $lead->secondaryEmail->emailAddress = '*****@*****.**'; $account->primaryEmail->emailAddress = '*****@*****.**'; $account->secondaryEmail->emailAddress = '*****@*****.**'; $contact->primaryEmail->emailAddress = '*****@*****.**'; $contact->secondaryEmail->emailAddress = '*****@*****.**'; $this->assertTrue($user->save()); $this->assertTrue($lead->save()); $this->assertTrue($account->save()); $this->assertTrue($contact->save()); //Test with defaults $emailAddress = '*****@*****.**'; $personsOrAccounts = EmailArchivingUtil::getPersonsAndAccountsByEmailAddress($emailAddress); $this->assertEmpty($personsOrAccounts); $emailAddress = '*****@*****.**'; $personsOrAccounts = EmailArchivingUtil::getPersonsAndAccountsByEmailAddress($emailAddress); $this->assertEmpty($personsOrAccounts); $emailAddress = '*****@*****.**'; $personsOrAccounts = EmailArchivingUtil::getPersonsAndAccountsByEmailAddress($emailAddress); $this->assertEmpty($personsOrAccounts); $emailAddress = '*****@*****.**'; $personsOrAccounts = EmailArchivingUtil::getPersonsAndAccountsByEmailAddress($emailAddress); $this->assertEmpty($personsOrAccounts); //Test user can access contacts $emailAddress = '*****@*****.**'; $personsOrAccounts = EmailArchivingUtil::getPersonsAndAccountsByEmailAddress($emailAddress, true); $this->assertNotEmpty($personsOrAccounts); $this->assertEquals($personsOrAccounts[0], $contact); //Test user can access leads $emailAddress = '*****@*****.**'; $personsOrAccounts = EmailArchivingUtil::getPersonsAndAccountsByEmailAddress($emailAddress, false, true); $this->assertNotEmpty($personsOrAccounts); $this->assertEquals($personsOrAccounts[0], $lead); //Test user can access accounts $emailAddress = '*****@*****.**'; $personsOrAccounts = EmailArchivingUtil::getPersonsAndAccountsByEmailAddress($emailAddress, false, false, true); $this->assertNotEmpty($personsOrAccounts); $this->assertEquals($personsOrAccounts[0], $account); //Test user can access users $user->primaryEmail->emailAddress = '*****@*****.**'; $this->assertTrue($user->save()); $emailAddress = '*****@*****.**'; $personsOrAccounts = EmailArchivingUtil::getPersonsAndAccountsByEmailAddress($emailAddress, false, false, false); $this->assertNotEmpty($personsOrAccounts); $this->assertEquals($personsOrAccounts[0], $user); }
/** * Create EmailMessageRecipient * @param array $recipientInfo * @param boolean $userCanAccessContacts * @param boolean $userCanAccessLeads * @param boolean $userCanAccessAccounts * @return EmailMessageRecipient */ public static function createEmailMessageRecipient($recipientInfo, $userCanAccessContacts, $userCanAccessLeads, $userCanAccessAccounts) { $recipient = new EmailMessageRecipient(); $recipient->toAddress = $recipientInfo['email']; if (isset($recipientInfo['name'])) { $recipient->toName = $recipientInfo['name']; } $recipient->type = $recipientInfo['type']; $personsOrAccounts = EmailArchivingUtil::getPersonsAndAccountsByEmailAddress($recipientInfo['email'], $userCanAccessContacts, $userCanAccessLeads, $userCanAccessAccounts); if (!empty($personsOrAccounts)) { foreach ($personsOrAccounts as $personOrAccount) { $recipient->personsOrAccounts->add($personOrAccount); } } return $recipient; }