2011-02-27 18:25:23 +00:00
< ? php
/**
* CakeEmailTest file
*
* PHP 5
*
* CakePHP ( tm ) Tests < http :// book . cakephp . org / view / 1196 / Testing >
* Copyright 2005 - 2011 , Cake Software Foundation , Inc . ( http :// cakefoundation . org )
*
* Licensed under The MIT License
* Redistributions of files must retain the above copyright notice
*
* @ copyright Copyright 2005 - 2011 , Cake Software Foundation , Inc . ( http :// cakefoundation . org )
* @ link http :// book . cakephp . org / view / 1196 / Testing CakePHP ( tm ) Tests
2011-07-26 06:16:14 +00:00
* @ package Cake . Test . Case . Network . Email
2011-02-27 18:25:23 +00:00
* @ since CakePHP ( tm ) v 2.0 . 0
* @ license MIT License ( http :// www . opensource . org / licenses / mit - license . php )
*/
2011-04-27 02:19:17 +00:00
App :: uses ( 'CakeEmail' , 'Network/Email' );
2011-02-27 18:25:23 +00:00
2011-03-01 22:30:01 +00:00
/**
* Help to test CakeEmail
*
*/
class TestCakeEmail extends CakeEmail {
2011-04-10 01:56:09 +00:00
/**
* Config
*
*/
protected $_config = array ();
2011-03-01 22:30:01 +00:00
/**
* Wrap to protected method
*
*/
public function formatAddress ( $address ) {
2011-03-03 16:30:23 +00:00
return parent :: _formatAddress ( $address );
}
/**
* Wrap to protected method
*
*/
public function wrap ( $text ) {
return parent :: _wrap ( $text );
2011-03-01 22:30:01 +00:00
}
2011-04-19 13:22:42 +00:00
/**
* Get the boundary attribute
*
* @ return string
*/
public function getBoundary () {
return $this -> _boundary ;
}
2011-03-01 22:30:01 +00:00
}
2011-08-29 01:11:30 +00:00
/*
* EmailConfig class
2011-03-04 11:06:09 +00:00
*
*/
2011-08-29 01:11:30 +00:00
class EmailConfig {
2011-03-04 11:06:09 +00:00
/**
2011-08-29 01:11:30 +00:00
* test config
2011-03-04 11:06:09 +00:00
*
* @ var string
*/
2011-08-29 01:11:30 +00:00
public $test = array (
'from' => array ( 'some@example.com' => 'My website' ),
'to' => array ( 'test@example.com' => 'Testname' ),
'subject' => 'Test mail subject' ,
'transport' => 'Debug' ,
);
2011-03-04 11:06:09 +00:00
}
2011-08-29 14:02:00 +00:00
/*
* ExtendTransport class
* test class to ensure the class has send () method
*
*/
class ExtendTransport {
}
2011-02-27 18:25:23 +00:00
/**
* CakeEmailTest class
*
2011-07-26 06:16:14 +00:00
* @ package Cake . Test . Case . Network . Email
2011-02-27 18:25:23 +00:00
*/
class CakeEmailTest extends CakeTestCase {
2011-03-01 04:31:30 +00:00
/**
* setUp
*
* @ return void
*/
public function setUp () {
parent :: setUp ();
2011-03-01 22:30:01 +00:00
$this -> CakeEmail = new TestCakeEmail ();
2011-03-04 11:29:38 +00:00
App :: build ( array (
2011-05-13 07:53:53 +00:00
'views' => array ( CAKE . 'Test' . DS . 'test_app' . DS . 'View' . DS )
2011-03-04 11:29:38 +00:00
));
}
/**
* tearDown method
*
* @ return void
*/
2011-05-30 20:02:32 +00:00
public function tearDown () {
2011-03-04 11:29:38 +00:00
parent :: tearDown ();
App :: build ();
2011-03-01 04:31:30 +00:00
}
/**
* testFrom method
*
* @ return void
*/
public function testFrom () {
2011-03-21 12:18:36 +00:00
$this -> assertIdentical ( $this -> CakeEmail -> from (), array ());
2011-03-01 04:31:30 +00:00
2011-03-21 12:18:36 +00:00
$this -> CakeEmail -> from ( 'cake@cakephp.org' );
2011-03-01 04:31:30 +00:00
$expected = array ( 'cake@cakephp.org' => 'cake@cakephp.org' );
2011-03-21 12:18:36 +00:00
$this -> assertIdentical ( $this -> CakeEmail -> from (), $expected );
2011-03-01 04:31:30 +00:00
2011-03-21 12:18:36 +00:00
$this -> CakeEmail -> from ( array ( 'cake@cakephp.org' ));
$this -> assertIdentical ( $this -> CakeEmail -> from (), $expected );
2011-03-01 16:50:54 +00:00
2011-03-21 12:18:36 +00:00
$this -> CakeEmail -> from ( 'cake@cakephp.org' , 'CakePHP' );
2011-03-01 04:31:30 +00:00
$expected = array ( 'cake@cakephp.org' => 'CakePHP' );
2011-03-21 12:18:36 +00:00
$this -> assertIdentical ( $this -> CakeEmail -> from (), $expected );
2011-03-01 16:50:54 +00:00
2011-04-16 02:37:55 +00:00
$result = $this -> CakeEmail -> from ( array ( 'cake@cakephp.org' => 'CakePHP' ));
2011-03-21 12:18:36 +00:00
$this -> assertIdentical ( $this -> CakeEmail -> from (), $expected );
2011-04-16 02:37:55 +00:00
$this -> assertIdentical ( $this -> CakeEmail , $result );
2011-08-29 14:02:00 +00:00
$this -> setExpectedException ( 'SocketException' );
$result = $this -> CakeEmail -> from ( array ( 'cake@cakephp.org' => 'CakePHP' , 'fail@cakephp.org' => 'From can only be one address' ));
2011-03-01 04:31:30 +00:00
}
2011-04-20 00:18:02 +00:00
/**
* testSender method
*
* @ return void
*/
public function testSender () {
$this -> CakeEmail -> reset ();
$this -> assertIdentical ( $this -> CakeEmail -> sender (), array ());
$this -> CakeEmail -> sender ( 'cake@cakephp.org' , 'Name' );
$expected = array ( 'cake@cakephp.org' => 'Name' );
$this -> assertIdentical ( $this -> CakeEmail -> sender (), $expected );
$headers = $this -> CakeEmail -> getHeaders ( array ( 'from' => true , 'sender' => true ));
$this -> assertIdentical ( $headers [ 'From' ], false );
$this -> assertIdentical ( $headers [ 'Sender' ], 'Name <cake@cakephp.org>' );
$this -> CakeEmail -> from ( 'cake@cakephp.org' , 'CakePHP' );
$headers = $this -> CakeEmail -> getHeaders ( array ( 'from' => true , 'sender' => true ));
$this -> assertIdentical ( $headers [ 'From' ], 'CakePHP <cake@cakephp.org>' );
$this -> assertIdentical ( $headers [ 'Sender' ], '' );
}
2011-03-01 05:09:05 +00:00
/**
* testTo method
*
* @ return void
*/
public function testTo () {
2011-03-21 12:18:36 +00:00
$this -> assertIdentical ( $this -> CakeEmail -> to (), array ());
2011-03-01 05:09:05 +00:00
2011-04-16 02:37:55 +00:00
$result = $this -> CakeEmail -> to ( 'cake@cakephp.org' );
2011-03-01 05:09:05 +00:00
$expected = array ( 'cake@cakephp.org' => 'cake@cakephp.org' );
2011-03-21 12:18:36 +00:00
$this -> assertIdentical ( $this -> CakeEmail -> to (), $expected );
2011-04-16 02:37:55 +00:00
$this -> assertIdentical ( $this -> CakeEmail , $result );
2011-03-01 05:09:05 +00:00
2011-03-21 12:18:36 +00:00
$this -> CakeEmail -> to ( 'cake@cakephp.org' , 'CakePHP' );
2011-03-01 05:09:05 +00:00
$expected = array ( 'cake@cakephp.org' => 'CakePHP' );
2011-03-21 12:18:36 +00:00
$this -> assertIdentical ( $this -> CakeEmail -> to (), $expected );
2011-03-01 05:09:05 +00:00
$list = array (
'cake@cakephp.org' => 'Cake PHP' ,
'cake-php@googlegroups.com' => 'Cake Groups' ,
'root@cakephp.org'
);
2011-03-21 12:18:36 +00:00
$this -> CakeEmail -> to ( $list );
2011-03-01 05:09:05 +00:00
$expected = array (
'cake@cakephp.org' => 'Cake PHP' ,
'cake-php@googlegroups.com' => 'Cake Groups' ,
'root@cakephp.org' => 'root@cakephp.org'
);
2011-03-21 12:18:36 +00:00
$this -> assertIdentical ( $this -> CakeEmail -> to (), $expected );
2011-03-01 05:09:05 +00:00
$this -> CakeEmail -> addTo ( 'jrbasso@cakephp.org' );
$this -> CakeEmail -> addTo ( 'mark_story@cakephp.org' , 'Mark Story' );
2011-04-16 02:37:55 +00:00
$result = $this -> CakeEmail -> addTo ( array ( 'phpnut@cakephp.org' => 'PhpNut' , 'jose_zap@cakephp.org' ));
2011-03-01 05:09:05 +00:00
$expected = array (
'cake@cakephp.org' => 'Cake PHP' ,
'cake-php@googlegroups.com' => 'Cake Groups' ,
'root@cakephp.org' => 'root@cakephp.org' ,
'jrbasso@cakephp.org' => 'jrbasso@cakephp.org' ,
'mark_story@cakephp.org' => 'Mark Story' ,
'phpnut@cakephp.org' => 'PhpNut' ,
'jose_zap@cakephp.org' => 'jose_zap@cakephp.org'
);
2011-03-21 12:18:36 +00:00
$this -> assertIdentical ( $this -> CakeEmail -> to (), $expected );
2011-04-16 02:37:55 +00:00
$this -> assertIdentical ( $this -> CakeEmail , $result );
2011-03-01 05:09:05 +00:00
}
2011-03-01 22:46:20 +00:00
/**
* Data provider function for testBuildInvalidData
*
* @ return array
*/
public static function invalidEmails () {
return array (
array ( 1.0 ),
array ( '' ),
array ( 'string' ),
array ( '<tag>' ),
array ( 'some@one.whereis' ),
2011-08-29 14:02:00 +00:00
array ( 'wrong@key' => 'Name' ),
2011-03-01 22:46:20 +00:00
array ( array ( 'ok@cakephp.org' , 1.0 , '' , 'string' ))
);
}
/**
* testBuildInvalidData
*
* @ dataProvider invalidEmails
* @ expectedException SocketException
2011-03-01 23:57:45 +00:00
* @ return void
2011-03-01 22:46:20 +00:00
*/
public function testInvalidEmail ( $value ) {
2011-03-21 12:18:36 +00:00
$this -> CakeEmail -> to ( $value );
2011-03-01 22:46:20 +00:00
}
2011-08-29 14:02:00 +00:00
/**
* testBuildInvalidData
*
* @ dataProvider invalidEmails
* @ expectedException SocketException
* @ return void
*/
public function testInvalidEmailAdd ( $value ) {
$this -> CakeEmail -> addTo ( $value );
}
2011-03-01 22:30:01 +00:00
/**
* testFormatAddress method
*
* @ return void
*/
public function testFormatAddress () {
$result = $this -> CakeEmail -> formatAddress ( array ( 'cake@cakephp.org' => 'cake@cakephp.org' ));
$expected = array ( 'cake@cakephp.org' );
2011-05-16 22:49:00 +00:00
$this -> assertIdentical ( $expected , $result );
2011-03-01 22:30:01 +00:00
$result = $this -> CakeEmail -> formatAddress ( array ( 'cake@cakephp.org' => 'cake@cakephp.org' , 'php@cakephp.org' => 'php@cakephp.org' ));
$expected = array ( 'cake@cakephp.org' , 'php@cakephp.org' );
2011-05-16 22:49:00 +00:00
$this -> assertIdentical ( $expected , $result );
2011-03-01 22:30:01 +00:00
$result = $this -> CakeEmail -> formatAddress ( array ( 'cake@cakephp.org' => 'CakePHP' , 'php@cakephp.org' => 'Cake' ));
$expected = array ( 'CakePHP <cake@cakephp.org>' , 'Cake <php@cakephp.org>' );
2011-05-16 22:49:00 +00:00
$this -> assertIdentical ( $expected , $result );
2011-03-01 22:30:01 +00:00
$result = $this -> CakeEmail -> formatAddress ( array ( 'cake@cakephp.org' => 'ÄÖÜTest' ));
$expected = array ( '=?UTF-8?B?w4TDlsOcVGVzdA==?= <cake@cakephp.org>' );
2011-05-16 22:49:00 +00:00
$this -> assertIdentical ( $expected , $result );
2011-03-01 22:30:01 +00:00
}
2011-03-04 12:00:32 +00:00
/**
* testAddresses method
*
* @ return void
*/
public function testAddresses () {
$this -> CakeEmail -> reset ();
2011-03-21 12:18:36 +00:00
$this -> CakeEmail -> from ( 'cake@cakephp.org' , 'CakePHP' );
$this -> CakeEmail -> replyTo ( 'replyto@cakephp.org' , 'ReplyTo CakePHP' );
$this -> CakeEmail -> readReceipt ( 'readreceipt@cakephp.org' , 'ReadReceipt CakePHP' );
$this -> CakeEmail -> returnPath ( 'returnpath@cakephp.org' , 'ReturnPath CakePHP' );
$this -> CakeEmail -> to ( 'to@cakephp.org' , 'To CakePHP' );
$this -> CakeEmail -> cc ( 'cc@cakephp.org' , 'Cc CakePHP' );
$this -> CakeEmail -> bcc ( 'bcc@cakephp.org' , 'Bcc CakePHP' );
2011-03-04 12:00:32 +00:00
$this -> CakeEmail -> addTo ( 'to2@cakephp.org' , 'To2 CakePHP' );
$this -> CakeEmail -> addCc ( 'cc2@cakephp.org' , 'Cc2 CakePHP' );
$this -> CakeEmail -> addBcc ( 'bcc2@cakephp.org' , 'Bcc2 CakePHP' );
2011-03-21 12:18:36 +00:00
$this -> assertIdentical ( $this -> CakeEmail -> from (), array ( 'cake@cakephp.org' => 'CakePHP' ));
$this -> assertIdentical ( $this -> CakeEmail -> replyTo (), array ( 'replyto@cakephp.org' => 'ReplyTo CakePHP' ));
$this -> assertIdentical ( $this -> CakeEmail -> readReceipt (), array ( 'readreceipt@cakephp.org' => 'ReadReceipt CakePHP' ));
$this -> assertIdentical ( $this -> CakeEmail -> returnPath (), array ( 'returnpath@cakephp.org' => 'ReturnPath CakePHP' ));
$this -> assertIdentical ( $this -> CakeEmail -> to (), array ( 'to@cakephp.org' => 'To CakePHP' , 'to2@cakephp.org' => 'To2 CakePHP' ));
$this -> assertIdentical ( $this -> CakeEmail -> cc (), array ( 'cc@cakephp.org' => 'Cc CakePHP' , 'cc2@cakephp.org' => 'Cc2 CakePHP' ));
$this -> assertIdentical ( $this -> CakeEmail -> bcc (), array ( 'bcc@cakephp.org' => 'Bcc CakePHP' , 'bcc2@cakephp.org' => 'Bcc2 CakePHP' ));
2011-03-04 12:00:32 +00:00
$headers = $this -> CakeEmail -> getHeaders ( array_fill_keys ( array ( 'from' , 'replyTo' , 'readReceipt' , 'returnPath' , 'to' , 'cc' , 'bcc' ), true ));
$this -> assertIdentical ( $headers [ 'From' ], 'CakePHP <cake@cakephp.org>' );
$this -> assertIdentical ( $headers [ 'Reply-To' ], 'ReplyTo CakePHP <replyto@cakephp.org>' );
$this -> assertIdentical ( $headers [ 'Disposition-Notification-To' ], 'ReadReceipt CakePHP <readreceipt@cakephp.org>' );
$this -> assertIdentical ( $headers [ 'Return-Path' ], 'ReturnPath CakePHP <returnpath@cakephp.org>' );
$this -> assertIdentical ( $headers [ 'To' ], 'To CakePHP <to@cakephp.org>, To2 CakePHP <to2@cakephp.org>' );
$this -> assertIdentical ( $headers [ 'Cc' ], 'Cc CakePHP <cc@cakephp.org>, Cc2 CakePHP <cc2@cakephp.org>' );
$this -> assertIdentical ( $headers [ 'Bcc' ], 'Bcc CakePHP <bcc@cakephp.org>, Bcc2 CakePHP <bcc2@cakephp.org>' );
}
2011-03-01 23:57:45 +00:00
/**
* testMessageId method
*
* @ return void
*/
public function testMessageId () {
2011-03-21 12:30:16 +00:00
$this -> CakeEmail -> messageId ( true );
2011-03-01 23:57:45 +00:00
$result = $this -> CakeEmail -> getHeaders ();
$this -> assertTrue ( isset ( $result [ 'Message-ID' ]));
2011-03-21 12:30:16 +00:00
$this -> CakeEmail -> messageId ( false );
2011-03-01 23:57:45 +00:00
$result = $this -> CakeEmail -> getHeaders ();
$this -> assertFalse ( isset ( $result [ 'Message-ID' ]));
2011-04-16 02:37:55 +00:00
$result = $this -> CakeEmail -> messageId ( '<my-email@localhost>' );
$this -> assertIdentical ( $this -> CakeEmail , $result );
2011-03-01 23:57:45 +00:00
$result = $this -> CakeEmail -> getHeaders ();
$this -> assertIdentical ( $result [ 'Message-ID' ], '<my-email@localhost>' );
2011-08-29 14:02:00 +00:00
$result = $this -> CakeEmail -> messageId ();
$this -> assertIdentical ( $result , '<my-email@localhost>' );
2011-03-01 23:57:45 +00:00
}
/**
* testMessageIdInvalid method
*
* @ return void
* @ expectedException SocketException
*/
public function testMessageIdInvalid () {
2011-03-21 12:30:16 +00:00
$this -> CakeEmail -> messageId ( 'my-email@localhost' );
2011-03-01 23:57:45 +00:00
}
2011-03-01 17:20:13 +00:00
/**
* testSubject method
*
* @ return void
*/
public function testSubject () {
2011-03-21 12:18:36 +00:00
$this -> CakeEmail -> subject ( 'You have a new message.' );
$this -> assertIdentical ( $this -> CakeEmail -> subject (), 'You have a new message.' );
2011-03-01 17:20:13 +00:00
2011-03-21 12:18:36 +00:00
$this -> CakeEmail -> subject ( 1 );
$this -> assertIdentical ( $this -> CakeEmail -> subject (), '1' );
2011-03-01 17:20:13 +00:00
2011-04-16 02:37:55 +00:00
$result = $this -> CakeEmail -> subject ( array ( 'something' ));
2011-03-21 12:18:36 +00:00
$this -> assertIdentical ( $this -> CakeEmail -> subject (), 'Array' );
2011-04-16 02:37:55 +00:00
$this -> assertIdentical ( $this -> CakeEmail , $result );
2011-04-17 18:00:19 +00:00
$this -> CakeEmail -> subject ( 'هذه رسالة بعنوان طويل مرسل للمستلم' );
$expected = '=?UTF-8?B?2YfYsNmHINix2LPYp9mE2Kkg2KjYudmG2YjYp9mGINi32YjZitmEINmF2LE=?=' . " \r \n " . ' =?UTF-8?B?2LPZhCDZhNmE2YXYs9iq2YTZhQ==?=' ;
$this -> assertIdentical ( $this -> CakeEmail -> subject (), $expected );
2011-03-01 17:20:13 +00:00
}
2011-02-27 18:25:23 +00:00
/**
2011-03-01 04:19:47 +00:00
* testHeaders method
2011-02-27 18:25:23 +00:00
*
* @ return void
*/
2011-03-01 04:19:47 +00:00
public function testHeaders () {
2011-03-21 12:30:16 +00:00
$this -> CakeEmail -> messageId ( false );
2011-03-01 18:16:50 +00:00
$this -> CakeEmail -> setHeaders ( array ( 'X-Something' => 'nice' ));
$expected = array (
'X-Something' => 'nice' ,
2011-04-23 02:41:52 +00:00
'X-Mailer' => 'CakePHP Email' ,
2011-03-04 02:05:30 +00:00
'Date' => date ( DATE_RFC2822 ),
2011-04-20 01:47:48 +00:00
'MIME-Version' => '1.0' ,
2011-03-04 02:05:30 +00:00
'Content-Type' => 'text/plain; charset=UTF-8' ,
'Content-Transfer-Encoding' => '7bit'
2011-03-01 18:16:50 +00:00
);
$this -> assertIdentical ( $this -> CakeEmail -> getHeaders (), $expected );
$this -> CakeEmail -> addHeaders ( array ( 'X-Something' => 'very nice' , 'X-Other' => 'cool' ));
$expected = array (
'X-Something' => 'very nice' ,
'X-Other' => 'cool' ,
2011-04-23 02:41:52 +00:00
'X-Mailer' => 'CakePHP Email' ,
2011-03-04 02:05:30 +00:00
'Date' => date ( DATE_RFC2822 ),
2011-04-20 01:47:48 +00:00
'MIME-Version' => '1.0' ,
2011-03-04 02:05:30 +00:00
'Content-Type' => 'text/plain; charset=UTF-8' ,
'Content-Transfer-Encoding' => '7bit'
2011-03-01 18:16:50 +00:00
);
$this -> assertIdentical ( $this -> CakeEmail -> getHeaders (), $expected );
2011-03-21 12:18:36 +00:00
$this -> CakeEmail -> from ( 'cake@cakephp.org' );
2011-03-01 18:16:50 +00:00
$this -> assertIdentical ( $this -> CakeEmail -> getHeaders (), $expected );
2011-03-02 00:10:34 +00:00
$expected = array (
'From' => 'cake@cakephp.org' ,
'X-Something' => 'very nice' ,
'X-Other' => 'cool' ,
2011-04-23 02:41:52 +00:00
'X-Mailer' => 'CakePHP Email' ,
2011-03-04 02:05:30 +00:00
'Date' => date ( DATE_RFC2822 ),
2011-04-20 01:47:48 +00:00
'MIME-Version' => '1.0' ,
2011-03-04 02:05:30 +00:00
'Content-Type' => 'text/plain; charset=UTF-8' ,
'Content-Transfer-Encoding' => '7bit'
2011-03-02 00:10:34 +00:00
);
2011-03-01 18:16:50 +00:00
$this -> assertIdentical ( $this -> CakeEmail -> getHeaders ( array ( 'from' => true )), $expected );
2011-03-21 12:18:36 +00:00
$this -> CakeEmail -> from ( 'cake@cakephp.org' , 'CakePHP' );
2011-03-01 18:16:50 +00:00
$expected [ 'From' ] = 'CakePHP <cake@cakephp.org>' ;
$this -> assertIdentical ( $this -> CakeEmail -> getHeaders ( array ( 'from' => true )), $expected );
2011-03-21 12:18:36 +00:00
$this -> CakeEmail -> to ( array ( 'cake@cakephp.org' , 'php@cakephp.org' => 'CakePHP' ));
2011-03-02 00:10:34 +00:00
$expected = array (
'From' => 'CakePHP <cake@cakephp.org>' ,
'To' => 'cake@cakephp.org, CakePHP <php@cakephp.org>' ,
'X-Something' => 'very nice' ,
'X-Other' => 'cool' ,
2011-04-23 02:41:52 +00:00
'X-Mailer' => 'CakePHP Email' ,
2011-03-04 02:05:30 +00:00
'Date' => date ( DATE_RFC2822 ),
2011-04-20 01:47:48 +00:00
'MIME-Version' => '1.0' ,
2011-03-04 02:05:30 +00:00
'Content-Type' => 'text/plain; charset=UTF-8' ,
'Content-Transfer-Encoding' => '7bit'
2011-03-02 00:10:34 +00:00
);
2011-03-01 18:16:50 +00:00
$this -> assertIdentical ( $this -> CakeEmail -> getHeaders ( array ( 'from' => true , 'to' => true )), $expected );
2011-08-29 14:02:00 +00:00
$result = $this -> CakeEmail -> setHeaders ( array ());
$this -> assertIsA ( $result , 'CakeEmail' );
}
/**
* Data provider function for testInvalidHeaders
*
* @ return array
*/
public static function invalidHeaders () {
return array (
array ( 10 ),
array ( '' ),
array ( 'string' ),
array ( false ),
array ( null )
);
}
/**
* testInvalidHeaders
*
* @ dataProvider invalidHeaders
* @ expectedException SocketException
* @ return void
*/
public function testInvalidHeaders ( $value ) {
$this -> CakeEmail -> setHeaders ( $value );
}
/**
* testInvalidAddHeaders
*
* @ dataProvider invalidHeaders
* @ expectedException SocketException
* @ return void
*/
public function testInvalidAddHeaders ( $value ) {
$this -> CakeEmail -> addHeaders ( $value );
2011-02-27 18:25:23 +00:00
}
2011-03-01 21:51:12 +00:00
/**
2011-04-17 23:40:18 +00:00
* testTemplate method
*
* @ return void
*/
public function testTemplate () {
$this -> CakeEmail -> template ( 'template' , 'layout' );
$expected = array ( 'template' => 'template' , 'layout' => 'layout' );
$this -> assertIdentical ( $this -> CakeEmail -> template (), $expected );
$this -> CakeEmail -> template ( 'new_template' );
$expected = array ( 'template' => 'new_template' , 'layout' => 'layout' );
$this -> assertIdentical ( $this -> CakeEmail -> template (), $expected );
$this -> CakeEmail -> template ( 'template' , null );
$expected = array ( 'template' => 'template' , 'layout' => null );
$this -> assertIdentical ( $this -> CakeEmail -> template (), $expected );
$this -> CakeEmail -> template ( null , null );
$expected = array ( 'template' => null , 'layout' => null );
$this -> assertIdentical ( $this -> CakeEmail -> template (), $expected );
}
2011-04-18 00:57:57 +00:00
/**
* testViewVars method
*
* @ return void
*/
public function testViewVars () {
$this -> assertIdentical ( $this -> CakeEmail -> viewVars (), array ());
$this -> CakeEmail -> viewVars ( array ( 'value' => 12345 ));
$this -> assertIdentical ( $this -> CakeEmail -> viewVars (), array ( 'value' => 12345 ));
$this -> CakeEmail -> viewVars ( array ( 'name' => 'CakePHP' ));
$this -> assertIdentical ( $this -> CakeEmail -> viewVars (), array ( 'value' => 12345 , 'name' => 'CakePHP' ));
$this -> CakeEmail -> viewVars ( array ( 'value' => 4567 ));
$this -> assertIdentical ( $this -> CakeEmail -> viewVars (), array ( 'value' => 4567 , 'name' => 'CakePHP' ));
}
2011-04-17 23:40:18 +00:00
/**
* testAttachments method
2011-03-01 21:51:12 +00:00
*
* @ return void
*/
public function testAttachments () {
2011-04-24 02:29:05 +00:00
$this -> CakeEmail -> attachments ( CAKE . 'basics.php' );
$expected = array ( 'basics.php' => array ( 'file' => CAKE . 'basics.php' , 'mimetype' => 'application/octet-stream' ));
2011-03-21 12:30:16 +00:00
$this -> assertIdentical ( $this -> CakeEmail -> attachments (), $expected );
2011-03-01 21:51:12 +00:00
2011-03-21 12:30:16 +00:00
$this -> CakeEmail -> attachments ( array ());
$this -> assertIdentical ( $this -> CakeEmail -> attachments (), array ());
2011-03-01 21:51:12 +00:00
2011-04-24 02:29:05 +00:00
$this -> CakeEmail -> attachments ( array ( array ( 'file' => CAKE . 'basics.php' , 'mimetype' => 'text/plain' )));
$this -> CakeEmail -> addAttachments ( CAKE . 'bootstrap.php' );
$this -> CakeEmail -> addAttachments ( array ( CAKE . 'bootstrap.php' ));
$this -> CakeEmail -> addAttachments ( array ( 'other.txt' => CAKE . 'bootstrap.php' , 'license' => CAKE . 'LICENSE.txt' ));
2011-03-04 03:20:55 +00:00
$expected = array (
2011-04-24 02:29:05 +00:00
'basics.php' => array ( 'file' => CAKE . 'basics.php' , 'mimetype' => 'text/plain' ),
'bootstrap.php' => array ( 'file' => CAKE . 'bootstrap.php' , 'mimetype' => 'application/octet-stream' ),
'other.txt' => array ( 'file' => CAKE . 'bootstrap.php' , 'mimetype' => 'application/octet-stream' ),
'license' => array ( 'file' => CAKE . 'LICENSE.txt' , 'mimetype' => 'application/octet-stream' )
2011-03-04 03:20:55 +00:00
);
2011-03-21 12:30:16 +00:00
$this -> assertIdentical ( $this -> CakeEmail -> attachments (), $expected );
2011-08-29 14:02:00 +00:00
$this -> setExpectedException ( 'SocketException' );
$this -> CakeEmail -> attachments ( array ( array ( 'nofile' => CAKE . 'basics.php' , 'mimetype' => 'text/plain' )));
2011-03-01 21:51:12 +00:00
}
2011-04-16 02:37:55 +00:00
/**
* testTransport method
*
* @ return void
*/
public function testTransport () {
2011-08-29 01:11:30 +00:00
$result = $this -> CakeEmail -> transport ( 'Debug' );
2011-04-16 02:37:55 +00:00
$this -> assertIdentical ( $this -> CakeEmail , $result );
2011-08-29 01:11:30 +00:00
$this -> assertIdentical ( $this -> CakeEmail -> transport (), 'Debug' );
2011-04-16 02:37:55 +00:00
$result = $this -> CakeEmail -> transportClass ();
$this -> assertIsA ( $result , 'DebugTransport' );
2011-08-29 14:02:00 +00:00
$this -> setExpectedException ( 'SocketException' );
$this -> CakeEmail -> transport ( 'Invalid' );
$result = $this -> CakeEmail -> transportClass ();
}
/**
* testExtendTransport method
*
* @ return void
*/
public function testExtendTransport () {
$this -> setExpectedException ( 'SocketException' );
$this -> CakeEmail -> transport ( 'Extend' );
$result = $this -> CakeEmail -> transportClass ();
2011-04-16 02:37:55 +00:00
}
/**
* testConfig method
*
* @ return void
*/
public function testConfig () {
2011-08-29 01:11:30 +00:00
$transportClass = $this -> CakeEmail -> transport ( 'debug' ) -> transportClass ();
2011-04-16 02:37:55 +00:00
$config = array ( 'test' => 'ok' , 'test2' => true );
$this -> CakeEmail -> config ( $config );
2011-08-29 01:11:30 +00:00
$this -> assertIdentical ( $transportClass -> config (), $config );
2011-04-17 15:53:12 +00:00
$this -> assertIdentical ( $this -> CakeEmail -> config (), $config );
$this -> CakeEmail -> config ( array ());
2011-08-29 01:11:30 +00:00
$this -> assertIdentical ( $transportClass -> config (), array ());
2011-08-25 14:03:39 +00:00
2011-04-16 02:37:55 +00:00
}
2011-08-25 14:03:39 +00:00
/**
* testConfigString method
*
* @ return void
*/
public function testConfigString () {
2011-08-29 01:11:30 +00:00
$configs = new EmailConfig ();
2011-08-25 14:03:39 +00:00
$this -> CakeEmail -> config ( 'test' );
$result = $this -> CakeEmail -> to ();
2011-08-26 00:31:18 +00:00
$this -> assertEquals ( $configs -> test [ 'to' ], $result );
2011-08-25 14:03:39 +00:00
$result = $this -> CakeEmail -> from ();
2011-08-26 00:31:18 +00:00
$this -> assertEquals ( $configs -> test [ 'from' ], $result );
2011-08-25 14:03:39 +00:00
$result = $this -> CakeEmail -> subject ();
2011-08-26 00:31:18 +00:00
$this -> assertEquals ( $configs -> test [ 'subject' ], $result );
2011-08-25 14:03:39 +00:00
$result = $this -> CakeEmail -> transport ();
2011-08-26 00:31:18 +00:00
$this -> assertEquals ( $configs -> test [ 'transport' ], $result );
2011-08-25 14:03:39 +00:00
$result = $this -> CakeEmail -> transportClass ();
2011-08-29 01:11:30 +00:00
$this -> assertIsA ( $result , 'DebugTransport' );
2011-08-25 14:03:39 +00:00
}
2011-02-27 18:25:23 +00:00
/**
2011-03-04 11:06:09 +00:00
* testSendWithContent method
2011-02-27 18:25:23 +00:00
*
* @ return void
*/
2011-03-04 11:06:09 +00:00
public function testSendWithContent () {
$this -> CakeEmail -> reset ();
2011-08-29 01:11:30 +00:00
$this -> CakeEmail -> transport ( 'Debug' );
2011-03-21 12:18:36 +00:00
$this -> CakeEmail -> from ( 'cake@cakephp.org' );
$this -> CakeEmail -> to ( array ( 'you@cakephp.org' => 'You' ));
$this -> CakeEmail -> subject ( 'My title' );
2011-04-13 04:20:35 +00:00
$this -> CakeEmail -> config ( array ( 'empty' ));
2011-08-29 01:11:30 +00:00
2011-03-04 11:06:09 +00:00
$result = $this -> CakeEmail -> send ( " Here is my body, with multi lines. \n This is the second line. \r \n \r \n And the last. " );
2011-08-29 01:11:30 +00:00
$expected = array ( 'headers' , 'message' );
$this -> assertEquals ( $expected , array_keys ( $result ));
2011-08-29 09:21:46 +00:00
$expected = " Here is my body, with multi lines. \r \n This is the second line. \r \n \r \n And the last. \r \n \r \n " ;
2011-03-04 11:06:09 +00:00
2011-08-29 01:11:30 +00:00
$this -> assertEquals ( $expected , $result [ 'message' ]);
$this -> assertTrue (( bool ) strpos ( $result [ 'headers' ], 'Date: ' ));
$this -> assertTrue (( bool ) strpos ( $result [ 'headers' ], 'Message-ID: ' ));
$this -> assertTrue (( bool ) strpos ( $result [ 'headers' ], 'To: ' ));
2011-03-04 11:06:09 +00:00
2011-08-29 01:11:30 +00:00
$result = $this -> CakeEmail -> send ( " Other body " );
2011-08-29 09:21:46 +00:00
$expected = " Other body \r \n \r \n " ;
2011-08-29 01:11:30 +00:00
$this -> assertIdentical ( $result [ 'message' ], $expected );
$this -> assertTrue (( bool ) strpos ( $result [ 'headers' ], 'Message-ID: ' ));
$this -> assertTrue (( bool ) strpos ( $result [ 'headers' ], 'To: ' ));
2011-08-29 15:13:41 +00:00
$this -> CakeEmail -> reset ();
$this -> CakeEmail -> transport ( 'Debug' );
$this -> CakeEmail -> from ( 'cake@cakephp.org' );
$this -> CakeEmail -> to ( array ( 'you@cakephp.org' => 'You' ));
$this -> CakeEmail -> subject ( 'My title' );
$this -> CakeEmail -> config ( array ( 'empty' ));
$result = $this -> CakeEmail -> send ( array ( 'Sending content' , 'As array' ));
$expected = " Sending content \r \n As array \r \n \r \n \r \n " ;
$this -> assertIdentical ( $result [ 'message' ], $expected );
}
/**
* testSendWithoutFrom method
*
* @ return void
*/
public function testSendWithoutFrom () {
$this -> CakeEmail -> transport ( 'Debug' );
$this -> CakeEmail -> to ( 'cake@cakephp.org' );
$this -> CakeEmail -> subject ( 'My title' );
$this -> CakeEmail -> config ( array ( 'empty' ));
$this -> setExpectedException ( 'SocketException' );
$this -> CakeEmail -> send ( " Forgot to set From " );
}
/**
* testSendWithoutTo method
*
* @ return void
*/
public function testSendWithoutTo () {
$this -> CakeEmail -> transport ( 'Debug' );
$this -> CakeEmail -> from ( 'cake@cakephp.org' );
$this -> CakeEmail -> subject ( 'My title' );
$this -> CakeEmail -> config ( array ( 'empty' ));
$this -> setExpectedException ( 'SocketException' );
$this -> CakeEmail -> send ( " Forgot to set To " );
}
/**
* testSendWithLog method
*
* @ return void
*/
public function testSendWithLog () {
$path = CAKE . 'Test' . DS . 'test_app' . DS . 'tmp' . DS ;
CakeLog :: config ( 'email' , array (
'engine' => 'FileLog' ,
2011-09-01 19:24:39 +00:00
'path' => TMP
2011-08-29 15:13:41 +00:00
));
CakeLog :: drop ( 'default' );
$this -> CakeEmail -> transport ( 'Debug' );
$this -> CakeEmail -> to ( 'me@cakephp.org' );
$this -> CakeEmail -> from ( 'cake@cakephp.org' );
$this -> CakeEmail -> subject ( 'My title' );
2011-09-01 19:24:39 +00:00
$this -> CakeEmail -> config ( array ( 'log' => 'cake_test_emails' ));
2011-08-29 15:13:41 +00:00
$result = $this -> CakeEmail -> send ( " Logging This " );
App :: uses ( 'File' , 'Utility' );
2011-09-01 19:24:39 +00:00
$File = new File ( TMP . 'cake_test_emails.log' );
2011-08-29 15:13:41 +00:00
$log = $File -> read ();
$this -> assertTrue ( strpos ( $log , $result [ 'headers' ]) !== false );
$this -> assertTrue ( strpos ( $log , $result [ 'message' ]) !== false );
$File -> delete ();
CakeLog :: drop ( 'email' );
2011-02-27 18:25:23 +00:00
}
2011-03-04 11:29:38 +00:00
/**
* testSendRender method
*
* @ return void
*/
public function testSendRender () {
$this -> CakeEmail -> reset ();
2011-03-21 12:30:16 +00:00
$this -> CakeEmail -> transport ( 'debug' );
2011-03-04 11:29:38 +00:00
2011-03-21 12:18:36 +00:00
$this -> CakeEmail -> from ( 'cake@cakephp.org' );
$this -> CakeEmail -> to ( array ( 'you@cakephp.org' => 'You' ));
$this -> CakeEmail -> subject ( 'My title' );
2011-04-13 04:20:35 +00:00
$this -> CakeEmail -> config ( array ( 'empty' ));
2011-04-17 23:40:18 +00:00
$this -> CakeEmail -> template ( 'default' , 'default' );
2011-03-04 11:29:38 +00:00
$result = $this -> CakeEmail -> send ();
2011-08-29 01:11:30 +00:00
$this -> assertTrue (( bool ) strpos ( $result [ 'message' ], 'This email was sent using the CakePHP Framework' ));
$this -> assertTrue (( bool ) strpos ( $result [ 'headers' ], 'Message-ID: ' ));
$this -> assertTrue (( bool ) strpos ( $result [ 'headers' ], 'To: ' ));
2011-03-04 11:29:38 +00:00
}
2011-04-17 21:22:20 +00:00
/**
* testSendRenderWithVars method
*
* @ return void
*/
public function testSendRenderWithVars () {
$this -> CakeEmail -> reset ();
$this -> CakeEmail -> transport ( 'debug' );
$this -> CakeEmail -> from ( 'cake@cakephp.org' );
$this -> CakeEmail -> to ( array ( 'you@cakephp.org' => 'You' ));
$this -> CakeEmail -> subject ( 'My title' );
$this -> CakeEmail -> config ( array ( 'empty' ));
2011-04-17 23:40:18 +00:00
$this -> CakeEmail -> template ( 'custom' , 'default' );
2011-04-17 21:22:20 +00:00
$this -> CakeEmail -> viewVars ( array ( 'value' => 12345 ));
$result = $this -> CakeEmail -> send ();
2011-08-29 01:11:30 +00:00
$this -> assertTrue (( bool ) strpos ( $result [ 'message' ], 'Here is your value: 12345' ));
2011-04-17 21:22:20 +00:00
}
2011-06-19 22:43:11 +00:00
/**
* testSendRenderWithHelpers method
*
* @ return void
*/
public function testSendRenderWithHelpers () {
$this -> CakeEmail -> reset ();
$this -> CakeEmail -> transport ( 'debug' );
$timestamp = time ();
$this -> CakeEmail -> from ( 'cake@cakephp.org' );
$this -> CakeEmail -> to ( array ( 'you@cakephp.org' => 'You' ));
$this -> CakeEmail -> subject ( 'My title' );
$this -> CakeEmail -> config ( array ( 'empty' ));
$this -> CakeEmail -> template ( 'custom_helper' , 'default' );
$this -> CakeEmail -> viewVars ( array ( 'time' => $timestamp ));
2011-08-29 14:02:00 +00:00
$result = $this -> CakeEmail -> helpers ( array ( 'Time' ));
$this -> assertIsA ( $result , 'CakeEmail' );
$result = $this -> CakeEmail -> send ();
2011-08-29 01:11:30 +00:00
$this -> assertTrue (( bool ) strpos ( $result [ 'message' ], 'Right now: ' . date ( 'Y-m-d\TH:i:s\Z' , $timestamp )));
2011-08-29 14:02:00 +00:00
$result = $this -> CakeEmail -> helpers ();
$this -> assertEquals ( array ( 'Time' ), $result );
2011-06-19 22:43:11 +00:00
}
2011-06-01 02:55:58 +00:00
/**
* testSendRenderPlugin method
*
* @ return void
*/
public function testSendRenderPlugin () {
App :: build ( array (
'plugins' => array ( CAKE . 'Test' . DS . 'test_app' . DS . 'Plugin' . DS )
));
CakePlugin :: load ( 'TestPlugin' );
$this -> CakeEmail -> reset ();
$this -> CakeEmail -> transport ( 'debug' );
$this -> CakeEmail -> from ( 'cake@cakephp.org' );
$this -> CakeEmail -> to ( array ( 'you@cakephp.org' => 'You' ));
$this -> CakeEmail -> subject ( 'My title' );
$this -> CakeEmail -> config ( array ( 'empty' ));
2011-08-29 01:11:30 +00:00
$result = $this -> CakeEmail -> template ( 'TestPlugin.test_plugin_tpl' , 'default' ) -> send ();
$this -> assertTrue (( bool ) strpos ( $result [ 'message' ], 'Into TestPlugin.' ));
$this -> assertTrue (( bool ) strpos ( $result [ 'message' ], 'This email was sent using the CakePHP Framework' ));
2011-06-01 02:55:58 +00:00
2011-08-29 01:11:30 +00:00
$result = $this -> CakeEmail -> template ( 'TestPlugin.test_plugin_tpl' , 'TestPlugin.plug_default' ) -> send ();
$this -> assertTrue (( bool ) strpos ( $result [ 'message' ], 'Into TestPlugin.' ));
$this -> assertTrue (( bool ) strpos ( $result [ 'message' ], 'This email was sent using the TestPlugin.' ));
2011-06-01 02:55:58 +00:00
2011-08-29 01:11:30 +00:00
$result = $this -> CakeEmail -> template ( 'TestPlugin.test_plugin_tpl' , 'plug_default' ) -> send ();
$this -> assertTrue (( bool ) strpos ( $result [ 'message' ], 'Into TestPlugin.' ));
$this -> assertTrue (( bool ) strpos ( $result [ 'message' ], 'This email was sent using the TestPlugin.' ));
2011-06-01 02:55:58 +00:00
$this -> CakeEmail -> viewVars ( array ( 'value' => 12345 ));
2011-08-29 01:11:30 +00:00
$result = $this -> CakeEmail -> template ( 'custom' , 'TestPlugin.plug_default' ) -> send ();
$this -> assertTrue (( bool ) strpos ( $result [ 'message' ], 'Here is your value: 12345' ));
$this -> assertTrue (( bool ) strpos ( $result [ 'message' ], 'This email was sent using the TestPlugin.' ));
2011-06-01 02:55:58 +00:00
2011-08-29 14:02:00 +00:00
$this -> setExpectedException ( 'MissingViewException' );
2011-06-01 02:55:58 +00:00
$this -> CakeEmail -> template ( 'test_plugin_tpl' , 'plug_default' ) -> send ();
}
2011-04-19 13:22:42 +00:00
/**
* testSendMultipleMIME method
*
* @ return void
*/
public function testSendMultipleMIME () {
$this -> CakeEmail -> reset ();
$this -> CakeEmail -> transport ( 'debug' );
$this -> CakeEmail -> from ( 'cake@cakephp.org' );
$this -> CakeEmail -> to ( array ( 'you@cakephp.org' => 'You' ));
$this -> CakeEmail -> subject ( 'My title' );
$this -> CakeEmail -> template ( 'custom' , 'default' );
$this -> CakeEmail -> config ( array ());
$this -> CakeEmail -> viewVars ( array ( 'value' => 12345 ));
$this -> CakeEmail -> emailFormat ( 'both' );
$result = $this -> CakeEmail -> send ();
$message = $this -> CakeEmail -> message ();
$boundary = $this -> CakeEmail -> getBoundary ();
$this -> assertFalse ( empty ( $boundary ));
$this -> assertFalse ( in_array ( '--' . $boundary , $message ));
$this -> assertFalse ( in_array ( '--' . $boundary . '--' , $message ));
$this -> assertTrue ( in_array ( '--alt-' . $boundary , $message ));
$this -> assertTrue ( in_array ( '--alt-' . $boundary . '--' , $message ));
$this -> CakeEmail -> attachments ( array ( 'fake.php' => __FILE__ ));
$this -> CakeEmail -> send ();
$message = $this -> CakeEmail -> message ();
$boundary = $this -> CakeEmail -> getBoundary ();
$this -> assertFalse ( empty ( $boundary ));
$this -> assertTrue ( in_array ( '--' . $boundary , $message ));
$this -> assertTrue ( in_array ( '--' . $boundary . '--' , $message ));
$this -> assertTrue ( in_array ( '--alt-' . $boundary , $message ));
$this -> assertTrue ( in_array ( '--alt-' . $boundary . '--' , $message ));
}
2011-04-21 01:51:30 +00:00
/**
* testSendAttachment method
*
* @ return void
*/
public function testSendAttachment () {
$this -> CakeEmail -> reset ();
$this -> CakeEmail -> transport ( 'debug' );
$this -> CakeEmail -> from ( 'cake@cakephp.org' );
$this -> CakeEmail -> to ( array ( 'you@cakephp.org' => 'You' ));
$this -> CakeEmail -> subject ( 'My title' );
$this -> CakeEmail -> config ( array ());
2011-04-24 02:29:05 +00:00
$this -> CakeEmail -> attachments ( array ( CAKE . 'basics.php' ));
2011-08-29 01:11:30 +00:00
$result = $this -> CakeEmail -> send ( 'body' );
2011-08-29 09:21:46 +00:00
$this -> assertTrue (( bool ) strpos ( $result [ 'message' ], " Content-Type: application/octet-stream \r \n Content-Transfer-Encoding: base64 \r \n Content-Disposition: attachment; filename= \" basics.php \" " ));
2011-04-21 01:51:30 +00:00
2011-04-24 02:29:05 +00:00
$this -> CakeEmail -> attachments ( array ( 'my.file.txt' => CAKE . 'basics.php' ));
2011-08-29 01:11:30 +00:00
$result = $this -> CakeEmail -> send ( 'body' );
$this -> assertTrue (( bool ) strpos ( $result [ 'message' ], " Content-Type: application/octet-stream \r \n Content-Transfer-Encoding: base64 \r \n Content-Disposition: attachment; filename= \" my.file.txt \" " ));
2011-04-21 01:51:30 +00:00
2011-04-24 02:29:05 +00:00
$this -> CakeEmail -> attachments ( array ( 'file.txt' => array ( 'file' => CAKE . 'basics.php' , 'mimetype' => 'text/plain' )));
2011-08-29 01:11:30 +00:00
$result = $this -> CakeEmail -> send ( 'body' );
$this -> assertTrue (( bool ) strpos ( $result [ 'message' ], " Content-Type: text/plain \r \n Content-Transfer-Encoding: base64 \r \n Content-Disposition: attachment; filename= \" file.txt \" " ));
2011-04-21 01:51:30 +00:00
2011-08-29 09:21:46 +00:00
$this -> CakeEmail -> attachments ( array ( 'file2.txt' => array ( 'file' => CAKE . 'basics.php' , 'mimetype' => 'text/plain' , 'contentId' => 'a1b1c1' )));
$result = $this -> CakeEmail -> send ( 'body' );
$this -> assertTrue (( bool ) strpos ( $result [ 'message' ], " Content-Type: text/plain \r \n Content-Transfer-Encoding: base64 \r \n Content-ID: <a1b1c1> \r \n Content-Disposition: inline; filename= \" file2.txt \" " ));
2011-04-21 01:51:30 +00:00
}
2011-04-18 01:23:48 +00:00
/**
2011-04-19 21:07:38 +00:00
* testDeliver method
2011-04-18 01:23:48 +00:00
*
* @ return void
*/
2011-04-19 21:07:38 +00:00
public function testDeliver () {
$instance = CakeEmail :: deliver ( 'all@cakephp.org' , 'About' , 'Everything ok' , array ( 'from' => 'root@cakephp.org' ), false );
2011-04-18 01:23:48 +00:00
$this -> assertIsA ( $instance , 'CakeEmail' );
$this -> assertIdentical ( $instance -> to (), array ( 'all@cakephp.org' => 'all@cakephp.org' ));
$this -> assertIdentical ( $instance -> subject (), 'About' );
$this -> assertIdentical ( $instance -> from (), array ( 'root@cakephp.org' => 'root@cakephp.org' ));
$config = array (
'from' => 'cake@cakephp.org' ,
'to' => 'debug@cakephp.org' ,
'subject' => 'Update ok' ,
'template' => 'custom' ,
'layout' => 'custom_layout' ,
'viewVars' => array ( 'value' => 123 ),
'cc' => array ( 'cake@cakephp.org' => 'Myself' )
);
2011-04-19 21:07:38 +00:00
$instance = CakeEmail :: deliver ( null , null , array ( 'name' => 'CakePHP' ), $config , false );
2011-04-18 01:23:48 +00:00
$this -> assertIdentical ( $instance -> from (), array ( 'cake@cakephp.org' => 'cake@cakephp.org' ));
$this -> assertIdentical ( $instance -> to (), array ( 'debug@cakephp.org' => 'debug@cakephp.org' ));
$this -> assertIdentical ( $instance -> subject (), 'Update ok' );
$this -> assertIdentical ( $instance -> template (), array ( 'template' => 'custom' , 'layout' => 'custom_layout' ));
$this -> assertIdentical ( $instance -> viewVars (), array ( 'value' => 123 , 'name' => 'CakePHP' ));
$this -> assertIdentical ( $instance -> cc (), array ( 'cake@cakephp.org' => 'Myself' ));
2011-08-29 15:13:41 +00:00
$configs = array ( 'from' => 'root@cakephp.org' , 'message' => 'Message from configs' , 'transport' => 'Debug' );
$instance = CakeEmail :: deliver ( 'all@cakephp.org' , 'About' , null , $configs , true );
$message = $instance -> message ();
$this -> assertEquals ( $configs [ 'message' ], $message [ 0 ]);
2011-04-18 01:23:48 +00:00
}
2011-04-17 21:53:51 +00:00
/**
* testMessage method
*
* @ return void
*/
public function testMessage () {
$this -> CakeEmail -> reset ();
$this -> CakeEmail -> transport ( 'debug' );
$this -> CakeEmail -> from ( 'cake@cakephp.org' );
$this -> CakeEmail -> to ( array ( 'you@cakephp.org' => 'You' ));
$this -> CakeEmail -> subject ( 'My title' );
$this -> CakeEmail -> config ( array ( 'empty' ));
2011-04-17 23:40:18 +00:00
$this -> CakeEmail -> template ( 'default' , 'default' );
2011-04-17 21:53:51 +00:00
$this -> CakeEmail -> emailFormat ( 'both' );
$result = $this -> CakeEmail -> send ();
$expected = '<p>This email was sent using the <a href="http://cakephp.org">CakePHP Framework</a></p>' ;
$this -> assertTrue (( bool ) strpos ( $this -> CakeEmail -> message ( CakeEmail :: MESSAGE_HTML ), $expected ));
$expected = 'This email was sent using the CakePHP Framework, http://cakephp.org.' ;
$this -> assertTrue (( bool ) strpos ( $this -> CakeEmail -> message ( CakeEmail :: MESSAGE_TEXT ), $expected ));
$message = $this -> CakeEmail -> message ();
$this -> assertTrue ( in_array ( 'Content-Type: text/plain; charset=UTF-8' , $message ));
$this -> assertTrue ( in_array ( 'Content-Type: text/html; charset=UTF-8' , $message ));
}
2011-02-27 18:25:23 +00:00
/**
* testReset method
*
* @ return void
*/
public function testReset () {
2011-03-21 12:18:36 +00:00
$this -> CakeEmail -> to ( 'cake@cakephp.org' );
$this -> assertIdentical ( $this -> CakeEmail -> to (), array ( 'cake@cakephp.org' => 'cake@cakephp.org' ));
2011-03-01 17:25:25 +00:00
$this -> CakeEmail -> reset ();
2011-03-21 12:18:36 +00:00
$this -> assertIdentical ( $this -> CakeEmail -> to (), array ());
2011-02-27 18:25:23 +00:00
}
2011-03-03 16:30:23 +00:00
/**
* testWrap method
*
* @ return void
*/
public function testWrap () {
$text = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ac turpis orci, non commodo odio. Morbi nibh nisi, vehicula pellentesque accumsan amet.' ;
$result = $this -> CakeEmail -> wrap ( $text );
$expected = array (
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ac turpis orci,' ,
'non commodo odio. Morbi nibh nisi, vehicula pellentesque accumsan amet.' ,
''
);
2011-05-16 22:49:00 +00:00
$this -> assertIdentical ( $expected , $result );
2011-03-03 16:30:23 +00:00
$text = 'Lorem ipsum dolor sit amet, consectetur < adipiscing elit. Donec ac turpis orci, non commodo odio. Morbi nibh nisi, vehicula > pellentesque accumsan amet.' ;
$result = $this -> CakeEmail -> wrap ( $text );
$expected = array (
'Lorem ipsum dolor sit amet, consectetur < adipiscing elit. Donec ac turpis' ,
'orci, non commodo odio. Morbi nibh nisi, vehicula > pellentesque accumsan' ,
'amet.' ,
''
);
2011-05-16 22:49:00 +00:00
$this -> assertIdentical ( $expected , $result );
2011-03-03 16:30:23 +00:00
$text = '<p>Lorem ipsum dolor sit amet,<br> consectetur adipiscing elit.<br> Donec ac turpis orci, non <b>commodo</b> odio. <br /> Morbi nibh nisi, vehicula pellentesque accumsan amet.<hr></p>' ;
$result = $this -> CakeEmail -> wrap ( $text );
$expected = array (
'<p>Lorem ipsum dolor sit amet,<br> consectetur adipiscing elit.<br> Donec ac' ,
'turpis orci, non <b>commodo</b> odio. <br /> Morbi nibh nisi, vehicula' ,
'pellentesque accumsan amet.<hr></p>' ,
''
);
2011-05-16 22:49:00 +00:00
$this -> assertIdentical ( $expected , $result );
2011-03-03 16:30:23 +00:00
$text = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ac <a href="http://cakephp.org">turpis</a> orci, non commodo odio. Morbi nibh nisi, vehicula pellentesque accumsan amet.' ;
$result = $this -> CakeEmail -> wrap ( $text );
$expected = array (
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ac' ,
'<a href="http://cakephp.org">turpis</a> orci, non commodo odio. Morbi nibh' ,
'nisi, vehicula pellentesque accumsan amet.' ,
''
);
2011-05-16 22:49:00 +00:00
$this -> assertIdentical ( $expected , $result );
2011-03-04 12:48:51 +00:00
$text = 'Lorem ipsum <a href="http://www.cakephp.org/controller/action/param1/param2" class="nice cool fine amazing awesome">ok</a>' ;
$result = $this -> CakeEmail -> wrap ( $text );
$expected = array (
'Lorem ipsum' ,
'<a href="http://www.cakephp.org/controller/action/param1/param2" class="nice cool fine amazing awesome">' ,
'ok</a>' ,
''
);
2011-05-16 22:49:00 +00:00
$this -> assertIdentical ( $expected , $result );
2011-03-04 12:48:51 +00:00
$text = 'Lorem ipsum withonewordverybigMorethanthelineshouldsizeofrfcspecificationbyieeeavailableonieeesite ok.' ;
$result = $this -> CakeEmail -> wrap ( $text );
$expected = array (
'Lorem ipsum' ,
'withonewordverybigMorethanthelineshouldsizeofrfcspecificationbyieeeavailableonieeesite' ,
'ok.' ,
''
);
2011-05-16 22:49:00 +00:00
$this -> assertIdentical ( $expected , $result );
2011-03-03 16:30:23 +00:00
}
2011-08-25 14:03:39 +00:00
/**
* testConstructWithConfigArray method
*
* @ return void
*/
public function testConstructWithConfigArray () {
$configs = array (
'from' => array ( 'some@example.com' => 'My website' ),
'to' => 'test@example.com' ,
'subject' => 'Test mail subject' ,
'transport' => 'Debug' ,
);
$this -> CakeEmail = new CakeEmail ( $configs );
$result = $this -> CakeEmail -> to ();
2011-08-26 00:31:18 +00:00
$this -> assertEquals ( array ( $configs [ 'to' ] => $configs [ 'to' ]), $result );
2011-08-25 14:03:39 +00:00
$result = $this -> CakeEmail -> from ();
2011-08-26 00:31:18 +00:00
$this -> assertEquals ( $configs [ 'from' ], $result );
2011-08-25 14:03:39 +00:00
$result = $this -> CakeEmail -> subject ();
2011-08-26 00:31:18 +00:00
$this -> assertEquals ( $configs [ 'subject' ], $result );
2011-08-25 14:03:39 +00:00
$result = $this -> CakeEmail -> transport ();
2011-08-26 00:31:18 +00:00
$this -> assertEquals ( $configs [ 'transport' ], $result );
2011-08-25 14:03:39 +00:00
$result = $this -> CakeEmail -> transportClass ();
$this -> assertTrue ( $result instanceof DebugTransport );
$result = $this -> CakeEmail -> send ( 'This is the message' );
2011-08-29 01:11:30 +00:00
$this -> assertTrue (( bool ) strpos ( $result [ 'headers' ], 'Message-ID: ' ));
$this -> assertTrue (( bool ) strpos ( $result [ 'headers' ], 'To: ' ));
2011-08-25 14:03:39 +00:00
}
/**
* testConstructWithConfigString method
*
* @ return void
*/
public function testConstructWithConfigString () {
2011-08-29 01:11:30 +00:00
$configs = new EmailConfig ();
2011-08-25 14:03:39 +00:00
$this -> CakeEmail = new CakeEmail ( 'test' );
$result = $this -> CakeEmail -> to ();
2011-08-26 00:31:18 +00:00
$this -> assertEquals ( $configs -> test [ 'to' ], $result );
2011-08-25 14:03:39 +00:00
$result = $this -> CakeEmail -> from ();
2011-08-26 00:31:18 +00:00
$this -> assertEquals ( $configs -> test [ 'from' ], $result );
2011-08-25 14:03:39 +00:00
$result = $this -> CakeEmail -> subject ();
2011-08-26 00:31:18 +00:00
$this -> assertEquals ( $configs -> test [ 'subject' ], $result );
2011-08-25 14:03:39 +00:00
$result = $this -> CakeEmail -> transport ();
2011-08-26 00:31:18 +00:00
$this -> assertEquals ( $configs -> test [ 'transport' ], $result );
2011-08-25 14:03:39 +00:00
$result = $this -> CakeEmail -> transportClass ();
$this -> assertTrue ( $result instanceof DebugTransport );
2011-08-29 01:11:30 +00:00
$result = $this -> CakeEmail -> send ( 'This is the message' );
2011-08-25 14:03:39 +00:00
2011-08-29 01:11:30 +00:00
$this -> assertTrue (( bool ) strpos ( $result [ 'headers' ], 'Message-ID: ' ));
$this -> assertTrue (( bool ) strpos ( $result [ 'headers' ], 'To: ' ));
2011-08-25 14:03:39 +00:00
}
2011-08-29 14:02:00 +00:00
/**
* testViewRender method
*
* @ return void
*/
public function testViewRender () {
$result = $this -> CakeEmail -> viewRender ();
$this -> assertEquals ( 'View' , $result );
$result = $this -> CakeEmail -> viewRender ( 'Theme' );
$this -> assertIsA ( $result , 'CakeEmail' );
$result = $this -> CakeEmail -> viewRender ();
$this -> assertEquals ( 'Theme' , $result );
}
/**
* testEmailFormat method
*
* @ return void
*/
public function testEmailFormat () {
$result = $this -> CakeEmail -> emailFormat ();
$this -> assertEquals ( 'text' , $result );
$result = $this -> CakeEmail -> emailFormat ( 'html' );
$this -> assertIsA ( $result , 'CakeEmail' );
$result = $this -> CakeEmail -> emailFormat ();
$this -> assertEquals ( 'html' , $result );
$this -> setExpectedException ( 'SocketException' );
$result = $this -> CakeEmail -> emailFormat ( 'invalid' );
}
2011-08-25 14:03:39 +00:00
2011-10-16 20:11:59 +00:00
/**
* Tests that it is possible to add charset configuration to a CakeEmail object
*
* @ return void
*/
public function testConfigCharset () {
$email = new CakeEmail ();
$this -> assertEquals ( $email -> charset , Configure :: read ( 'App.encoding' ));
$this -> assertEquals ( $email -> headerCharset , Configure :: read ( 'App.encoding' ));
$email = new CakeEmail ( array ( 'charset' => 'iso-2022-jp' , 'headerCharset' => 'iso-2022-jp-ms' ));
$this -> assertEquals ( $email -> charset , 'iso-2022-jp' );
$this -> assertEquals ( $email -> headerCharset , 'iso-2022-jp-ms' );
$email = new CakeEmail ( array ( 'charset' => 'iso-2022-jp' ));
$this -> assertEquals ( $email -> charset , 'iso-2022-jp' );
$this -> assertEquals ( $email -> headerCharset , 'iso-2022-jp' );
$email = new CakeEmail ( array ( 'headerCharset' => 'iso-2022-jp-ms' ));
$this -> assertEquals ( $email -> charset , Configure :: read ( 'App.encoding' ));
$this -> assertEquals ( $email -> headerCharset , 'iso-2022-jp-ms' );
}
/**
* Tests that the header is encoded using the configured headerCharset
*
* @ return void
*/
public function testHeaderEncoding () {
$this -> skipIf ( ! function_exists ( 'mb_convert_encoding' ));
$email = new CakeEmail ( array ( 'headerCharset' => 'iso-2022-jp-ms' , 'transport' => 'Debug' ));
$email -> subject ( 'あれ?もしかしての前と' );
$headers = $email -> getHeaders ( array ( 'subject' ));
$expected = " ?ISO-2022-JP?B?GyRCJCIkbCEpJGIkNyQrJDckRiROQTAkSBsoQg==?= " ;
$this -> assertContains ( $expected , $headers [ 'Subject' ]);
$email -> to ( 'someone@example.com' ) -> from ( 'someone@example.com' );
$result = $email -> send ( 'ってテーブルを作ってやってたらう' );
$this -> assertContains ( 'ってテーブルを作ってやってたらう' , $result [ 'message' ]);
}
/**
* Tests that the body is encoded using the configured charset
*
* @ return void
*/
public function testBodyEncoding () {
$this -> skipIf ( ! function_exists ( 'mb_convert_encoding' ));
$email = new CakeEmail ( array (
'charset' => 'iso-2022-jp' ,
'headerCharset' => 'iso-2022-jp-ms' ,
'transport' => 'Debug'
));
$email -> subject ( 'あれ?もしかしての前と' );
$headers = $email -> getHeaders ( array ( 'subject' ));
$expected = " ?ISO-2022-JP?B?GyRCJCIkbCEpJGIkNyQrJDckRiROQTAkSBsoQg==?= " ;
$this -> assertContains ( $expected , $headers [ 'Subject' ]);
$email -> to ( 'someone@example.com' ) -> from ( 'someone@example.com' );
$result = $email -> send ( 'ってテーブルを作ってやってたらう' );
$this -> assertContains ( 'Content-Type: text/plain; charset=iso-2022-jp' , $result [ 'headers' ]);
$this -> assertContains ( 'ってテーブルを作ってやってたらう' , $result [ 'message' ]);
}
2011-02-27 18:25:23 +00:00
}