]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - tests/modules/Campaigns/Bug35014Test.php
Added unit tests.
[Github/sugarcrm.git] / tests / modules / Campaigns / Bug35014Test.php
1 <?php 
2
3 class Bug35014Test extends Sugar_PHPUnit_Framework_TestCase
4 {
5         private $campaign_id;
6         
7         public function setUp()
8     {
9
10         $this->markTestSkipped('SugarTestCampaignUtilities does not exist');
11         $GLOBALS['current_user'] = SugarTestUserUtilities::createAnonymousUser();
12         $campaign = SugarTestCampaignUtilities::createCampaign();
13         $this->campaign_id = $campaign->id;
14         }
15
16     public function tearDown()
17     {
18         SugarTestCampaignUtilities::removeAllCreatedCampaigns();
19         SugarTestUserUtilities::removeAllCreatedAnonymousUsers();
20         unset($GLOBALS['current_user']);
21     }
22     
23     public function testLeadCaptureResponse()
24     {
25         // SET GLOBAL PHP VARIABLES
26         $_POST = array
27         (
28             'first_name' => 'Sadek',
29             'last_name' => 'Baroudi',
30             'campaign_id' => $this->campaign_id,
31             'redirect_url' => 'http://www.sugarcrm.com/index.php',
32             'assigned_user_id' => 1,
33             'team_id' => '1',
34             'team_set_id' => 'Global',
35             'req_id' => 'last_name;',
36         );
37         
38         // RUN TEST 1
39         $postString = '';
40         foreach($_POST as $k => $v)
41         {
42             $postString .= "{$k}=".urlencode($v)."&";
43         }
44         $postString = rtrim($postString, "&");
45         
46         $ch = curl_init("{$GLOBALS['sugar_config']['site_url']}/index.php?entryPoint=WebToLeadCapture");
47         curl_setopt($ch, CURLOPT_POST, count($_POST) + 1);
48         curl_setopt($ch, CURLOPT_POSTFIELDS, $postString);
49         curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
50         curl_setopt($ch, CURLOPT_HEADER, 1);
51         ob_start();
52         $return = curl_exec($ch);
53         $output = ob_get_clean();
54         
55         $matches = array();
56         preg_match("/Location: .*/", $output, $matches);
57         $this->assertTrue(count($matches) > 0, "Could not get the header information for the response");
58         
59         $location = '';
60         if(count($matches) > 0){
61             $location = str_replace("Location :", "", $matches[0]);
62         }
63         
64         $query_string = substr($location, strpos($location, "?") + 1);
65         $query_string_array = explode("&", $query_string);
66         
67         $post_compare_array = array();
68         $skipKeys = array('module', 'action', 'entryPoint', 'client_id_address');
69         foreach($query_string_array as $key_val)
70         {
71             $key_val_array = explode("=", $key_val);
72             if(in_array($key_val_array[0], $skipKeys))
73                 continue;
74             $post_compare_array[$key_val_array[0]] = $key_val_array[1];
75         }
76         
77         // the redirect_url doesn't get returned, so we unset it
78         unset($_POST['redirect_url']);
79         
80         $this->assertEquals($_POST, $post_compare_array, "The returned get location doesn't match that of the post passed in");
81         
82         
83         // SET GLOBAL PHP VARIABLES
84         $_POST = array
85         (
86             'first_name' => 'Sadek',
87             'last_name' => 'Baroudi',
88             'campaign_id' => $this->campaign_id,
89             'redirect_url' => 'http://www.sugarcrm.com/index.php',
90             'assigned_user_id' => 1,
91             'team_id' => '1',
92             'team_set_id' => 'Global',
93             'req_id' => 'last_name;',
94             'SuperLongGetVar' => 
95                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
96                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
97                         'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
98                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
99                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
100                         'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
101                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
102                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
103                         'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
104                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
105                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
106                         'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
107                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
108                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
109                         'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
110                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
111                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
112                         'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
113                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
114                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
115                         'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
116                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
117                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
118                         'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
119                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
120                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
121                         'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
122                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
123                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
124                         'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
125                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
126                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
127                         'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
128                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
129                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
130                         'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
131                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
132                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
133                         'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
134                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
135                 'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis'.
136                         'PneumonoultramicroscopicsilicovolcanoconiosisPneumonoultramicroscopicsilicovolcanoconiosis',
137         );
138         
139         
140         // RUN TEST 1
141         $postString = '';
142         foreach($_POST as $k => $v)
143         {
144             $postString .= "{$k}=".urlencode($v)."&";
145         }
146         $postString = rtrim($postString, "&");
147         
148         $ch = curl_init("{$GLOBALS['sugar_config']['site_url']}/index.php?entryPoint=WebToLeadCapture");
149         curl_setopt($ch, CURLOPT_POST, count($_POST) + 1);
150         curl_setopt($ch, CURLOPT_POSTFIELDS, $postString);
151         curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
152         curl_setopt($ch, CURLOPT_HEADER, 1);
153         ob_start();
154         $return = curl_exec($ch);
155         $output = ob_get_clean();
156         
157         $matches = array();
158         preg_match('/form name="redirect"/', $output, $matches);
159         $this->assertTrue(count($matches) > 0, "Should have output a form since we have a long get string");
160     }
161 }
162 ?>