]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - tests/modules/Campaigns/Bug35014Test.php
Release 6.2.0
[Github/sugarcrm.git] / tests / modules / Campaigns / Bug35014Test.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 class Bug35014Test extends Sugar_PHPUnit_Framework_TestCase
39 {
40         private $campaign_id;
41         
42         public function setUp()
43     {
44
45         $this->markTestSkipped('SugarTestCampaignUtilities does not exist');
46         $GLOBALS['current_user'] = SugarTestUserUtilities::createAnonymousUser();
47         $campaign = SugarTestCampaignUtilities::createCampaign();
48         $this->campaign_id = $campaign->id;
49         }
50
51     public function tearDown()
52     {
53         //SugarTestCampaignUtilities::removeAllCreatedCampaigns();
54         SugarTestUserUtilities::removeAllCreatedAnonymousUsers();
55         unset($GLOBALS['current_user']);
56     }
57     
58     public function testLeadCaptureResponse()
59     {
60         // SET GLOBAL PHP VARIABLES
61         $_POST = array
62         (
63             'first_name' => 'Sadek',
64             'last_name' => 'Baroudi',
65             'campaign_id' => $this->campaign_id,
66             'redirect_url' => 'http://www.sugarcrm.com/index.php',
67             'assigned_user_id' => 1,
68             'team_id' => '1',
69             'team_set_id' => 'Global',
70             'req_id' => 'last_name;',
71         );
72         
73         // RUN TEST 1
74         $postString = '';
75         foreach($_POST as $k => $v)
76         {
77             $postString .= "{$k}=".urlencode($v)."&";
78         }
79         $postString = rtrim($postString, "&");
80         
81         $ch = curl_init("{$GLOBALS['sugar_config']['site_url']}/index.php?entryPoint=WebToLeadCapture");
82         curl_setopt($ch, CURLOPT_POST, count($_POST) + 1);
83         curl_setopt($ch, CURLOPT_POSTFIELDS, $postString);
84         curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
85         curl_setopt($ch, CURLOPT_HEADER, 1);
86         ob_start();
87         $return = curl_exec($ch);
88         $output = ob_get_clean();
89         
90         $matches = array();
91         preg_match("/Location: .*/", $output, $matches);
92         $this->assertTrue(count($matches) > 0, "Could not get the header information for the response");
93         
94         $location = '';
95         if(count($matches) > 0){
96             $location = str_replace("Location :", "", $matches[0]);
97         }
98         
99         $query_string = substr($location, strpos($location, "?") + 1);
100         $query_string_array = explode("&", $query_string);
101         
102         $post_compare_array = array();
103         $skipKeys = array('module', 'action', 'entryPoint', 'client_id_address');
104         foreach($query_string_array as $key_val)
105         {
106             $key_val_array = explode("=", $key_val);
107             if(in_array($key_val_array[0], $skipKeys))
108                 continue;
109             $post_compare_array[$key_val_array[0]] = $key_val_array[1];
110         }
111         
112         // the redirect_url doesn't get returned, so we unset it
113         unset($_POST['redirect_url']);
114         
115         $this->assertEquals($_POST, $post_compare_array, "The returned get location doesn't match that of the post passed in");
116         
117         
118         // SET GLOBAL PHP VARIABLES
119         $_POST = array
120         (
121             'first_name' => 'Sadek',
122             'last_name' => 'Baroudi',
123             'campaign_id' => $this->campaign_id,
124             'redirect_url' => 'http://www.sugarcrm.com/index.php',
125             'assigned_user_id' => 1,
126             'team_id' => '1',
127             'team_set_id' => 'Global',
128             'req_id' => 'last_name;',
129             'SuperLongGetVar' => 
130                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
131                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
132                         'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
133                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
134                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
135                         'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
136                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
137                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
138                         'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
139                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
140                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
141                         'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
142                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
143                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
144                         'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
145                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
146                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
147                         'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
148                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
149                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
150                         'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
151                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
152                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
153                         'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
154                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
155                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
156                         'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
157                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
158                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
159                         'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
160                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
161                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
162                         'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
163                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
164                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
165                         'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
166                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
167                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
168                         'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
169                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
170                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
171                         'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis',
172         );
173         
174         
175         // RUN TEST 1
176         $postString = '';
177         foreach($_POST as $k => $v)
178         {
179             $postString .= "{$k}=".urlencode($v)."&";
180         }
181         $postString = rtrim($postString, "&");
182         
183         $ch = curl_init("{$GLOBALS['sugar_config']['site_url']}/index.php?entryPoint=WebToLeadCapture");
184         curl_setopt($ch, CURLOPT_POST, count($_POST) + 1);
185         curl_setopt($ch, CURLOPT_POSTFIELDS, $postString);
186         curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
187         curl_setopt($ch, CURLOPT_HEADER, 1);
188         ob_start();
189         $return = curl_exec($ch);
190         $output = ob_get_clean();
191         
192         $matches = array();
193         preg_match('/form name="redirect"/', $output, $matches);
194         $this->assertTrue(count($matches) > 0, "Should have output a form since we have a long get string");
195     }
196 }
197 ?>