Skip to content

Commit e45cc31

Browse files
committed
Add tests for passing a UID instead of a message number
1 parent 724ee93 commit e45cc31

17 files changed

+708
-13
lines changed

ext/imap/php_imap.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2037,7 +2037,8 @@ PHP_FUNCTION(imap_savebody)
20372037
RETURN_THROWS();
20382038
}
20392039

2040-
PHP_IMAP_CHECK_MSGNO(msgno, 3);
2040+
// TODO Fix for UID and normal MSGNO
2041+
//PHP_IMAP_CHECK_MSGNO(msgno, 3);
20412042

20422043
if (flags && ((flags & ~(FT_UID|FT_PEEK|FT_INTERNAL)) != 0)) {
20432044
zend_argument_value_error(5, "must be a bitmask of FT_UID, FT_PEEK, and FT_INTERNAL");

ext/imap/tests/bug80438.phpt

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,7 @@ require_once(__DIR__.'/setup/skipif.inc');
1010
require_once __DIR__.'/setup/imap_include.inc';
1111

1212
// create a new mailbox and add 10 new messages to it
13-
$mail_box = setup_test_mailbox('bug80438', 10);
14-
15-
// Delete messages to remove the numerical ordering
16-
imap_delete($mail_box, 5);
17-
imap_delete($mail_box, 6);
18-
imap_delete($mail_box, 7);
19-
imap_delete($mail_box, 8);
20-
imap_expunge($mail_box);
13+
$mail_box = setup_test_mailbox_for_uid_tests('bug80438');
2114

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

@@ -42,15 +35,16 @@ require_once __DIR__.'/setup/clean.inc';
4235
--EXPECT--
4336
Create a temporary mailbox and add 10 msgs
4437
New mailbox created
38+
Delete 4 messages for Unique ID generation
4539
array(6) {
4640
[0]=>
4741
int(1)
4842
[1]=>
4943
int(2)
5044
[2]=>
51-
int(3)
45+
int(7)
5246
[3]=>
53-
int(4)
47+
int(8)
5448
[4]=>
5549
int(9)
5650
[5]=>
@@ -60,9 +54,9 @@ Unique ID: int(1)
6054
Ordered message number: int(1)
6155
Unique ID: int(2)
6256
Ordered message number: int(2)
63-
Unique ID: int(3)
57+
Unique ID: int(7)
6458
Ordered message number: int(3)
65-
Unique ID: int(4)
59+
Unique ID: int(8)
6660
Ordered message number: int(4)
6761
Unique ID: int(9)
6862
Ordered message number: int(5)

ext/imap/tests/imap_body_uid.phpt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
--TEST--
2+
imap_body() passing a unique ID
3+
--SKIPIF--
4+
<?php
5+
require_once(__DIR__.'/setup/skipif.inc');
6+
?>
7+
--FILE--
8+
<?php
9+
10+
require_once(__DIR__.'/setup/imap_include.inc');
11+
12+
$imap_mail_box = setup_test_mailbox_for_uid_tests("imapbodyuid", $msg_no, $uid);
13+
14+
var_dump(imap_body($imap_mail_box, $uid, FT_UID) === imap_body($imap_mail_box, $msg_no));
15+
16+
imap_close($imap_mail_box);
17+
18+
?>
19+
--CLEAN--
20+
<?php
21+
$mailbox_suffix = 'imapbodyuid';
22+
require_once(__DIR__ . '/setup/clean.inc');
23+
?>
24+
--EXPECT--
25+
Create a temporary mailbox and add 10 msgs
26+
New mailbox created
27+
Delete 4 messages for Unique ID generation
28+
bool(true)
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
--TEST--
2+
imap_clearflag_full() passing a unique ID
3+
--SKIPIF--
4+
<?php
5+
require_once(__DIR__.'/setup/skipif.inc');
6+
?>
7+
--FILE--
8+
<?php
9+
10+
require_once(__DIR__.'/setup/imap_include.inc');
11+
12+
$imap_mail_box = setup_test_mailbox_for_uid_tests("imapclearflagfulluid");
13+
14+
/* This works on the assumption that UID message 3 to 6 inclusive are deleted. */
15+
16+
imap_setflag_full($imap_mail_box, '2,8,9', '\Answered', ST_UID);
17+
imap_setflag_full($imap_mail_box, '7,10', '\Deleted', ST_UID);
18+
imap_setflag_full($imap_mail_box, '7:9', '\Flagged', ST_UID);
19+
20+
// Testing individual entry
21+
imap_clearflag_full($imap_mail_box, '10', '\Deleted', ST_UID);
22+
// Testing multiple entries entry
23+
imap_clearflag_full($imap_mail_box, '2,9', '\Answered', ST_UID);
24+
// Testing entry range
25+
imap_clearflag_full($imap_mail_box, '7:8', '\Flagged', ST_UID);
26+
27+
28+
echo 'ALL: ';
29+
var_dump(imap_search($imap_mail_box, 'ALL'));
30+
echo 'ALL (with UID correspondance): ';
31+
var_dump(imap_search($imap_mail_box, 'ALL', SE_UID));
32+
echo 'ANSWERED: ';
33+
var_dump(imap_search($imap_mail_box, 'ANSWERED'));
34+
echo 'DELETED: ';
35+
var_dump(imap_search($imap_mail_box, 'DELETED'));
36+
echo 'FLAGGED: ';
37+
var_dump(imap_search($imap_mail_box, 'FLAGGED'));
38+
39+
imap_close($imap_mail_box);
40+
41+
?>
42+
--CLEAN--
43+
<?php
44+
$mailbox_suffix = 'imapclearflagfulluid';
45+
require_once(__DIR__ . '/setup/clean.inc');
46+
?>
47+
--EXPECT--
48+
Create a temporary mailbox and add 10 msgs
49+
New mailbox created
50+
Delete 4 messages for Unique ID generation
51+
ALL: array(6) {
52+
[0]=>
53+
int(1)
54+
[1]=>
55+
int(2)
56+
[2]=>
57+
int(3)
58+
[3]=>
59+
int(4)
60+
[4]=>
61+
int(5)
62+
[5]=>
63+
int(6)
64+
}
65+
ALL (with UID correspondance): array(6) {
66+
[0]=>
67+
int(1)
68+
[1]=>
69+
int(2)
70+
[2]=>
71+
int(7)
72+
[3]=>
73+
int(8)
74+
[4]=>
75+
int(9)
76+
[5]=>
77+
int(10)
78+
}
79+
ANSWERED: array(1) {
80+
[0]=>
81+
int(4)
82+
}
83+
DELETED: array(1) {
84+
[0]=>
85+
int(3)
86+
}
87+
FLAGGED: array(1) {
88+
[0]=>
89+
int(5)
90+
}

ext/imap/tests/imap_delete_uid.phpt

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
--TEST--
2+
imap_delete() passing a unique ID
3+
--SKIPIF--
4+
<?php
5+
require_once(__DIR__.'/setup/skipif.inc');
6+
?>
7+
--FILE--
8+
<?php
9+
10+
require_once(__DIR__.'/setup/imap_include.inc');
11+
12+
$imap_mail_box = setup_test_mailbox_for_uid_tests("imapdeleteuid", $msg_no, $uid);
13+
14+
imap_delete($imap_mail_box, $uid, FT_UID);
15+
var_dump(imap_search($imap_mail_box, 'DELETED', SE_UID));
16+
imap_expunge($imap_mail_box);
17+
18+
echo 'After expunging: ';
19+
var_dump(imap_search($imap_mail_box, 'DELETED', SE_UID));
20+
21+
var_dump(imap_search($imap_mail_box, 'ALL', SE_UID));
22+
23+
imap_close($imap_mail_box);
24+
25+
?>
26+
--CLEAN--
27+
<?php
28+
$mailbox_suffix = 'imapdeleteuid';
29+
require_once(__DIR__ . '/setup/clean.inc');
30+
?>
31+
--EXPECT--
32+
Create a temporary mailbox and add 10 msgs
33+
New mailbox created
34+
Delete 4 messages for Unique ID generation
35+
array(1) {
36+
[0]=>
37+
int(9)
38+
}
39+
After expunging: bool(false)
40+
array(5) {
41+
[0]=>
42+
int(1)
43+
[1]=>
44+
int(2)
45+
[2]=>
46+
int(7)
47+
[3]=>
48+
int(8)
49+
[4]=>
50+
int(10)
51+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
--TEST--
2+
imap_fetch_overview() passing a unique ID
3+
--SKIPIF--
4+
<?php
5+
require_once(__DIR__.'/setup/skipif.inc');
6+
?>
7+
--FILE--
8+
<?php
9+
10+
require_once(__DIR__.'/setup/imap_include.inc');
11+
12+
$imap_mail_box = setup_test_mailbox_for_uid_tests("imapfetchoverviewuid", $msg_no, $uid);
13+
14+
// Usage of == because comparing objects
15+
var_dump(imap_fetch_overview($imap_mail_box, $uid, FT_UID) == imap_fetch_overview($imap_mail_box, $msg_no));
16+
17+
imap_close($imap_mail_box);
18+
19+
?>
20+
--CLEAN--
21+
<?php
22+
$mailbox_suffix = 'imapfetchoverviewuid';
23+
require_once(__DIR__ . '/setup/clean.inc');
24+
?>
25+
--EXPECT--
26+
Create a temporary mailbox and add 10 msgs
27+
New mailbox created
28+
Delete 4 messages for Unique ID generation
29+
bool(true)
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
--TEST--
2+
imap_fetchbody() passing a unique ID
3+
--SKIPIF--
4+
<?php
5+
require_once(__DIR__.'/setup/skipif.inc');
6+
?>
7+
--FILE--
8+
<?php
9+
10+
require_once(__DIR__.'/setup/imap_include.inc');
11+
12+
$imap_mail_box = setup_test_mailbox_for_uid_tests("imapfetchbodyuid", $msg_no, $uid);
13+
14+
$section = '2';
15+
var_dump(imap_fetchbody($imap_mail_box, $uid, $section, FT_UID) === imap_fetchbody($imap_mail_box, $msg_no, $section));
16+
17+
imap_close($imap_mail_box);
18+
19+
?>
20+
--CLEAN--
21+
<?php
22+
$mailbox_suffix = 'imapfetchbodyuid';
23+
require_once(__DIR__ . '/setup/clean.inc');
24+
?>
25+
--EXPECT--
26+
Create a temporary mailbox and add 10 msgs
27+
New mailbox created
28+
Delete 4 messages for Unique ID generation
29+
bool(true)
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
--TEST--
2+
imap_fetchheader() passing a unique ID
3+
--SKIPIF--
4+
<?php
5+
require_once(__DIR__.'/setup/skipif.inc');
6+
?>
7+
--FILE--
8+
<?php
9+
10+
require_once(__DIR__.'/setup/imap_include.inc');
11+
12+
$imap_mail_box = setup_test_mailbox_for_uid_tests("imapfetchheaderuid", $msg_no, $uid);
13+
14+
var_dump(imap_fetchheader($imap_mail_box, $uid, FT_UID) === imap_fetchheader($imap_mail_box, $msg_no));
15+
16+
imap_close($imap_mail_box);
17+
18+
?>
19+
--CLEAN--
20+
<?php
21+
$mailbox_suffix = 'imapfetchheaderuid';
22+
require_once(__DIR__ . '/setup/clean.inc');
23+
?>
24+
--EXPECT--
25+
Create a temporary mailbox and add 10 msgs
26+
New mailbox created
27+
Delete 4 messages for Unique ID generation
28+
bool(true)
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
--TEST--
2+
imap_fetchmime() passing a unique ID
3+
--SKIPIF--
4+
<?php
5+
require_once(__DIR__.'/setup/skipif.inc');
6+
?>
7+
--FILE--
8+
<?php
9+
10+
require_once(__DIR__.'/setup/imap_include.inc');
11+
12+
$imap_mail_box = setup_test_mailbox_for_uid_tests("imapfetchmimeuid", $msg_no, $uid);
13+
14+
$section = '2';
15+
var_dump(imap_fetchbody($imap_mail_box, $uid, $section, FT_UID) === imap_fetchbody($imap_mail_box, $msg_no, $section));
16+
17+
imap_close($imap_mail_box);
18+
19+
?>
20+
--CLEAN--
21+
<?php
22+
$mailbox_suffix = 'imapfetchmimeuid';
23+
require_once(__DIR__ . '/setup/clean.inc');
24+
?>
25+
--EXPECT--
26+
Create a temporary mailbox and add 10 msgs
27+
New mailbox created
28+
Delete 4 messages for Unique ID generation
29+
bool(true)
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
--TEST--
2+
imap_fetchstructure() passing a unique ID
3+
--SKIPIF--
4+
<?php
5+
require_once(__DIR__.'/setup/skipif.inc');
6+
?>
7+
--FILE--
8+
<?php
9+
10+
require_once(__DIR__.'/setup/imap_include.inc');
11+
12+
$imap_mail_box = setup_test_mailbox_for_uid_tests("imapfetchstructureuid", $msg_no, $uid);
13+
14+
// Usage of == because comparing objects
15+
var_dump(imap_fetchstructure($imap_mail_box, $uid, FT_UID) == imap_fetchstructure($imap_mail_box, $msg_no));
16+
17+
imap_close($imap_mail_box);
18+
19+
?>
20+
--CLEAN--
21+
<?php
22+
$mailbox_suffix = 'imapfetchstructureuid';
23+
require_once(__DIR__ . '/setup/clean.inc');
24+
?>
25+
--EXPECT--
26+
Create a temporary mailbox and add 10 msgs
27+
New mailbox created
28+
Delete 4 messages for Unique ID generation
29+
bool(true)

0 commit comments

Comments
 (0)