Skip to content

Commit

Permalink
IMAP test fixes to work around Gmail quirks
Browse files Browse the repository at this point in the history
  • Loading branch information
slusarz committed Sep 17, 2014
1 parent f2fbf36 commit 6a8cd6e
Showing 1 changed file with 100 additions and 89 deletions.
189 changes: 100 additions & 89 deletions framework/Imap_Client/test/Horde/Imap/Client/Live/Imap.php
Expand Up @@ -353,24 +353,6 @@ public function testAppendMessagesToMailbox()
fclose($handle2);
}

/**
* @depends testStatus
*/
public function testAppendMessagesToUtf8Mailbox()
{
// Appending test e-mail 1 (with Flagged), 2 via a stream (with Seen),
// 3 via a stream (with internaldate), and 4 via a string:
$uid = self::$live->append(self::$test_mbox_utf8, array(
array(
'data' => file_get_contents(__DIR__ . '/../fixtures/remote1.txt')
)
));

if (!($uid instanceof Horde_Imap_Client_Ids)) {
$this->fail('Append successful but UIDs not properly returned.');
}
}

/**
* @depends testAppendMessagesToMailbox
*/
Expand All @@ -394,6 +376,23 @@ public function testCopyingEmailToUtf8Mailbox()
/**
* @depends testCopyingEmailToUtf8Mailbox
*/
public function testAppendMessagesToUtf8Mailbox()
{
$uid = self::$live->append(self::$test_mbox_utf8, array(
array(
'data' => file_get_contents(__DIR__ . '/../fixtures/remote1.txt')
)
));

if (!($uid instanceof Horde_Imap_Client_Ids)) {
$this->fail('Append successful but UIDs not properly returned.');
}
}


