Skip to content

Commit

Permalink
Add tests for passing a UID instead of a message number
Browse files Browse the repository at this point in the history
  • Loading branch information
Girgias committed Dec 3, 2020
1 parent 724ee93 commit e45cc31
Show file tree
Hide file tree
Showing 17 changed files with 708 additions and 13 deletions.
3 changes: 2 additions & 1 deletion ext/imap/php_imap.c
Original file line number Diff line number Diff line change
Expand Up @@ -2037,7 +2037,8 @@ PHP_FUNCTION(imap_savebody)
RETURN_THROWS();
}

PHP_IMAP_CHECK_MSGNO(msgno, 3);
// TODO Fix for UID and normal MSGNO
//PHP_IMAP_CHECK_MSGNO(msgno, 3);

if (flags && ((flags & ~(FT_UID|FT_PEEK|FT_INTERNAL)) != 0)) {
zend_argument_value_error(5, "must be a bitmask of FT_UID, FT_PEEK, and FT_INTERNAL");
Expand Down
18 changes: 6 additions & 12 deletions ext/imap/tests/bug80438.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,7 @@ require_once(__DIR__.'/setup/skipif.inc');
require_once __DIR__.'/setup/imap_include.inc';

// create a new mailbox and add 10 new messages to it
$mail_box = setup_test_mailbox('bug80438', 10);

// Delete messages to remove the numerical ordering
imap_delete($mail_box, 5);
imap_delete($mail_box, 6);
imap_delete($mail_box, 7);
imap_delete($mail_box, 8);
imap_expunge($mail_box);
$mail_box = setup_test_mailbox_for_uid_tests('bug80438');

$message_number_array = imap_search($mail_box, 'ALL', SE_UID);

Expand All @@ -42,15 +35,16 @@ require_once __DIR__.'/setup/clean.inc';
--EXPECT--
Create a temporary mailbox and add 10 msgs
New mailbox created
Delete 4 messages for Unique ID generation
array(6) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
int(7)
[3]=>
int(4)
int(8)
[4]=>
int(9)
[5]=>
Expand All @@ -60,9 +54,9 @@ Unique ID: int(1)
Ordered message number: int(1)
Unique ID: int(2)
Ordered message number: int(2)
Unique ID: int(3)
Unique ID: int(7)
Ordered message number: int(3)
Unique ID: int(4)
Unique ID: int(8)
Ordered message number: int(4)
Unique ID: int(9)
Ordered message number: int(5)
Expand Down
28 changes: 28 additions & 0 deletions ext/imap/tests/imap_body_uid.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
--TEST--
imap_body() passing a unique ID
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');

$imap_mail_box = setup_test_mailbox_for_uid_tests("imapbodyuid", $msg_no, $uid);

var_dump(imap_body($imap_mail_box, $uid, FT_UID) === imap_body($imap_mail_box, $msg_no));

imap_close($imap_mail_box);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapbodyuid';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECT--
Create a temporary mailbox and add 10 msgs
New mailbox created
Delete 4 messages for Unique ID generation
bool(true)
90 changes: 90 additions & 0 deletions ext/imap/tests/imap_clearflag_full_uid.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
--TEST--
imap_clearflag_full() passing a unique ID
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');

$imap_mail_box = setup_test_mailbox_for_uid_tests("imapclearflagfulluid");

/* This works on the assumption that UID message 3 to 6 inclusive are deleted. */

imap_setflag_full($imap_mail_box, '2,8,9', '\Answered', ST_UID);
imap_setflag_full($imap_mail_box, '7,10', '\Deleted', ST_UID);
imap_setflag_full($imap_mail_box, '7:9', '\Flagged', ST_UID);

// Testing individual entry
imap_clearflag_full($imap_mail_box, '10', '\Deleted', ST_UID);
// Testing multiple entries entry
imap_clearflag_full($imap_mail_box, '2,9', '\Answered', ST_UID);
// Testing entry range
imap_clearflag_full($imap_mail_box, '7:8', '\Flagged', ST_UID);


echo 'ALL: ';
var_dump(imap_search($imap_mail_box, 'ALL'));
echo 'ALL (with UID correspondance): ';
var_dump(imap_search($imap_mail_box, 'ALL', SE_UID));
echo 'ANSWERED: ';
var_dump(imap_search($imap_mail_box, 'ANSWERED'));
echo 'DELETED: ';
var_dump(imap_search($imap_mail_box, 'DELETED'));
echo 'FLAGGED: ';
var_dump(imap_search($imap_mail_box, 'FLAGGED'));

imap_close($imap_mail_box);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapclearflagfulluid';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECT--
Create a temporary mailbox and add 10 msgs
New mailbox created
Delete 4 messages for Unique ID generation
ALL: array(6) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(4)
[4]=>
int(5)
[5]=>
int(6)
}
ALL (with UID correspondance): array(6) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(7)
[3]=>
int(8)
[4]=>
int(9)
[5]=>
int(10)
}
ANSWERED: array(1) {
[0]=>
int(4)
}
DELETED: array(1) {
[0]=>
int(3)
}
FLAGGED: array(1) {
[0]=>
int(5)
}
51 changes: 51 additions & 0 deletions ext/imap/tests/imap_delete_uid.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
--TEST--
imap_delete() passing a unique ID
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');

