2 require_once('include/OutboundEmail/OutboundEmail.php');
7 class Bug23140Test extends Sugar_PHPUnit_Framework_TestCase
9 var $outbound_id = null;
12 var $userOverideAccont = null;
14 public function setUp()
16 global $current_user, $currentModule ;
17 $this->_user = SugarTestUserUtilities::createAnonymousUser();
20 public function tearDown()
22 SugarTestUserUtilities::removeAllCreatedAnonymousUsers();
23 unset($GLOBALS['current_user']);
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}'");
31 function testSystemAccountMailSettingsChangedUserAccessToUsername()
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') ");
37 $newSystemServer = "system.imap.com";
38 $newSystemUsername = "sytem_user_name";
39 $newSystemPassword = "SYSTEM_PASSWORD";
41 $userID = create_guid();
42 $ob = new OutboundEmail();
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";
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;
62 $system->saveSystem();
64 $obRetrieved = new OutboundEmail();
65 $obRetrieved->retrieve($userID);
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.");
75 function testSystemAccountMailSettingsChangedNoUserAccessToUsername()
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' ");
81 $newSystemServer = "system.imap.com";
83 $userID = create_guid();
84 $ob = new OutboundEmail();
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";
97 $system = $ob->getSystemMailerSettings();
98 $system->new_with_id = FALSE;
99 $system->mail_smtpport = $newSystemPort;
100 $system->mail_smtpserver = $newSystemServer;
101 $system->saveSystem();
103 $obRetrieved = new OutboundEmail();
104 $obRetrieved->retrieve($userID);
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.");
113 function testUserMailForSystemOverrideRetrieval()
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";
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");
132 function testDuplicateSystemAccountForUser()
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);
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");
145 function testIsUserAlloweedAccessToSystemOutboundEmail()
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");
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");
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");
163 function testIsUserAuthRequiredForOverrideAccount()
165 $oe = new OutboundEmail();
167 $GLOBALS['db']->query("DELETE FROM config WHERE category='notify' AND name='allow_default_outbound' ");
168 $system = $oe->getSystemMailerSettings();
170 //System does not require auth, no user overide account.
171 $system->mail_smtpauth_req = 0;
172 $system->save(FALSE);
174 $notRequired = $oe->doesUserOverrideAccountRequireCredentials($this->_user->id);
175 $this->assertFalse($notRequired, "Test failed for determining if user auth required.");
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.");
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.");
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.");
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.");