Skip to content

Commit 097483d

Browse files
committed
More corrections to match imap function behavior
1 parent 087a123 commit 097483d

36 files changed

+2406
-708
lines changed

.php-cs-fixer.dist.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,5 @@
1111
return $config->setFinder(PhpCsFixer\Finder::create()
1212
->exclude('vendor')
1313
->in(__DIR__.'/src')
14+
->in(__DIR__.'/Tests')
1415
);

OldTests/.env.examples

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
IMAP_MAILBOX={imap.gmail.com:993/ssl/novalidate-cert}
2+
3+
IMAP_PASSWORD=...
4+
IMAP_ACCESS_TOKEN=...

OldTests/BodyStructureTest.php

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
<?php
2+
3+
namespace Javanile\Imap2\Tests;
4+
5+
use Javanile\Imap2\Connection;
6+
use Javanile\Imap2\Functions;
7+
use PHPUnit\Framework\Error\Warning;
8+
9+
class BodyStructureTest extends ImapTestCase
10+
{
11+
public function testFetchStructure()
12+
{
13+
$imap1 = imap_open($this->mailbox, $this->username, $this->password);
14+
$imap2 = imap2_open($this->mailbox, $this->username, $this->accessToken, OP_XOAUTH2);
15+
16+
/*
17+
$messages = imap_fetch_overview($imap1, '1:5');
18+
$this->assertCount(5, $messages);
19+
20+
$inputs = [
21+
0 => [],
22+
FT_UID => [],
23+
];
24+
25+
foreach ($messages as $message) {
26+
$inputs[0][] = $message->msgno;
27+
$inputs[FT_UID][] = $message->uid;
28+
}
29+
30+
foreach ($inputs as $flags => $messageNums) {
31+
foreach ($messageNums as $messageNum) {
32+
#var_dump($messageNum, $flags);
33+
$structure1 = imap_fetchstructure($imap1, $messageNum, $flags);
34+
$structure2 = imap2_fetchstructure($imap2, $messageNum, $flags);
35+
#file_put_contents('t1.json', json_encode($structure1, JSON_PRETTY_PRINT));
36+
#file_put_contents('t2.json', json_encode($structure2, JSON_PRETTY_PRINT));
37+
$this->assertEquals($structure1, $structure2);
38+
}
39+
}
40+
*/
41+
$emlFiles = [
42+
#'embedded_email.eml',
43+
#'embedded_email_without_content_disposition.eml',
44+
#'four_nested_emails.eml'
45+
#'multiple_nested_attachments.eml'
46+
'email_with_image.eml'
47+
];
48+
foreach ($emlFiles as $file) {
49+
$message = file_get_contents('tests/fixtures/'.$file);
50+
$mailbox1 = uniqid('test_');
51+
$mailbox2 = uniqid('test_');
52+
imap_createmailbox($imap1, $this->mailbox.$mailbox1);
53+
imap2_createmailbox($imap2, $this->mailbox.$mailbox2);
54+
imap_append($imap1, $this->mailbox.$mailbox1, $message);
55+
imap2_append($imap2, $this->mailbox.$mailbox2, $message);
56+
imap_reopen($imap1, $this->mailbox.$mailbox1);
57+
imap2_reopen($imap2, $this->mailbox.$mailbox2);
58+
$structure2 = imap2_fetchstructure($imap2, 1);
59+
$structure1 = imap_fetchstructure($imap1, 1);
60+
$headerInfo2 = imap2_headerinfo($imap2, 1);
61+
$headerInfo1 = imap_headerinfo($imap1, 1);
62+
#file_put_contents('t1.json', json_encode($structure1, JSON_PRETTY_PRINT));
63+
#file_put_contents('t2.json', json_encode($structure2, JSON_PRETTY_PRINT));
64+
#die();
65+
$this->assertEquals($structure1, $structure2);
66+
$headerInfo1->Unseen = $headerInfo2->Unseen;
67+
$this->assertEquals($headerInfo1, $headerInfo2);
68+
}
69+
70+
imap_close($imap1);
71+
imap2_close($imap2);
72+
}
73+
}

OldTests/CleaningTest.php

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
<?php
2+
3+
namespace Javanile\Imap2\Tests;
4+
5+
use Javanile\Imap2\Functions;
6+
7+
class CleaningTest extends ImapTestCase
8+
{
9+
public function testRemoveUnusedMailbox()
10+
{
11+
$imap = imap2_open($this->mailbox, $this->username, $this->accessToken, OP_XOAUTH2);
12+
13+
$deleteRule = '/^(\d+|test_|mailbox_|Mailbox |Mailbox-)/';
14+
15+
$mailboxes = imap2_getmailboxes($imap, $this->mailbox, '*');
16+
foreach ($mailboxes as $mailbox) {
17+
if (preg_match($deleteRule, Functions::getMailboxName($mailbox->name))) {
18+
imap2_deletemailbox($imap, $mailbox->name);
19+
}
20+
}
21+
22+
$mailboxes = imap2_getmailboxes($imap, $this->mailbox, '*');
23+
foreach ($mailboxes as $mailbox) {
24+
$this->assertEquals(0, preg_match($deleteRule, Functions::getMailboxName($mailbox->name)));
25+
}
26+
27+
$this->assertLessThan(10, count($mailboxes));
28+
29+
imap2_close($imap);
30+
}
31+
32+
public function testFillInboxWithTestingMessages()
33+
{
34+
$imap = imap2_open($this->mailbox, $this->username, $this->accessToken, OP_XOAUTH2);
35+
36+
$check = imap2_check($imap);
37+
if ($check->Nmsgs > 0) {
38+
imap2_delete($imap, '1:*');
39+
imap2_expunge($imap);
40+
}
41+
42+
$emlFiles = [
43+
'plain_only.eml',
44+
'embedded_email.eml',
45+
'references.eml',
46+
'email_with_image.eml',
47+
'embedded_email_without_content_disposition.eml',
48+
'four_nested_emails.eml'
49+
];
50+
51+
foreach ($emlFiles as $file) {
52+
$this->assertTrue(imap2_append($imap, $this->mailbox, file_get_contents('tests/fixtures/' . $file)));
53+
}
54+
55+
$check = imap2_check($imap);
56+
57+
$this->assertEquals(count($emlFiles), $check->Nmsgs);
58+
}
59+
}

0 commit comments

Comments
 (0)