/**
* @depends testAppendMessagesToUtf8Mailbox
*/
public function testDeletingMessageFromMailboxViaFlagAndExpunge()
{
// Get status of test mailbox (should have 4 messages).
Expand Down Expand Up @@ -453,34 +452,59 @@ public function testMoveMessage()
/**
* @depends testMoveMessage
*/
public function testFlagMessageDeletedWithoutExpunging()
public function testOptimizedSearches()
{
// Flagging test e-mail 3 with the Deleted flag.
self::$live->store(
// Searching test mailbox (should be optimized by using internal
// status instead).
$res = self::$live->search(
self::$test_mbox,
new Horde_Imap_Client_Search_Query(),
array(
'add' => array(Horde_Imap_Client::FLAG_DELETED),
'ids' => new Horde_Imap_Client_Ids(3, true)
'results' => array(Horde_Imap_Client::SEARCH_RESULTS_COUNT)
)
);

// Closing test mailbox without expunging.
self::$live->close();
$this->assertEquals(
4,
$res['count']
);

// Get status of test mailbox (should have 4 messages).
$status = self::$live->status(
// No messages are recent
$query = new Horde_Imap_Client_Search_Query();
$query->flag(Horde_Imap_Client::FLAG_RECENT);
$res = self::$live->search(
self::$test_mbox,
Horde_Imap_Client::STATUS_MESSAGES
$query,
array(
'results' => array(Horde_Imap_Client::SEARCH_RESULTS_COUNT)
)
);

$this->assertEquals(
1,
$res['count']
);

// All messages are unseen
$query2 = new Horde_Imap_Client_Search_Query();
$query2->flag(Horde_Imap_Client::FLAG_SEEN, false);
$res = self::$live->search(
self::$test_mbox,
$query2,
array(
'results' => array(Horde_Imap_Client::SEARCH_RESULTS_COUNT)
)
);

$this->assertEquals(
4,
$status['messages']
$res['count']
);
}


/**
* @depends testFlagMessageDeletedWithoutExpunging
* @depends testOptimizedSearches
*/
public function testSimpleSearch()
{
Expand All @@ -497,7 +521,7 @@ public function testSimpleSearch()
}

/**
* @depends testFlagMessageDeletedWithoutExpunging
* @depends testOptimizedSearches
*/
public function testSequenceNumberSearchReturn()
{
Expand All @@ -524,60 +548,7 @@ public function testSequenceNumberSearchReturn()
}

/**
* @depends testFlagMessageDeletedWithoutExpunging
*/
public function testOptimizedSearches()
{
// Searching test mailbox (should be optimized by using internal
// status instead).
$res = self::$live->search(
self::$test_mbox,
new Horde_Imap_Client_Search_Query(),
array(
'results' => array(Horde_Imap_Client::SEARCH_RESULTS_COUNT)
)
);

$this->assertEquals(
4,
$res['count']
);

// No messages are recent
$query = new Horde_Imap_Client_Search_Query();
$query->flag(Horde_Imap_Client::FLAG_RECENT);
$res = self::$live->search(
self::$test_mbox,
$query,
array(
'results' => array(Horde_Imap_Client::SEARCH_RESULTS_COUNT)
)
);

$this->assertEquals(
0,
$res['count']
);

// All messages are unseen
$query2 = new Horde_Imap_Client_Search_Query();
$query2->flag(Horde_Imap_Client::FLAG_SEEN, false);
$res = self::$live->search(
self::$test_mbox,
$query2,
array(
'results' => array(Horde_Imap_Client::SEARCH_RESULTS_COUNT)
)
);

$this->assertEquals(
4,
$res['count']
);
}

/**
* @depends testFlagMessageDeletedWithoutExpunging
* @depends testOptimizedSearches
*/
public function testMailboxSort()
{
Expand Down Expand Up @@ -606,7 +577,7 @@ public function testMailboxSort()
}

/**
* @depends testFlagMessageDeletedWithoutExpunging
* @depends testOptimizedSearches
*/
public function testMailboxThreadByReferences()
{
Expand Down Expand Up @@ -667,7 +638,7 @@ public function testMailboxThreadByReferences()
}

/**
* @depends testFlagMessageDeletedWithoutExpunging
* @depends testOptimizedSearches
*/
public function testMailboxThreadByOrderedSubject()
{
Expand Down Expand Up @@ -708,7 +679,7 @@ public function testMailboxThreadByOrderedSubject()
}

/**
* @depends testFlagMessageDeletedWithoutExpunging
* @depends testOptimizedSearches
*/
public function testSimpleFetch()
{
Expand Down Expand Up @@ -745,7 +716,7 @@ public function testSimpleFetch()
}

/**
* @depends testFlagMessageDeletedWithoutExpunging
* @depends testOptimizedSearches
*/
public function testComplexFetch()
{
Expand Down Expand Up @@ -896,6 +867,46 @@ public function testMetadata()
* @depends testSimpleFetch
* @depends testComplexFetch
*/
public function testFlagMessageDeletedWithoutExpunging()
{
// Flagging test e-mail 3 with the Deleted flag.
self::$live->store(
self::$test_mbox,
array(
'add' => array(Horde_Imap_Client::FLAG_DELETED),
'ids' => new Horde_Imap_Client_Ids(3, true)
)
);

// Get status of test mailbox (should have 4 messages).
// Gmail will auto-expunge, so skip the close() test.
$status = self::$live->status(
self::$test_mbox,
Horde_Imap_Client::STATUS_MESSAGES
);

if ($status['messages'] === 3) {
return;
}

// Closing test mailbox without expunging.
self::$live->close();

// Get status of test mailbox (should have 4 messages).
$status = self::$live->status(
self::$test_mbox,
Horde_Imap_Client::STATUS_MESSAGES
);

$this->assertEquals(
4,
$status['messages']
);
}

/**
* @depends testFlagMessageDeletedWithoutExpunging
*/
public function testExpungeMessagesWhileClosing()
{
// Re-open test mailbox READ-WRITE.
Expand Down

0 comments on commit 6a8cd6e

Please sign in to comment.