2 /*********************************************************************************
3 * SugarCRM Community Edition is a customer relationship management program developed by
4 * SugarCRM, Inc. Copyright (C) 2004-2011 SugarCRM Inc.
6 * This program is free software; you can redistribute it and/or modify it under
7 * the terms of the GNU Affero General Public License version 3 as published by the
8 * Free Software Foundation with the addition of the following permission added
9 * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
10 * IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
11 * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
13 * This program is distributed in the hope that it will be useful, but WITHOUT
14 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15 * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
18 * You should have received a copy of the GNU Affero General Public License along with
19 * this program; if not, see http://www.gnu.org/licenses or write to the Free
20 * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
23 * You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
24 * SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
26 * The interactive user interfaces in modified source and object code versions
27 * of this program must display Appropriate Legal Notices, as required under
28 * Section 5 of the GNU Affero General Public License version 3.
30 * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
31 * these Appropriate Legal Notices must retain the display of the "Powered by
32 * SugarCRM" logo. If the display of the logo is not reasonably feasible for
33 * technical reasons, the Appropriate Legal Notices must display the words
34 * "Powered by SugarCRM".
35 ********************************************************************************/
38 require_once('modules/EmailAddresses/EmailAddress.php');
41 * Test cases for php file Emails/emailAddress.php
43 class EmailAddressTest extends Sugar_PHPUnit_Framework_TestCase
45 private $emailaddress;
46 private $testEmailAddressString = 'unitTest@sugarcrm.com';
48 public function setUp()
50 $this->emailaddress = new EmailAddress();
53 public function tearDown()
55 unset($this->emailaddress);
56 $query = "delete from email_addresses where email_address = '".$this->testEmailAddressString."';";
57 $GLOBALS['db']->query($query);
60 public function testEmailAddress()
70 $_REQUEST['_email_widget_id'] = 0;
71 $_REQUEST['0emailAddress0'] = $this->testEmailAddressString;
72 $_REQUEST['emailAddressPrimaryFlag'] = '0emailAddress0';
73 $_REQUEST['emailAddressVerifiedFlag0'] = 'true';
74 $_REQUEST['emailAddressVerifiedValue0'] = 'unitTest@sugarcrm.com';
75 $requestVariablesSet = array('0emailAddress0','emailAddressPrimaryFlag','emailAddressVerifiedFlag0','emailAddressVerifiedValue0');
76 $this->emailaddress->save($id, $module, $new_addrs, $primary, $replyTo, $invalid, $optOut, $in_workflow);
77 foreach ($requestVariablesSet as $k)
80 $this->assertEquals($this->emailaddress->addresses[0]['email_address'], $this->testEmailAddressString);
81 $this->assertEquals($this->emailaddress->addresses[0]['primary_address'], 1);
84 public function testSaveEmailAddressUsingSugarbeanSave()
86 $this->emailaddress->email_address = $this->testEmailAddressString;
87 $this->emailaddress->opt_out = '1';
88 $this->emailaddress->save();
90 $this->assertTrue(!empty($this->emailaddress->id));
92 $this->emailaddress->id,
93 $GLOBALS['db']->getOne("SELECT id FROM email_addresses WHERE id = '{$this->emailaddress->id}' AND email_address = '{$this->testEmailAddressString}' and opt_out = '1'"),
94 'Email Address record not added'
98 public function getEmails()
101 array("test@sugarcrm.com", "", "test@sugarcrm.com"),
102 array("John Doe <test@sugarcrm.com>", "John Doe", "test@sugarcrm.com"),
103 array("\"John Doe\" <test@sugarcrm.com>", "John Doe", "test@sugarcrm.com"),
104 array("\"John Doe\" <test@sugarcrm.com>", "John Doe", "test@sugarcrm.com"),
105 array("\"John Doe (<doe>)\" <test@sugarcrm.com>", "John Doe (doe)", "test@sugarcrm.com"),
107 array("\"John Doe (<doe>)\"", "John Doe (doe)", ""),
108 array("John Doe <vlha>", "John Doe vlha", ""),
109 array("<script>alert(1)</script>", "scriptalert(1)/script", ""),
110 array("Test <test@test>", "Test test@test", ""),
115 * @dataProvider getEmails
116 * @param string $addr
117 * @param string $name
118 * @param string $email
121 public function testSplitEmail($addr, $name, $email)
123 $parts = $this->emailaddress->splitEmailAddress($addr);
124 $this->assertEquals($name, $parts['name']);
125 $this->assertEquals($email, $parts['email']);