]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - tests/modules/EmailAddresses/EmailAddressTest.php
Release 6.4.0
[Github/sugarcrm.git] / tests / modules / EmailAddresses / EmailAddressTest.php
1 <?php
2 /*********************************************************************************
3  * SugarCRM Community Edition is a customer relationship management program developed by
4  * SugarCRM, Inc. Copyright (C) 2004-2011 SugarCRM Inc.
5  * 
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.
12  * 
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
16  * details.
17  * 
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
21  * 02110-1301 USA.
22  * 
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.
25  * 
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.
29  * 
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  ********************************************************************************/
36
37
38 require_once('modules/EmailAddresses/EmailAddress.php');
39
40 /**
41  * Test cases for php file Emails/emailAddress.php
42  */
43 class EmailAddressTest extends Sugar_PHPUnit_Framework_TestCase
44 {
45         private $emailaddress;
46         private $testEmailAddressString  = 'unitTest@sugarcrm.com';
47
48         public function setUp()
49         {
50                 $this->emailaddress = new EmailAddress();
51         }
52
53         public function tearDown()
54         {
55                 unset($this->emailaddress);
56                 $query = "delete from email_addresses where email_address = '".$this->testEmailAddressString."'";
57         $GLOBALS['db']->query($query);
58         }
59
60         public function testEmailAddress()
61         {
62                 $id = create_guid();
63                 $module = '';
64                 $new_addrs=array();
65                 $primary='';
66                 $replyTo='';
67                 $invalid='';
68                 $optOut='';
69                 $in_workflow=false;
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)
78                   unset($_REQUEST[$k]);
79
80                 $this->assertEquals($this->emailaddress->addresses[0]['email_address'], $this->testEmailAddressString);
81                 $this->assertEquals($this->emailaddress->addresses[0]['primary_address'], 1);
82         }
83
84         public function testSaveEmailAddressUsingSugarbeanSave()
85         {
86             $this->emailaddress->email_address = $this->testEmailAddressString;
87             $this->emailaddress->opt_out = '1';
88             $this->emailaddress->save();
89
90             $this->assertTrue(!empty($this->emailaddress->id));
91             $this->assertEquals(
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'
95                 );
96         }
97
98         public function getEmails()
99         {
100             return array(
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"),
106                 // bad ones
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", ""),
111                 );
112         }
113
114         /**
115          * @dataProvider getEmails
116          * @param string $addr
117          * @param string $name
118          * @param string $email
119          */
120
121         public function testSplitEmail($addr, $name, $email)
122         {
123             $parts = $this->emailaddress->splitEmailAddress($addr);
124             $this->assertEquals($name, $parts['name']);
125             $this->assertEquals($email, $parts['email']);
126         }
127 }