[ Index ]
 

Code source de CMS made simple 1.0.5

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/modules/CMSMailer/phpmailer/test/ -> phpmailer_test.php (source)

   1  <?php
   2  /*******************

   3    Unit Test

   4    Type: phpmailer class

   5  ********************/
   6  
   7  $INCLUDE_DIR = "../";
   8  
   9  require ("phpunit.php");
  10  require($INCLUDE_DIR . "class.phpmailer.php");
  11  error_reporting(E_ALL);
  12  
  13  /**

  14   * Performs authentication tests

  15   */
  16  class phpmailerTest extends TestCase
  17  {
  18      /**

  19       * Holds the default phpmailer instance.

  20       * @private

  21       * @type object

  22       */
  23      var $Mail = false;
  24  
  25      /**

  26       * Holds the SMTP mail host.

  27       * @public

  28       * @type string

  29       */
  30      var $Host = "";
  31      
  32      /**

  33       * Holds the change log.

  34       * @private

  35       * @type string array

  36       */
  37      var $ChangeLog = array();
  38      
  39       /**

  40       * Holds the note log.

  41       * @private

  42       * @type string array

  43       */
  44      var $NoteLog = array();   
  45  
  46      /**

  47       * Class constuctor.

  48       */
  49      function phpmailerTest($name) {
  50          /* must define this constructor */

  51          $this->TestCase( $name );
  52      }
  53      
  54      /**

  55       * Run before each test is started.

  56       */
  57      function setUp() {
  58          global $global_vars;
  59          global $INCLUDE_DIR;
  60  
  61          $this->Mail = new PHPMailer();
  62  
  63          $this->Mail->Priority = 3;
  64          $this->Mail->Encoding = "8bit";
  65          $this->Mail->CharSet = "iso-8859-1";
  66          $this->Mail->From = "unit_test@phpmailer.sf.net";
  67          $this->Mail->FromName = "Unit Tester";
  68          $this->Mail->Sender = "";
  69          $this->Mail->Subject = "Unit Test";
  70          $this->Mail->Body = "";
  71          $this->Mail->AltBody = "";
  72          $this->Mail->WordWrap = 0;
  73          $this->Mail->Host = $global_vars["mail_host"];
  74          $this->Mail->Port = 25;
  75          $this->Mail->Helo = "localhost.localdomain";
  76          $this->Mail->SMTPAuth = false;
  77          $this->Mail->Username = "";
  78          $this->Mail->Password = "";
  79          $this->Mail->PluginDir = $INCLUDE_DIR;
  80          $this->Mail->AddReplyTo("no_reply@phpmailer.sf.net", "Reply Guy");
  81          $this->Mail->Sender = "unit_test@phpmailer.sf.net";
  82  
  83          if(strlen($this->Mail->Host) > 0)
  84              $this->Mail->Mailer = "smtp";
  85          else
  86          {
  87              $this->Mail->Mailer = "mail";
  88              $this->Sender = "unit_test@phpmailer.sf.net";
  89          }
  90          
  91          global $global_vars;
  92          $this->SetAddress($global_vars["mail_to"], "Test User");
  93          if(strlen($global_vars["mail_cc"]) > 0)
  94              $this->SetAddress($global_vars["mail_cc"], "Carbon User", "cc");
  95      }     
  96  
  97      /**

  98       * Run after each test is completed.

  99       */
 100      function tearDown() {
 101          // Clean global variables

 102          $this->Mail = NULL;
 103          $this->ChangeLog = array();
 104          $this->NoteLog = array();
 105      }
 106  
 107  
 108      /**

 109       * Build the body of the message in the appropriate format.

 110       * @private

 111       * @returns void

 112       */
 113      function BuildBody() {
 114          $this->CheckChanges();
 115          
 116          // Determine line endings for message        

 117          if($this->Mail->ContentType == "text/html" || strlen($this->Mail->AltBody) > 0)
 118          {
 119              $eol = "<br/>";
 120              $bullet = "<li>";
 121              $bullet_start = "<ul>";
 122              $bullet_end = "</ul>";
 123          }
 124          else
 125          {
 126              $eol = "\n";
 127              $bullet = " - ";
 128              $bullet_start = "";
 129              $bullet_end = "";
 130          }
 131          
 132          $ReportBody = "";
 133          
 134          $ReportBody .= "---------------------" . $eol;
 135          $ReportBody .= "Unit Test Information" . $eol;
 136          $ReportBody .= "---------------------" . $eol;
 137          $ReportBody .= "phpmailer version: " . $this->Mail->Version . $eol;
 138          $ReportBody .= "Content Type: " . $this->Mail->ContentType . $eol;
 139          
 140          if(strlen($this->Mail->Host) > 0)
 141              $ReportBody .= "Host: " . $this->Mail->Host . $eol;
 142          
 143          // If attachments then create an attachment list

 144          if(count($this->Mail->attachment) > 0)
 145          {
 146              $ReportBody .= "Attachments:" . $eol;
 147              $ReportBody .= $bullet_start;
 148              for($i = 0; $i < count($this->Mail->attachment); $i++)
 149              {
 150                  $ReportBody .= $bullet . "Name: " . $this->Mail->attachment[$i][1] . ", ";
 151                  $ReportBody .= "Encoding: " . $this->Mail->attachment[$i][3] . ", ";
 152                  $ReportBody .= "Type: " . $this->Mail->attachment[$i][4] . $eol;
 153              }
 154              $ReportBody .= $bullet_end . $eol;
 155          }
 156          
 157          // If there are changes then list them

 158          if(count($this->ChangeLog) > 0)
 159          {
 160              $ReportBody .= "Changes" . $eol;
 161              $ReportBody .= "-------" . $eol;
 162  
 163              $ReportBody .= $bullet_start;
 164              for($i = 0; $i < count($this->ChangeLog); $i++)
 165              {
 166                  $ReportBody .= $bullet . $this->ChangeLog[$i][0] . " was changed to [" . 
 167                                 $this->ChangeLog[$i][1] . "]" . $eol;
 168              }
 169              $ReportBody .= $bullet_end . $eol . $eol;
 170          }
 171          
 172          // If there are notes then list them

 173          if(count($this->NoteLog) > 0)
 174          {
 175              $ReportBody .= "Notes" . $eol;
 176              $ReportBody .= "-----" . $eol;
 177  
 178              $ReportBody .= $bullet_start;
 179              for($i = 0; $i < count($this->NoteLog); $i++)
 180              {
 181                  $ReportBody .= $bullet . $this->NoteLog[$i] . $eol;
 182              }
 183              $ReportBody .= $bullet_end;
 184          }
 185          
 186          // Re-attach the original body

 187          $this->Mail->Body .= $eol . $eol . $ReportBody;
 188      }
 189      
 190      /**

 191       * Check which default settings have been changed for the report.

 192       * @private

 193       * @returns void

 194       */
 195      function CheckChanges() {
 196          if($this->Mail->Priority != 3)
 197              $this->AddChange("Priority", $this->Mail->Priority);
 198          if($this->Mail->Encoding != "8bit")
 199              $this->AddChange("Encoding", $this->Mail->Encoding);
 200          if($this->Mail->CharSet != "iso-8859-1")
 201              $this->AddChange("CharSet", $this->Mail->CharSet);
 202          if($this->Mail->Sender != "")
 203              $this->AddChange("Sender", $this->Mail->Sender);
 204          if($this->Mail->WordWrap != 0)
 205              $this->AddChange("WordWrap", $this->Mail->WordWrap);
 206          if($this->Mail->Mailer != "mail")
 207              $this->AddChange("Mailer", $this->Mail->Mailer);
 208          if($this->Mail->Port != 25)
 209              $this->AddChange("Port", $this->Mail->Port);
 210          if($this->Mail->Helo != "localhost.localdomain")
 211              $this->AddChange("Helo", $this->Mail->Helo);
 212          if($this->Mail->SMTPAuth)
 213              $this->AddChange("SMTPAuth", "true");
 214      }
 215      
 216      /**

 217       * Adds a change entry.

 218       * @private

 219       * @returns void

 220       */
 221      function AddChange($sName, $sNewValue) {
 222          $cur = count($this->ChangeLog);
 223          $this->ChangeLog[$cur][0] = $sName;
 224          $this->ChangeLog[$cur][1] = $sNewValue;
 225      }
 226      
 227      /**

 228       * Adds a simple note to the message.

 229       * @public

 230       * @returns void

 231       */
 232      function AddNote($sValue) {
 233          $this->NoteLog[] = $sValue;
 234      }
 235  
 236      /**

 237       * Adds all of the addresses

 238       * @public

 239       * @returns void

 240       */
 241      function SetAddress($sAddress, $sName = "", $sType = "to") {
 242          switch($sType)
 243          {
 244              case "to":
 245                  $this->Mail->AddAddress($sAddress, $sName);
 246                  break;
 247              case "cc":
 248                  $this->Mail->AddCC($sAddress, $sName);
 249                  break;
 250              case "bcc":
 251                  $this->Mail->AddBCC($sAddress, $sName);
 252                  break;
 253          }
 254      }
 255  
 256      /////////////////////////////////////////////////

 257      // UNIT TESTS

 258      /////////////////////////////////////////////////

 259  
 260      /**

 261       * Try a plain message.

 262       */
 263      function test_WordWrap() {
 264  
 265          $this->Mail->WordWrap = 40;
 266          $my_body = "Here is the main body of this message.  It should " .
 267                     "be quite a few lines.  It should be wrapped at the " .
 268                     "40 characters.  Make sure that it is.";
 269          $nBodyLen = strlen($my_body);
 270          $my_body .= "\n\nThis is the above body length: " . $nBodyLen;
 271  
 272          $this->Mail->Body = $my_body;
 273          $this->Mail->Subject .= ": Wordwrap";
 274  
 275          $this->BuildBody();
 276          $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);
 277      }
 278  
 279      /**

 280       * Try a plain message.

 281       */
 282      function test_Low_Priority() {
 283      
 284          $this->Mail->Priority = 5;
 285          $this->Mail->Body = "Here is the main body.  There should be " .
 286                              "a reply to address in this message.";
 287          $this->Mail->Subject .= ": Low Priority";
 288          $this->Mail->AddReplyTo("nobody@nobody.com", "Nobody (Unit Test)");
 289  
 290          $this->BuildBody();
 291          $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);
 292      }
 293  
 294      /**

 295       * Simple plain file attachment test.

 296       */
 297      function test_Multiple_Plain_FileAttachment() {
 298  
 299          $this->Mail->Body = "Here is the text body";
 300          $this->Mail->Subject .= ": Plain + Multiple FileAttachments";
 301  
 302          if(!$this->Mail->AddAttachment("test.png"))
 303          {
 304              $this->assert(false, $this->Mail->ErrorInfo);
 305              return;
 306          }
 307  
 308          if(!$this->Mail->AddAttachment("phpmailer_test.php", "test.txt"))
 309          {
 310              $this->assert(false, $this->Mail->ErrorInfo);
 311              return;
 312          }
 313  
 314          $this->BuildBody();
 315          $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);
 316      }
 317  
 318      /**

 319       * Simple plain string attachment test.

 320       */
 321      function test_Plain_StringAttachment() {
 322  
 323          $this->Mail->Body = "Here is the text body";
 324          $this->Mail->Subject .= ": Plain + StringAttachment";
 325          
 326          $sAttachment = "These characters are the content of the " .
 327                         "string attachment.\nThis might be taken from a ".
 328                         "database or some other such thing. ";
 329          
 330          $this->Mail->AddStringAttachment($sAttachment, "string_attach.txt");
 331  
 332          $this->BuildBody();
 333          $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);
 334      }
 335  
 336      /**

 337       * Plain quoted-printable message.

 338       */
 339      function test_Quoted_Printable() {
 340  
 341          $this->Mail->Body = "Here is the main body";
 342          $this->Mail->Subject .= ": Plain + Quoted-printable";
 343          $this->Mail->Encoding = "quoted-printable";
 344  
 345          $this->BuildBody();
 346          $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);
 347      }
 348  
 349      /**

 350       * Try a plain message.

 351       */
 352      function test_Html() {
 353      
 354          $this->Mail->IsHTML(true);
 355          $this->Mail->Subject .= ": HTML only";
 356          
 357          $this->Mail->Body = "This is a <b>test message</b> written in HTML. </br>" .
 358                              "Go to <a href=\"http://phpmailer.sourceforge.net/\">" .
 359                              "http://phpmailer.sourceforge.net/</a> for new versions of " .
 360                              "phpmailer.  <p/> Thank you!";
 361  
 362          $this->BuildBody();
 363          $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);
 364      }
 365  
 366      /**

 367       * Simple HTML and attachment test

 368       */
 369      function test_HTML_Attachment() {
 370  
 371          $this->Mail->Body = "This is the <b>HTML</b> part of the email.";
 372          $this->Mail->Subject .= ": HTML + Attachment";
 373          $this->Mail->IsHTML(true);
 374          
 375          if(!$this->Mail->AddAttachment("phpmailer_test.php", "test_attach.txt"))
 376          {
 377              $this->assert(false, $this->Mail->ErrorInfo);
 378              return;
 379          }
 380  
 381          $this->BuildBody();
 382          $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);
 383      }
 384  
 385      /**

 386       * An embedded attachment test.

 387       */
 388      function test_Embedded_Image() {
 389  
 390          $this->Mail->Body = "Embedded Image: <img alt=\"phpmailer\" src=\"cid:my-attach\">" .
 391                       "Here is an image!</a>";
 392          $this->Mail->Subject .= ": Embedded Image";
 393          $this->Mail->IsHTML(true);
 394          
 395          if(!$this->Mail->AddEmbeddedImage("test.png", "my-attach", "test.png",
 396                                            "base64", "image/png"))
 397          {
 398              $this->assert(false, $this->Mail->ErrorInfo);
 399              return;
 400          }
 401  
 402          $this->BuildBody();
 403          $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);
 404      }
 405  
 406      /**

 407       * An embedded attachment test.

 408       */
 409      function test_Multi_Embedded_Image() {
 410  
 411          $this->Mail->Body = "Embedded Image: <img alt=\"phpmailer\" src=\"cid:my-attach\">" .
 412                       "Here is an image!</a>";
 413          $this->Mail->Subject .= ": Embedded Image + Attachment";
 414          $this->Mail->IsHTML(true);
 415          
 416          if(!$this->Mail->AddEmbeddedImage("test.png", "my-attach", "test.png",
 417                                            "base64", "image/png"))
 418          {
 419              $this->assert(false, $this->Mail->ErrorInfo);
 420              return;
 421          }
 422  
 423          if(!$this->Mail->AddAttachment("phpmailer_test.php", "test.txt"))
 424          {
 425              $this->assert(false, $this->Mail->ErrorInfo);
 426              return;
 427          }
 428          
 429          $this->BuildBody();
 430          $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);
 431      }
 432  
 433      /**

 434       * Simple multipart/alternative test.

 435       */
 436      function test_AltBody() {
 437  
 438          $this->Mail->Body = "This is the <b>HTML</b> part of the email.";
 439          $this->Mail->AltBody = "Here is the text body of this message.  " .
 440                     "It should be quite a few lines.  It should be wrapped at the " .
 441                     "40 characters.  Make sure that it is.";
 442          $this->Mail->WordWrap = 40;
 443          $this->AddNote("This is a mulipart alternative email");
 444          $this->Mail->Subject .= ": AltBody + Word Wrap";
 445  
 446          $this->BuildBody();
 447          $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);
 448      }
 449  
 450      /**

 451       * Simple HTML and attachment test

 452       */
 453      function test_AltBody_Attachment() {
 454  
 455          $this->Mail->Body = "This is the <b>HTML</b> part of the email.";
 456          $this->Mail->AltBody = "This is the text part of the email.";
 457          $this->Mail->Subject .= ": AltBody + Attachment";
 458          $this->Mail->IsHTML(true);
 459          
 460          if(!$this->Mail->AddAttachment("phpmailer_test.php", "test_attach.txt"))
 461          {
 462              $this->assert(false, $this->Mail->ErrorInfo);
 463              return;
 464          }
 465  
 466          $this->BuildBody();
 467          $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);
 468  
 469          $fp = fopen("message.txt", "w");
 470          fwrite($fp, $this->Mail->CreateHeader() . $this->Mail->CreateBody());
 471          fclose($fp);
 472      }    
 473  
 474      function test_MultipleSend() {
 475          $this->Mail->Body = "Sending two messages without keepalive";
 476          $this->BuildBody();
 477          $subject = $this->Mail->Subject;
 478  
 479          $this->Mail->Subject = $subject . ": SMTP 1";
 480          $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);
 481          
 482          $this->Mail->Subject = $subject . ": SMTP 2";
 483          $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);
 484      }
 485  
 486      function test_SmtpKeepAlive() {
 487          $this->Mail->Body = "This was done using the SMTP keep-alive.";
 488          $this->BuildBody();
 489          $subject = $this->Mail->Subject;
 490  
 491          $this->Mail->SMTPKeepAlive = true;
 492          $this->Mail->Subject = $subject . ": SMTP keep-alive 1";
 493          $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);
 494          
 495          $this->Mail->Subject = $subject . ": SMTP keep-alive 2";
 496          $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);
 497          $this->Mail->SmtpClose();
 498      }
 499      
 500      /**

 501       * Tests this denial of service attack: 

 502       *    http://www.cybsec.com/vuln/PHPMailer-DOS.pdf

 503       */
 504      function test_DenialOfServiceAttack() {
 505          $this->Mail->Body = "This should no longer cause a denial of service.";
 506          $this->BuildBody();
 507         
 508          $this->Mail->Subject = str_repeat("A", 998);
 509          $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo);
 510      }
 511      
 512      function test_Error() {
 513          $this->Mail->Subject .= ": This should be sent"; 
 514          $this->BuildBody();
 515          $this->Mail->ClearAllRecipients(); // no addresses should cause an error

 516          $this->assert($this->Mail->IsError() == false, "Error found");
 517          $this->assert($this->Mail->Send() == false, "Send succeeded");
 518          $this->assert($this->Mail->IsError(), "No error found");
 519          $this->assertEquals('You must provide at least one ' .
 520                              'recipient email address.', $this->Mail->ErrorInfo);
 521          $this->Mail->AddAddress(get("mail_to"));
 522          $this->assert($this->Mail->Send(), "Send failed");
 523      }
 524  }  
 525   
 526  /**

 527   * Create and run test instance.

 528   */
 529   
 530  if(isset($HTTP_GET_VARS))
 531      $global_vars = $HTTP_GET_VARS;
 532  else
 533      $global_vars = $_REQUEST;
 534  
 535  if(isset($global_vars["submitted"]))
 536  {
 537      echo "Test results:<br>";
 538      $suite = new TestSuite( "phpmailerTest" );
 539      
 540      $testRunner = new TestRunner;
 541      $testRunner->run($suite);
 542      echo "<hr noshade/>";
 543  }
 544  
 545  function get($sName) {
 546      global $global_vars;
 547      if(isset($global_vars[$sName]))
 548          return $global_vars[$sName];
 549      else
 550          return "";
 551  }
 552  
 553  ?>
 554  
 555  <html>
 556  <body>
 557  <h3>phpmailer Unit Test</h3>
 558  By entering a SMTP hostname it will automatically perform tests with SMTP.
 559  
 560  <form name="phpmailer_unit" action="phpmailer_test.php" method="get">
 561  <input type="hidden" name="submitted" value="1"/>
 562  To Address: <input type="text" size="50" name="mail_to" value="<?php echo get("mail_to"); ?>"/>
 563  <br/>
 564  Cc Address: <input type="text" size="50" name="mail_cc" value="<?php echo get("mail_cc"); ?>"/>
 565  <br/>
 566  SMTP Hostname: <input type="text" size="50" name="mail_host" value="<?php echo get("mail_host"); ?>"/>
 567  <p/>
 568  <input type="submit" value="Run Test"/>
 569  
 570  </form>
 571  </body>
 572  </html>


Généré le : Tue Apr 3 18:50:37 2007 par Balluche grâce à PHPXref 0.7