]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - tests/include/OutboundEmail/Bug23140Test.php
Added unit tests.
[Github/sugarcrm.git] / tests / include / OutboundEmail / Bug23140Test.php
1 <?php 
2 require_once('include/OutboundEmail/OutboundEmail.php');
3
4 /**
5  * @group bug23140
6  */
7 class Bug23140Test extends Sugar_PHPUnit_Framework_TestCase
8 {
9         var $outbound_id = null;
10         var $_user = null;
11         var $ob = null;
12         var $userOverideAccont = null;
13         
14         public function setUp()
15     {
16         global $current_user, $currentModule ;
17                 $this->_user = SugarTestUserUtilities::createAnonymousUser();
18         }
19
20     public function tearDown()
21     {
22         SugarTestUserUtilities::removeAllCreatedAnonymousUsers();
23         unset($GLOBALS['current_user']);
24         
25         if ($this->ob != null)
26             $GLOBALS['db']->query("DELETE FROM outbound_email WHERE id= '{$this->ob->id}'");
27         if ($this->userOverideAccont != null)
28             $GLOBALS['db']->query("DELETE FROM outbound_email WHERE id= '{$this->userOverideAccont->id}'");
29     }
30     
31     function testSystemAccountMailSettingsChangedUserAccessToUsername()
32     {
33         //User not alloweed to access system email username/password
34         $GLOBALS['db']->query("INSERT INTO config (category,name,value) VALUES ('notify','allow_default_outbound','2') ");
35         
36         $newSystemPort = 864;
37         $newSystemServer = "system.imap.com";
38         $newSystemUsername = "sytem_user_name";
39         $newSystemPassword = "SYSTEM_PASSWORD";
40         
41         $userID = create_guid();
42         $ob = new OutboundEmail();
43         $ob->id = $userID;
44         $ob->new_with_id = TRUE;
45         $ob->name = 'Sugar Test';
46         $ob->type = 'system-override';
47         $ob->user_id = $this->_user->id;
48         $ob->mail_sendtype = "SMTP";
49         $ob->mail_smtpuser = "Test User";
50         $ob->mail_smtppass = "User Pass";
51         $ob->save();
52         $this->ob = $ob;
53         
54         
55         $system = $ob->getSystemMailerSettings();
56         $system->new_with_id = FALSE;
57         $system->mail_smtpport = $newSystemPort;
58         $system->mail_smtpserver = $newSystemServer;
59         $system->mail_smtpuser = $newSystemUsername;
60         $system->mail_smtppass = $newSystemPassword;
61         
62         $system->saveSystem();
63         
64         $obRetrieved = new OutboundEmail();
65         $obRetrieved->retrieve($userID);
66         
67         $this->assertEquals($newSystemPort, $obRetrieved->mail_smtpport, "Could not update users sytem-override accounts after system save.");
68         $this->assertEquals($newSystemServer, $obRetrieved->mail_smtpserver, "Could not update users sytem-override accounts after system save.");
69         $this->assertEquals($newSystemUsername, $obRetrieved->mail_smtpuser, "Could not update users sytem-override accounts after system save.");
70         $this->assertEquals($newSystemPassword, $obRetrieved->mail_smtppass, "Could not update users sytem-override accounts after system save.");
71         
72     }
73     
74     
75     function testSystemAccountMailSettingsChangedNoUserAccessToUsername()
76     {
77         //User not alloweed to access system email username/password
78         $GLOBALS['db']->query("DELETE FROM config WHERE category='notify' AND name='allow_default_outbound' ");
79         
80         $newSystemPort = 864;
81         $newSystemServer = "system.imap.com";
82         
83         $userID = create_guid();
84         $ob = new OutboundEmail();
85         $ob->id = $userID;
86         $ob->new_with_id = TRUE;
87         $ob->name = 'Sugar Test';
88         $ob->type = 'system-override';
89         $ob->user_id = $this->_user->id;
90         $ob->mail_sendtype = "SMTP";
91         $ob->mail_smtpuser = "Test User";
92         $ob->mail_smtppass = "User Pass";
93         $ob->save();
94         $this->ob = $ob;
95         
96         
97         $system = $ob->getSystemMailerSettings();
98         $system->new_with_id = FALSE;
99         $system->mail_smtpport = $newSystemPort;
100         $system->mail_smtpserver = $newSystemServer;
101         $system->saveSystem();
102         
103         $obRetrieved = new OutboundEmail();
104         $obRetrieved->retrieve($userID);
105         
106         $this->assertEquals($newSystemPort, $obRetrieved->mail_smtpport, "Could not update users sytem-override accounts after system save.");
107         $this->assertEquals($newSystemServer, $obRetrieved->mail_smtpserver, "Could not update users sytem-override accounts after system save.");
108         $this->assertEquals("Test User", $obRetrieved->mail_smtpuser, "Could not update users sytem-override accounts after system save.");
109         $this->assertEquals("User Pass", $obRetrieved->mail_smtppass, "Could not update users sytem-override accounts after system save.");
110     }
111     
112     
113     function testUserMailForSystemOverrideRetrieval()
114     {
115         $ob = new OutboundEmail();
116         $ob->name = 'Sugar Test';
117         $ob->type = 'system-override';
118         $ob->user_id = $this->_user->id;
119         $ob->mail_sendtype = "SMTP";
120         $ob->mail_smtpuser = "Test User";
121         $ob->save();
122         $this->ob = $ob;
123         
124         $retrievedOb = $ob->getUsersMailerForSystemOverride($this->_user->id);
125         $this->assertEquals($ob->name, $retrievedOb->name, "Could not retrieve users system override outbound email account");
126         $this->assertEquals($ob->type, $retrievedOb->type, "Could not retrieve users system override outbound email account");
127         $this->assertEquals($ob->user_id, $retrievedOb->user_id, "Could not retrieve users system override outbound email account");
128         $this->assertEquals($ob->mail_sendtype, $retrievedOb->mail_sendtype, "Could not retrieve users system override outbound email account");
129         $this->assertEquals("Test User", $retrievedOb->mail_smtpuser, "Could not retrieve users system override outbound email account");
130     }
131     
132     function testDuplicateSystemAccountForUser()
133     {
134         $oe = new OutboundEmail();
135         $userOverideAccont = $oe->createUserSystemOverrideAccount($this->_user->id, "TEST USER NAME", "TEST PASSWORD");
136         $this->userOverideAccont = $userOverideAccont;
137         $retrievedOb = $oe->getUsersMailerForSystemOverride($this->_user->id);
138         
139         $this->assertEquals("TEST USER NAME", $retrievedOb->mail_smtpuser, "Could not duplicate systems outbound account for user");
140         $this->assertEquals($this->_user->id, $retrievedOb->user_id, "Could not duplicate systems outbound account for user");
141         $this->assertEquals("TEST PASSWORD", $retrievedOb->mail_smtppass, "Could not duplicate systems outbound account for user");
142         $this->assertEquals('system-override', $userOverideAccont->type, "Could not duplicate systems outbound account for user");
143     }
144     
145     function testIsUserAlloweedAccessToSystemOutboundEmail()
146     {
147         $oe = new OutboundEmail();
148         $GLOBALS['db']->query("DELETE FROM config WHERE category='notify' AND name='allow_default_outbound' ");
149         $emptyTest = $oe->isAllowUserAccessToSystemDefaultOutbound();
150         $this->assertFalse($emptyTest, "User alloweed access to system outbound email account error");
151         
152         $GLOBALS['db']->query("INSERT INTO config (category,name,value) VALUES ('notify','allow_default_outbound','2') ");
153         $allowTest = $oe->isAllowUserAccessToSystemDefaultOutbound();
154         $this->assertTrue($allowTest, "User alloweed access to system outbound email account error");
155         
156         $GLOBALS['db']->query("DELETE FROM config WHERE category='notify' AND name='allow_default_outbound' ");
157         $emptyTest = $oe->isAllowUserAccessToSystemDefaultOutbound();
158         $this->assertFalse($emptyTest, "User alloweed access to system outbound email account error");
159            
160     }
161     
162     
163     function testIsUserAuthRequiredForOverrideAccount()
164     {
165         $oe = new OutboundEmail();
166         
167         $GLOBALS['db']->query("DELETE FROM config WHERE category='notify' AND name='allow_default_outbound' ");
168         $system = $oe->getSystemMailerSettings();
169         
170         //System does not require auth, no user overide account.
171         $system->mail_smtpauth_req = 0;
172         $system->save(FALSE);
173         
174         $notRequired = $oe->doesUserOverrideAccountRequireCredentials($this->_user->id);
175         $this->assertFalse($notRequired, "Test failed for determining if user auth required.");
176         
177         //System does require auth, no user overide account.
178         $system->mail_smtpauth_req = 1;
179         $system->save(FALSE);
180         $notRequired = $oe->doesUserOverrideAccountRequireCredentials($this->_user->id);
181         $this->assertTrue($notRequired, "Test failed for determining if user auth required.");
182         
183         //System requires auth and users alloweed to use sys defaults.
184         $GLOBALS['db']->query("INSERT INTO config (category,name,value) VALUES ('notify','allow_default_outbound','2') ");
185         $notRequired = $oe->doesUserOverrideAccountRequireCredentials($this->_user->id);
186         $this->assertFalse($notRequired, "Test failed for determining if user auth required.");
187         
188         
189         //System requires auth but user details are empty and users are not alloweed to use system details..
190         $GLOBALS['db']->query("DELETE FROM config WHERE category='notify' AND name='allow_default_outbound' ");
191         $userOverideAccont = $oe->createUserSystemOverrideAccount($this->_user->id, "", "");
192         $this->userOverideAccont = $userOverideAccont;
193         $notRequired = $oe->doesUserOverrideAccountRequireCredentials($this->_user->id);
194         $this->assertTrue($notRequired, "Test failed for determining if user auth required.");
195         
196         //User has provided all credentials.
197         $this->userOverideAccont->mail_smtpuser = "TEST USER NAME";
198         $this->userOverideAccont->mail_smtppass = "TEST PASSWORD";
199         $this->userOverideAccont->new_with_id = FALSE;
200         $this->userOverideAccont->save();
201         $notRequired = $oe->doesUserOverrideAccountRequireCredentials($this->_user->id);
202         $this->assertFalse($notRequired, "Test failed for determining if user auth required.");
203         
204     }
205     
206 }
207 ?>