[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class PhabricatorObjectMailReceiverTestCase 4 extends PhabricatorTestCase { 5 6 protected function getPhabricatorTestCaseConfiguration() { 7 return array( 8 self::PHABRICATOR_TESTCONFIG_BUILD_STORAGE_FIXTURES => true, 9 ); 10 } 11 12 public function testDropUnconfiguredPublicMail() { 13 list($task, $user, $mail) = $this->buildMail('public'); 14 15 $env = PhabricatorEnv::beginScopedEnv(); 16 $env->overrideEnvConfig('metamta.public-replies', false); 17 18 $mail->save(); 19 $mail->processReceivedMail(); 20 21 $this->assertEqual( 22 MetaMTAReceivedMailStatus::STATUS_NO_PUBLIC_MAIL, 23 $mail->getStatus()); 24 } 25 26 /* 27 28 TODO: Tasks don't support policies yet. Implement this once they do. 29 30 public function testDropPolicyViolationMail() { 31 list($task, $user, $mail) = $this->buildMail('public'); 32 33 // TODO: Set task policy to "no one" here. 34 35 $mail->save(); 36 $mail->processReceivedMail(); 37 38 $this->assertEqual( 39 MetaMTAReceivedMailStatus::STATUS_POLICY_PROBLEM, 40 $mail->getStatus()); 41 } 42 43 */ 44 45 public function testDropInvalidObjectMail() { 46 list($task, $user, $mail) = $this->buildMail('404'); 47 48 $mail->save(); 49 $mail->processReceivedMail(); 50 51 $this->assertEqual( 52 MetaMTAReceivedMailStatus::STATUS_NO_SUCH_OBJECT, 53 $mail->getStatus()); 54 } 55 56 public function testDropUserMismatchMail() { 57 list($task, $user, $mail) = $this->buildMail('baduser'); 58 59 $mail->save(); 60 $mail->processReceivedMail(); 61 62 $this->assertEqual( 63 MetaMTAReceivedMailStatus::STATUS_USER_MISMATCH, 64 $mail->getStatus()); 65 } 66 67 public function testDropHashMismatchMail() { 68 list($task, $user, $mail) = $this->buildMail('badhash'); 69 70 $mail->save(); 71 $mail->processReceivedMail(); 72 73 $this->assertEqual( 74 MetaMTAReceivedMailStatus::STATUS_HASH_MISMATCH, 75 $mail->getStatus()); 76 } 77 78 private function buildMail($style) { 79 80 // TODO: Clean up test data generators so that we don't need to guarantee 81 // the existence of a user. 82 $this->generateNewTestUser(); 83 84 $task = id(new PhabricatorManiphestTaskTestDataGenerator())->generate(); 85 $user = $this->generateNewTestUser(); 86 87 $is_public = ($style === 'public'); 88 $is_bad_hash = ($style == 'badhash'); 89 $is_bad_user = ($style == 'baduser'); 90 $is_404_object = ($style == '404'); 91 92 if ($is_public) { 93 $user_identifier = 'public'; 94 } else if ($is_bad_user) { 95 $user_identifier = $user->getID() + 1; 96 } else { 97 $user_identifier = $user->getID(); 98 } 99 100 if ($is_bad_hash) { 101 $hash = PhabricatorObjectMailReceiver::computeMailHash('x', 'y'); 102 } else { 103 $hash = PhabricatorObjectMailReceiver::computeMailHash( 104 $task->getMailKey(), 105 $is_public ? $task->getPHID() : $user->getPHID()); 106 } 107 108 if ($is_404_object) { 109 $task_identifier = 'T'.($task->getID() + 1); 110 } else { 111 $task_identifier = 'T'.$task->getID(); 112 } 113 114 $to = $task_identifier.'+'.$user_identifier.'+'.$hash.'@example.com'; 115 116 $mail = new PhabricatorMetaMTAReceivedMail(); 117 $mail->setHeaders( 118 array( 119 'Message-ID' => '[email protected]', 120 'From' => $user->loadPrimaryEmail()->getAddress(), 121 'To' => $to, 122 )); 123 124 return array($task, $user, $mail); 125 } 126 127 128 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Nov 30 09:20:46 2014 | Cross-referenced by PHPXref 0.7.1 |