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']);
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']);
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']);
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']);
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() {
76 On which horse shall you ride?
78 On Sep 23, alincoln wrote:
80 > Hey bro do you want to go ride horses tomorrow?
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";
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";
131 private function getEmailBodies() {
132 $trailing_space = ' ';
133 $emdash = "\xE2\x80\x94";
139 On May 30, 2011, at 8:36 PM, Someone wrote:
148 On Fri, May 27, 2011 at 9:39 AM, Someone <
149 somebody@somewhere.com> wrote:
158 On Fri, May 27, 2011 at 9:39 AM, Someone
159 <somebody@somewhere.com> wrote:
168 -----Oprindelig Meddelelse-----
176 -----Original Message-----
184 -----oprindelig meddelelse-----
192 -----original message-----
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
214 Supreme Galactic Emperor
226 ________________________________________
227 From: Abraham Lincoln <alincoln@logcab.in>
228 Subject: Core World Tariffs
234 > On 17 Oct 2013, at 17:47, "Someone" <somebody@somewhere> wrote:
241 > -----Original Message-----
247 OKAY {$emdash}{$trailing_space}
261 2015-05-06 11:21 GMT-07:00 Someone <someone@somewhere.com>: