blob: 61b0aeef50a91fe24b2ac3daa1eef4ae65e7807e [file] [log] [blame]
<?php
/**
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
* @version //autogentag//
* @filesource
* @package Mail
* @subpackage Tests
*/
include_once( 'wrappers/imap_wrapper.php' );
/**
* @package Mail
* @subpackage Tests
*/
class ezcMailTransportImapUidTest extends ezcTestCase
{
private static $ids = array();
private static $sizes = array();
private static $server = 'mta1.ez.no';
private static $serverSSL = 'ezctest.ez.no';
private static $port = 143;
private static $portSSL = 993;
private static $user = 'ezcomponents@mail.ez.no';
private static $password = 'ezcomponents';
private static $userSSL = 'as';
private static $passwordSSL = 'wee123';
public static function suite()
{
self::$ids = array( 23, 24, 25, 26 );
self::$sizes = array( 1539, 64072, 1696, 1725 );
return new PHPUnit_Framework_TestSuite( __CLASS__ );
}
public function tearDown()
{
$imap = new ezcMailImapTransport( self::$server, self::$port );
$imap->authenticate( self::$user, self::$password );
try
{
$imap->deleteMailbox( "Guybrush" );
}
catch ( ezcMailTransportException $e )
{
}
try
{
$imap->deleteMailbox( "Elaine" );
}
catch ( ezcMailTransportException $e )
{
}
}
public function testUidGetMessageNumbersFromSet()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( "Inbox" );
$set = $imap->fetchAll();
$messageNumbers = $set->getMessageNumbers();
$this->assertEquals( self::$ids, $messageNumbers );
}
public function testUidCommandsFetchAll()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( 'inbox' );
$set = $imap->fetchAll();
$this->assertEquals( array( self::$ids[0], self::$ids[1], self::$ids[2], self::$ids[3] ), $set->getMessageNumbers() );
$parser = new ezcMailParser();
$mails = $parser->parseMail( $set );
$this->assertEquals( 4, count( $mails ) );
}
public function testUidCommandsFetchByMessageNr()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( 'inbox' );
$set = $imap->fetchByMessageNr( self::$ids[0] );
$this->assertEquals( array( self::$ids[0] ), $set->getMessageNumbers() );
$parser = new ezcMailParser();
$mails = $parser->parseMail( $set );
$this->assertEquals( 1, count( $mails ) );
}
public function testFetchByMessageNrNotFound()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( 'inbox' );
try
{
$message = $imap->fetchByMessageNr( -1 );
$this->fail( 'Expected exception was not thrown' );
}
catch ( ezcMailNoSuchMessageException $e )
{
$this->assertEquals( "The message with ID '-1' could not be found.", $e->getMessage() );
}
}
public function testUidCommandsFetchFromOffsetAll()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( 'inbox' );
$set = $imap->fetchFromOffset( self::$ids[1] );
$this->assertEquals( array( self::$ids[1], self::$ids[2], self::$ids[3] ), $set->getMessageNumbers() );
$parser = new ezcMailParser();
$mails = $parser->parseMail( $set );
$this->assertEquals( 3, count( $mails ) );
}
public function testUidCommandsFetchFromOffsetCount()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( 'inbox' );
$set = $imap->fetchFromOffset( self::$ids[0], 2 );
$this->assertEquals( array( self::$ids[0], self::$ids[1] ), $set->getMessageNumbers() );
$parser = new ezcMailParser();
$mails = $parser->parseMail( $set );
$this->assertEquals( 2, count( $mails ) );
}
public function testUidCommandsFetchFromOffsetStartOutside()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( 'inbox' );
try
{
$set = $imap->fetchFromOffset( 0, 2 );
$this->fail( 'Expected exception was not thrown.' );
}
catch ( ezcMailOffsetOutOfRangeException $e )
{
$this->assertEquals( "The offset '0' is outside of the message subset '0', '2'.", $e->getMessage() );
}
}
public function testUidTop()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( 'inbox' );
$list = $imap->top( self::$ids[0], 1 );
// we do a simple test here.. Any non-single line reply here is 99.9% certainly a good reply
$this->assertEquals( true, count( explode( "\n", $list ) ) > 1 );
}
public function testUidTopOnlyHeaders()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( 'inbox' );
$list = $imap->top( self::$ids[0] );
// we do a simple test here.. Any non-single line reply here is 99.9% certainly a good reply
$this->assertEquals( true, count( explode( "\n", $list ) ) > 1 );
}
public function testUidInvalidTop()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( 'inbox' );
try
{
$imap->top( 1, 1 );
$this->fail( "Didn't get exception when expected" );
}
catch ( ezcMailTransportException $e )
{
$this->assertEquals( "An error occured while sending or receiving mail. The IMAP server could not fetch the message '1': A0003 OK Fetch completed..", $e->getMessage() );
}
}
public function testUidSearchMailboxEmpty()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( 'inbox' );
$set = $imap->searchMailbox();
$this->assertEquals( array( self::$ids[0], self::$ids[1], self::$ids[2], self::$ids[3] ), $set->getMessageNumbers() );
$parser = new ezcMailParser();
$mails = $parser->parseMail( $set );
$this->assertEquals( 4, count( $mails ) );
$set = $imap->searchMailbox( ' ' );
$this->assertEquals( array( self::$ids[0], self::$ids[1], self::$ids[2], self::$ids[3] ), $set->getMessageNumbers() );
$parser = new ezcMailParser();
$mails = $parser->parseMail( $set );
$this->assertEquals( 4, count( $mails ) );
}
public function testUidSearchMailboxFlagged()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( 'inbox' );
$set = $imap->searchMailbox( 'FLAGGED' );
$this->assertEquals( array(), $set->getMessageNumbers() );
$parser = new ezcMailParser();
$mails = $parser->parseMail( $set );
$this->assertEquals( 0, count( $mails ) );
}
public function testUidSearchMailboxSeen()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( 'inbox' );
$set = $imap->searchMailbox( 'SEEN' );
$this->assertEquals( array( self::$ids[0], self::$ids[1], self::$ids[2], self::$ids[3] ), $set->getMessageNumbers() );
$parser = new ezcMailParser();
$mails = $parser->parseMail( $set );
$this->assertEquals( 4, count( $mails ) );
}
public function testUidSearchMailboxSubject()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( 'inbox' );
$set = $imap->searchMailbox( 'SUBJECT "norwegian"' );
$this->assertEquals( array( self::$ids[0], self::$ids[3] ), $set->getMessageNumbers() );
$parser = new ezcMailParser();
$mails = $parser->parseMail( $set );
$this->assertEquals( 2, count( $mails ) );
}
public function testUidSearchMailboxCombineSeenSubject()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( 'inbox' );
$set = $imap->searchMailbox( 'SEEN SUBJECT "norwegian"' );
$this->assertEquals( array( self::$ids[0], self::$ids[3] ), $set->getMessageNumbers() );
$parser = new ezcMailParser();
$mails = $parser->parseMail( $set );
$this->assertEquals( 2, count( $mails ) );
}
public function testUidSearchMailboxCombineFlaggedSubject()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( 'inbox' );
$set = $imap->searchMailbox( 'FLAGGED SUBJECT "norwegian"' );
$this->assertEquals( array(), $set->getMessageNumbers() );
$parser = new ezcMailParser();
$mails = $parser->parseMail( $set );
$this->assertEquals( 0, count( $mails ) );
}
public function testUidSearchMailboxFail()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
try
{
$set = $imap->searchMailbox( 'SUBJECT "pine"' );
$this->fail( 'Expected exception was not thrown.' );
}
catch ( ezcMailTransportException $e )
{
$this->assertEquals( "An error occured while sending or receiving mail. Can't call searchMailbox() on the IMAP transport when a mailbox is not selected.", $e->getMessage() );
}
}
public function testUidSortFromOffsetInvalidCriteria()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( "Inbox" );
$set = $imap->sortFromOffset( self::$ids[0], 4, 'invalid criteria' );
$parser = new ezcMailParser();
$mail = $parser->parseMail( $set );
$this->assertEquals( 4, count( $mail ) );
}
// Test for fixing sortFromOffset() undefined $range variable
public function testUidSortFromOffsetInvalidCriteriaCountZero()
{
$imap = $this->getMock( 'ezcMailImapTransport', array( 'sort' ), array( self::$server, self::$port, array( 'uidReferencing' => true ) ) );
$imap->expects( $this->any() )
->method( 'sort' )
->will( $this->returnValue( array() ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( "Inbox" );
$set = $imap->sortFromOffset( self::$ids[0], 0, 'invalid criteria' );
$parser = new ezcMailParser();
$mail = $parser->parseMail( $set );
$this->assertEquals( 0, count( $mail ) );
}
public function testUidSortFromOffsetDefaultCriteria()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( "Inbox" );
$set = $imap->sortFromOffset( self::$ids[0], 4, 'received' );
$parser = new ezcMailParser();
$mail = $parser->parseMail( $set );
$this->assertEquals( 4, count( $mail ) );
}
public function testUidSortFromOffsetInvalidOffset()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( "Inbox" );
try
{
$imap->sortFromOffset( 10, 4, 'subject' );
$this->fail( "Expected exception was not thrown" );
}
catch ( ezcMailOffsetOutOfRangeException $e )
{
}
}
public function testUidSortFromOffsetInvalidCount()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( "Inbox" );
try
{
$imap->sortFromOffset( self::$ids[0], -1, 'subject' );
$this->fail( "Expected exception was not thrown" );
}
catch ( ezcMailInvalidLimitException $e )
{
}
}
public function testUidSortFromOffsetCountZero()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( "Inbox" );
$set = $imap->sortFromOffset( self::$ids[0], 0, 'subject' );
$parser = new ezcMailParser();
$mail = $parser->parseMail( $set );
$this->assertEquals( 4, count( $mail ) );
$this->assertEquals( "pine: test 2 with 8bit norwegian chars", $mail[2]->subject );
$this->assertEquals( "pine: Mail with attachment", $mail[0]->subject );
$this->assertEquals( "pine: test 3 with norwegian chars", $mail[3]->subject );
$this->assertEquals( "pine: Mail with attachment", $mail[1]->subject );
}
public function testUidSortFromOffsetNotSelected()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
try
{
$imap->sortFromOffset( self::$ids[0], 4, 'subject' );
$this->fail( "Expected exception was not thrown" );
}
catch ( ezcMailTransportException $e )
{
}
}
public function testUidSortFromOffsetBySubject()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( "Inbox" );
$set = $imap->sortFromOffset( self::$ids[0], 4, 'subject' );
$parser = new ezcMailParser();
$mail = $parser->parseMail( $set );
$this->assertEquals( 4, count( $mail ) );
$this->assertEquals( "pine: test 2 with 8bit norwegian chars", $mail[2]->subject );
$this->assertEquals( "pine: Mail with attachment", $mail[0]->subject );
$this->assertEquals( "pine: test 3 with norwegian chars", $mail[3]->subject );
$this->assertEquals( "pine: Mail with attachment", $mail[1]->subject );
}
public function testUidSortFromOffsetBySubjectReverse()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( "Inbox" );
$set = $imap->sortFromOffset( self::$ids[0], 4, 'subject', true );
$parser = new ezcMailParser();
$mail = $parser->parseMail( $set );
$this->assertEquals( 4, count( $mail ) );
$this->assertEquals( "pine: test 2 with 8bit norwegian chars", $mail[1]->subject );
$this->assertEquals( "pine: Mail with attachment", $mail[2]->subject );
$this->assertEquals( "pine: test 3 with norwegian chars", $mail[0]->subject );
$this->assertEquals( "pine: Mail with attachment", $mail[3]->subject );
}
public function testUidSortFromOffsetByDate()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( "Inbox" );
$set = $imap->sortFromOffset( self::$ids[0], 4, 'date' );
$parser = new ezcMailParser();
$mail = $parser->parseMail( $set );
$this->assertEquals( 4, count( $mail ) );
$this->assertEquals( "pine: test 2 with 8bit norwegian chars", $mail[2]->subject );
$this->assertEquals( "pine: Mail with attachment", $mail[0]->subject );
$this->assertEquals( "pine: test 3 with norwegian chars", $mail[3]->subject );
$this->assertEquals( "pine: Mail with attachment", $mail[1]->subject );
}
public function testUidSortFromOffsetByDateReverse()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( "Inbox" );
$set = $imap->sortFromOffset( self::$ids[0], 4, 'date', true );
$parser = new ezcMailParser();
$mail = $parser->parseMail( $set );
$this->assertEquals( 4, count( $mail ) );
$this->assertEquals( "pine: test 2 with 8bit norwegian chars", $mail[1]->subject );
$this->assertEquals( "pine: Mail with attachment", $mail[2]->subject );
$this->assertEquals( "pine: test 3 with norwegian chars", $mail[0]->subject );
$this->assertEquals( "pine: Mail with attachment", $mail[3]->subject );
}
public function testUidSortMessagesBySubject()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( "Inbox" );
$set = $imap->sortMessages( array( self::$ids[0], self::$ids[1], self::$ids[2], self::$ids[3] ), 'subject' );
$parser = new ezcMailParser();
$mail = $parser->parseMail( $set );
$this->assertEquals( 4, count( $mail ) );
$this->assertEquals( "pine: test 2 with 8bit norwegian chars", $mail[2]->subject );
$this->assertEquals( "pine: Mail with attachment", $mail[0]->subject );
$this->assertEquals( "pine: test 3 with norwegian chars", $mail[3]->subject );
$this->assertEquals( "pine: Mail with attachment", $mail[1]->subject );
}
public function testUidSortMessagesBySubjectReverse()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( "Inbox" );
$set = $imap->sortMessages( array( self::$ids[0], self::$ids[1], self::$ids[2], self::$ids[3] ), 'subject', true );
$parser = new ezcMailParser();
$mail = $parser->parseMail( $set );
$this->assertEquals( 4, count( $mail ) );
$this->assertEquals( "pine: test 2 with 8bit norwegian chars", $mail[1]->subject );
$this->assertEquals( "pine: Mail with attachment", $mail[3]->subject );
$this->assertEquals( "pine: test 3 with norwegian chars", $mail[0]->subject );
$this->assertEquals( "pine: Mail with attachment", $mail[2]->subject );
}
public function testUidSortMessagesOneElement()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( "Inbox" );
$set = $imap->sortMessages( array( self::$ids[0] ), 'subject' );
$parser = new ezcMailParser();
$mail = $parser->parseMail( $set );
$this->assertEquals( 1, count( $mail ) );
$this->assertEquals( "pine: test 3 with norwegian chars", $mail[0]->subject );
}
public function testUidSortMessagesEmpty()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( "Inbox" );
try
{
$imap->sortMessages( array(), 'subject' );
$this->fail( "Expected exception was not thrown." );
}
catch ( ezcMailTransportException $e )
{
}
}
public function testUidSortMessagesNotSelected()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
try
{
$imap->sortMessages( array( self::$ids[0], self::$ids[1], self::$ids[2], self::$ids[3] ), 'subject' );
$this->fail( "Expected exception was not thrown." );
}
catch ( ezcMailTransportException $e )
{
}
}
public function testUidFetchByFlag()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( "inbox" );
$set = $imap->fetchByFlag( "undeleted" );
$this->assertEquals( array( self::$ids[0], self::$ids[1], self::$ids[2], self::$ids[3] ), $set->getMessageNumbers() );
$parser = new ezcMailParser();
$mail = $parser->parseMail( $set );
$this->assertEquals( 4, count( $mail ) );
}
public function testUidFetchByFlagInvalidFlag()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( "inbox" );
try
{
$set = $imap->fetchByFlag( "no such flag" );
$this->fail( "Expected exception was not thrown." );
}
catch ( ezcMailTransportException $e )
{
}
}
public function testUidFetchByFlagNotSelected()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
try
{
$set = $imap->fetchByFlag( "undeleted" );
$this->fail( "Expected exception was not thrown." );
}
catch ( ezcMailTransportException $e )
{
}
}
public function testUidCountByFlag()
{
$imap = new ezcMailImapTransport( self::$server );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( "inbox" );
$this->assertEquals( 4, $imap->countByFlag( "seen" ) );
}
public function testUidCountByFlagInvalidFlag()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( "inbox" );
try
{
$count = $imap->countByFlag( "no such flag" );
$this->fail( "Expected exception was not thrown." );
}
catch ( ezcMailTransportException $e )
{
}
}
public function testUidCountByFlagNotSelected()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
try
{
$count = $imap->countByFlag( "undeleted" );
$this->fail( "Expected exception was not thrown." );
}
catch ( ezcMailTransportException $e )
{
}
}
public function testUidFetchFlags()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( "Inbox" );
$flags = $imap->fetchFlags( self::$ids );
$expected = array( self::$ids[0] => array( '\Seen' ),
self::$ids[1] => array( '\Seen' ),
self::$ids[2] => array( '\Seen' ),
self::$ids[3] => array( '\Seen' )
);
$this->assertEquals( $expected, $flags );
}
public function testUidFetchFlagsEmpty()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( "Inbox" );
try
{
$imap->fetchFlags( array() );
$this->fail( "Expected exception was not thrown." );
}
catch ( ezcMailTransportException $e )
{
}
}
public function testUidFetchFlagsNotSelected()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
try
{
$imap->fetchFlags( self::$ids );
$this->fail( "Expected exception was not thrown." );
}
catch ( ezcMailTransportException $e )
{
}
}
public function testUidFetchSizes()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( "Inbox" );
$flags = $imap->fetchSizes( self::$ids );
$expected = array( self::$ids[0] => self::$sizes[0],
self::$ids[1] => self::$sizes[1],
self::$ids[2] => self::$sizes[2],
self::$ids[3] => self::$sizes[3]
);
$this->assertEquals( $expected, $flags );
}
public function testUidFetchSizesEmpty()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( "Inbox" );
try
{
$imap->fetchSizes( array() );
$this->fail( "Expected exception was not thrown." );
}
catch ( ezcMailTransportException $e )
{
}
}
public function testUidFetchSizesNotSelected()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
try
{
$imap->fetchSizes( self::$ids );
$this->fail( "Expected exception was not thrown." );
}
catch ( ezcMailTransportException $e )
{
}
}
public function testUidSetFlag()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->createMailbox( "Guybrush" );
$imap->selectMailbox( "Inbox" );
$imap->copyMessages( implode( ',', self::$ids ), "Guybrush" );
$imap->selectMailbox( "Guybrush" );
$imap->setFlag( "1", "ANSWERED" );
$imap->setFlag( "1,2", "FLAGGED" );
$imap->setFlag( "3:4", "DRAFT" );
$imap->delete( "1" ); // it is not deleted permanently,
// but just its flag \Deleted is set
$this->assertEquals( 2, $imap->countByFlag( "FLAGGED" ) );
$imap->selectMailbox( "Inbox" );
$imap->deleteMailbox( "Guybrush" );
}
public function testUidSetFlagInvalidFlag()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( "Inbox" );
try
{
$imap->setFlag( "1", "no such flag" );
$this->fail( "Expected exception was not thrown." );
}
catch ( ezcMailTransportException $e )
{
}
}
public function testUidSetFlagNotSelected()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
try
{
$imap->setFlag( "1", "ANSWERED" );
$this->fail( "Expected exception was not thrown." );
}
catch ( ezcMailTransportException $e )
{
}
}
public function testUidClearFlag()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->createMailbox( "Guybrush" );
$imap->selectMailbox( "Inbox" );
$imap->copyMessages( implode( ',', self::$ids ), "Guybrush" );
$imap->selectMailbox( "Guybrush" );
$imap->clearFlag( "1", "SEEN" );
$imap->clearFlag( "1,2", "FLAGGED" );
$imap->clearFlag( "3:4", "DRAFT" );
$this->assertEquals( 1, $imap->countByFlag( "UNSEEN" ) );
$imap->selectMailbox( "Inbox" );
$imap->deleteMailbox( "Guybrush" );
}
public function testUidClearFlagInvalidFlag()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( "Inbox" );
try
{
$imap->clearFlag( "1000", "no such flag" );
$this->fail( "Expected exception was not thrown." );
}
catch ( ezcMailTransportException $e )
{
}
}
public function testUidClearFlagNotSelected()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
try
{
$imap->clearFlag( "1000", "ANSWERED" );
$this->fail( "Expected exception was not thrown." );
}
catch ( ezcMailTransportException $e )
{
}
}
public function testUidCopyMessages()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->createMailbox( "Guybrush" );
$imap->selectMailbox( "Inbox" );
$imap->copyMessages( self::$ids[0], "Guybrush" );
$imap->deleteMailbox( "Guybrush" );
}
public function testUidCopyMessagesInvalidDestination()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( "Inbox" );
try
{
$imap->copyMessages( self::$ids[0], "Guybrush" );
$this->fail( "Expected exception was not thrown" );
}
catch ( ezcMailTransportException $e )
{
}
}
public function testUidCopyMessagesInvalidMessage()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->selectMailbox( "Inbox" );
$imap->createMailbox( "Guybrush" );
try
{
$imap->copyMessages( "1000", "Guybrush" );
}
catch ( ezcMailTransportException $e )
{
$this->fail( "BUG? UID COPY does not return BAD response when copying a message with an UID that does not exist." );
}
$imap->deleteMailbox( "Guybrush" );
}
public function testUidCopyMessagesMailboxNotSelected()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->createMailbox( "Guybrush" );
try
{
$imap->copyMessages( "1000", "Guybrush" );
$this->fail( "Expected exception was not thrown" );
}
catch ( ezcMailTransportException $e )
{
}
$imap->deleteMailbox( "Guybrush" );
}
public function testUidDelete()
{
$imap = new ezcMailImapTransport( self::$server, self::$port, array( 'uidReferencing' => true ) );
$imap->authenticate( self::$user, self::$password );
$imap->createMailbox( "Guybrush" );
$imap->selectMailbox( 'inbox' );
$imap->copyMessages( self::$ids[0], "Guybrush" );
$imap->selectMailbox( "Guybrush" );
$imap->delete( 1 );
$imap->selectMailbox( 'inbox' );
$imap->deleteMailbox( "Guybrush" );
}
}
?>