$imap_mail_box = setup_test_mailbox_for_uid_tests("imapdeleteuid", $msg_no, $uid);

imap_delete($imap_mail_box, $uid, FT_UID);
var_dump(imap_search($imap_mail_box, 'DELETED', SE_UID));
imap_expunge($imap_mail_box);

echo 'After expunging: ';
var_dump(imap_search($imap_mail_box, 'DELETED', SE_UID));

var_dump(imap_search($imap_mail_box, 'ALL', SE_UID));

imap_close($imap_mail_box);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapdeleteuid';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECT--
Create a temporary mailbox and add 10 msgs
New mailbox created
Delete 4 messages for Unique ID generation
array(1) {
[0]=>
int(9)
}
After expunging: bool(false)
array(5) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(7)
[3]=>
int(8)
[4]=>
int(10)
}
29 changes: 29 additions & 0 deletions ext/imap/tests/imap_fetch_overview_uid.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
--TEST--
imap_fetch_overview() passing a unique ID
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');

$imap_mail_box = setup_test_mailbox_for_uid_tests("imapfetchoverviewuid", $msg_no, $uid);

// Usage of == because comparing objects
var_dump(imap_fetch_overview($imap_mail_box, $uid, FT_UID) == imap_fetch_overview($imap_mail_box, $msg_no));

imap_close($imap_mail_box);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapfetchoverviewuid';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECT--
Create a temporary mailbox and add 10 msgs
New mailbox created
Delete 4 messages for Unique ID generation
bool(true)
29 changes: 29 additions & 0 deletions ext/imap/tests/imap_fetchbody_uid.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
--TEST--
imap_fetchbody() passing a unique ID
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');

$imap_mail_box = setup_test_mailbox_for_uid_tests("imapfetchbodyuid", $msg_no, $uid);

$section = '2';
var_dump(imap_fetchbody($imap_mail_box, $uid, $section, FT_UID) === imap_fetchbody($imap_mail_box, $msg_no, $section));

imap_close($imap_mail_box);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapfetchbodyuid';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECT--
Create a temporary mailbox and add 10 msgs
New mailbox created
Delete 4 messages for Unique ID generation
bool(true)
28 changes: 28 additions & 0 deletions ext/imap/tests/imap_fetchheader_uid.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
--TEST--
imap_fetchheader() passing a unique ID
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');

$imap_mail_box = setup_test_mailbox_for_uid_tests("imapfetchheaderuid", $msg_no, $uid);

var_dump(imap_fetchheader($imap_mail_box, $uid, FT_UID) === imap_fetchheader($imap_mail_box, $msg_no));

imap_close($imap_mail_box);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapfetchheaderuid';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECT--
Create a temporary mailbox and add 10 msgs
New mailbox created
Delete 4 messages for Unique ID generation
bool(true)
29 changes: 29 additions & 0 deletions ext/imap/tests/imap_fetchmime_uid.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
--TEST--
imap_fetchmime() passing a unique ID
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');

$imap_mail_box = setup_test_mailbox_for_uid_tests("imapfetchmimeuid", $msg_no, $uid);

$section = '2';
var_dump(imap_fetchbody($imap_mail_box, $uid, $section, FT_UID) === imap_fetchbody($imap_mail_box, $msg_no, $section));

imap_close($imap_mail_box);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapfetchmimeuid';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECT--
Create a temporary mailbox and add 10 msgs
New mailbox created
Delete 4 messages for Unique ID generation
bool(true)
29 changes: 29 additions & 0 deletions ext/imap/tests/imap_fetchstructure_uid.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
--TEST--
imap_fetchstructure() passing a unique ID
--SKIPIF--
<?php
require_once(__DIR__.'/setup/skipif.inc');
?>
--FILE--
<?php

require_once(__DIR__.'/setup/imap_include.inc');

$imap_mail_box = setup_test_mailbox_for_uid_tests("imapfetchstructureuid", $msg_no, $uid);

// Usage of == because comparing objects
var_dump(imap_fetchstructure($imap_mail_box, $uid, FT_UID) == imap_fetchstructure($imap_mail_box, $msg_no));

imap_close($imap_mail_box);

?>
--CLEAN--
<?php
$mailbox_suffix = 'imapfetchstructureuid';
require_once(__DIR__ . '/setup/clean.inc');
?>
--EXPECT--
Create a temporary mailbox and add 10 msgs
New mailbox created
Delete 4 messages for Unique ID generation
bool(true)

0 comments on commit e45cc31

Please sign in to comment.