Correct Aphlict websocket URI construction after PHP8 compatibility changes
[phabricator.git] / src / applications / metamta / parser / __tests__ / PhabricatorMetaMTAEmailBodyParserTestCase.php
blobd8ad49956d140f1b8b49e972e663545ee1c23a9c
1 <?php
3 final class PhabricatorMetaMTAEmailBodyParserTestCase
4 extends PhabricatorTestCase {
6 public function testQuotedTextStripping() {
7 $bodies = $this->getEmailBodies();
8 foreach ($bodies as $body) {
9 $parser = new PhabricatorMetaMTAEmailBodyParser();
10 $stripped = $parser->stripTextBody($body);
11 $this->assertEqual('OKAY', $stripped);
15 public function testEmailBodyCommandParsing() {
16 $bodies = $this->getEmailBodiesWithFullCommands();
17 foreach ($bodies as $body) {
18 $parser = new PhabricatorMetaMTAEmailBodyParser();
19 $body_data = $parser->parseBody($body);
20 $this->assertEqual('OKAY', $body_data['body']);
21 $this->assertEqual(
22 array(
23 array('whatevs', 'dude'),
25 $body_data['commands']);
28 $bodies = $this->getEmailBodiesWithPartialCommands();
29 foreach ($bodies as $body) {
30 $parser = new PhabricatorMetaMTAEmailBodyParser();
31 $body_data = $parser->parseBody($body);
32 $this->assertEqual('OKAY', $body_data['body']);
33 $this->assertEqual(
34 array(
35 array('whatevs'),
37 $body_data['commands']);
40 $bodies = $this->getEmailBodiesWithMultipleCommands();
41 foreach ($bodies as $body) {
42 $parser = new PhabricatorMetaMTAEmailBodyParser();
43 $body_data = $parser->parseBody($body);
44 $this->assertEqual("preface\n\nOKAY", $body_data['body']);
45 $this->assertEqual(
46 array(
47 array('top1'),
48 array('top2'),
50 $body_data['commands']);
53 $bodies = $this->getEmailBodiesWithSplitCommands();
54 foreach ($bodies as $body) {
55 $parser = new PhabricatorMetaMTAEmailBodyParser();
56 $body_data = $parser->parseBody($body);
57 $this->assertEqual('OKAY', $body_data['body']);
58 $this->assertEqual(
59 array(
60 array('cmd1'),
61 array('cmd2'),
63 $body_data['commands']);
66 $bodies = $this->getEmailBodiesWithMiddleCommands();
67 foreach ($bodies as $body) {
68 $parser = new PhabricatorMetaMTAEmailBodyParser();
69 $body_data = $parser->parseBody($body);
70 $this->assertEqual("HEAD\n!cmd2\nTAIL", $body_data['body']);
74 public function testFalsePositiveForOnWrote() {
75 $body = <<<EOEMAIL
76 On which horse shall you ride?
78 On Sep 23, alincoln wrote:
80 > Hey bro do you want to go ride horses tomorrow?
81 EOEMAIL;
83 $parser = new PhabricatorMetaMTAEmailBodyParser();
84 $stripped = $parser->stripTextBody($body);
85 $this->assertEqual('On which horse shall you ride?', $stripped);
88 private function getEmailBodiesWithFullCommands() {
89 $bodies = $this->getEmailBodies();
90 $with_commands = array();
91 foreach ($bodies as $body) {
92 $with_commands[] = "!whatevs dude\n".$body;
94 return $with_commands;
97 private function getEmailBodiesWithPartialCommands() {
98 $bodies = $this->getEmailBodies();
99 $with_commands = array();
100 foreach ($bodies as $body) {
101 $with_commands[] = "!whatevs\n".$body;
103 return $with_commands;
106 private function getEmailBodiesWithMultipleCommands() {
107 $bodies = $this->getEmailBodies();
108 $with_commands = array();
109 foreach ($bodies as $body) {
110 $with_commands[] = "!top1\n\n!top2\n\npreface\n\n".$body;
112 return $with_commands;
115 private function getEmailBodiesWithSplitCommands() {
116 $with_split = array();
117 $with_split[] = "!cmd1\n!cmd2\nOKAY";
118 $with_split[] = "!cmd1\nOKAY\n!cmd2";
119 $with_split[] = "OKAY\n!cmd1\n!cmd2";
120 return $with_split;
123 private function getEmailBodiesWithMiddleCommands() {
124 $with_middle = array();
125 $with_middle[] = "!cmd1\nHEAD\n!cmd2\nTAIL\n!cmd3";
126 $with_middle[] = "!cmd1\nHEAD\n!cmd2\nTAIL";
127 $with_middle[] = "HEAD\n!cmd2\nTAIL\n!cmd3";
128 return $with_middle;
131 private function getEmailBodies() {
132 $trailing_space = ' ';
133 $emdash = "\xE2\x80\x94";
135 return array(
136 <<<EOEMAIL
137 OKAY
139 On May 30, 2011, at 8:36 PM, Someone wrote:
141 > ...
143 EOEMAIL
145 <<<EOEMAIL
146 OKAY
148 On Fri, May 27, 2011 at 9:39 AM, Someone <
149 somebody@somewhere.com> wrote:
151 > ...
153 EOEMAIL
155 <<<EOEMAIL
156 OKAY
158 On Fri, May 27, 2011 at 9:39 AM, Someone
159 <somebody@somewhere.com> wrote:
161 > ...
163 EOEMAIL
165 <<<EOEMAIL
166 OKAY
168 -----Oprindelig Meddelelse-----
170 > ...
171 EOEMAIL
173 <<<EOEMAIL
174 OKAY
176 -----Original Message-----
178 > ...
179 EOEMAIL
181 <<<EOEMAIL
182 OKAY
184 -----oprindelig meddelelse-----
186 > ...
187 EOEMAIL
189 <<<EOEMAIL
190 OKAY
192 -----original message-----
194 > ...
195 EOEMAIL
197 <<<EOEMAIL
198 OKAY
200 Sent from my HTC smartphone on the Now Network from Sprint!
202 -Reply message ----- From: "somebody (someone)" <
203 somebody@somewhere.com>
204 To: <somebody@somewhere.com>
205 Subject: Some Text Date: Mon, Apr 2, 2012 1:42 pm
206 > ...
207 EOEMAIL
209 <<<EOEMAIL
210 OKAY
212 --{$trailing_space}
213 Abraham Lincoln
214 Supreme Galactic Emperor
215 EOEMAIL
217 <<<EOEMAIL
218 OKAY
220 Sent from my iPhone
221 EOEMAIL
223 <<<EOMAIL
224 OKAY
226 ________________________________________
227 From: Abraham Lincoln <alincoln@logcab.in>
228 Subject: Core World Tariffs
229 EOMAIL
231 <<<EOMAIL
232 OKAY
234 > On 17 Oct 2013, at 17:47, "Someone" <somebody@somewhere> wrote:
235 > ...
236 EOMAIL
238 <<<EOMAIL
239 OKAY
241 > -----Original Message-----
243 > ...
244 EOMAIL
246 <<<EOMAIL
247 OKAY {$emdash}{$trailing_space}
248 Sent from Mailbox
249 EOMAIL
251 <<<EOMAIL
252 OKAY
254 {$emdash}
255 Sent from Mailbox
256 EOMAIL
258 <<<EOMAIL
259 OKAY
261 2015-05-06 11:21 GMT-07:00 Someone <someone@somewhere.com>:
262 > ...
263 EOMAIL