[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/metamta/receiver/__tests__/ -> PhabricatorObjectMailReceiverTestCase.php (source)

   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  }


Generated: Sun Nov 30 09:20:46 2014 Cross-referenced by PHPXref 0.7.1