Annotation of embedaddon/php/ext/imap/tests/imap_include.inc, revision 1.1.1.2
1.1 misho 1: <?php
2: // Change these to make tests run successfully
3: $server = '{localhost/norsh}';
4: $default_mailbox = $server . "INBOX";
5: $domain = "something.com";
6: $admin_user = "webmaster"; // a user with admin access
7: $username = "$admin_user@$domain";
8: $password = 'p4ssw0rd';
9: $users = array("webmaster", "info", "admin", "foo"); // tests require 4 valid userids
10: $mailbox_prefix = "phpttest"; // name used for test mailbox
11:
12: // record test start time (used by displayOverviewFields())
13: $start_time = time();
14:
15: // list of fields to expect
16: $mandatory_overview_fields = array(
17: 'size',
18: 'uid',
19: 'msgno',
20: 'recent',
21: 'flagged',
22: 'answered',
23: 'deleted',
24: 'seen',
25: 'draft',
26: 'udate',
27: );
28:
29: /**
30: * Display all fields in an element from an imap_fetch_overview() response
31: *
32: * Special handling for 'udate', which will vary run-to-run; assumes an IMAP
33: * server with its clock synced to the current system, which is consistent with
34: * setup instructions in ext/imap/tests/README
35: *
36: * @param array resp element from the return value of imap_fetch_overview()
37: */
38: function displayOverviewFields($resp, $fields=null) {
39: global $mandatory_overview_fields;
40: global $start_time;
41:
42: foreach ($fields ? $fields : $mandatory_overview_fields as $mf)
43: {
44: $z = $resp->$mf;
45: if ($mf == 'udate') {
46: if (($z >= $start_time) && ($z <= time())) {
47: echo "$mf is OK\n";
48: } else {
49: echo "$mf is BAD ($z)\n";
50: }
51: } else {
52: echo "$mf is $z\n";
53: }
54: }
55: }
56:
57:
58: /**
59: * Create a test mailbox and populate with msgs
60: *
61: * @param string mailbox_suffix Suffix used to uniquely identify mailboxes
62: * @param int message_count number of test msgs to be written to new mailbox
63: *
1.1.1.2 ! misho 64: * @return IMAP stream to new mailbox on success; FALSE on failure
1.1 misho 65: */
66: function setup_test_mailbox($mailbox_suffix, $message_count, &$new_mailbox = null, $msg_type = "simple"){
67: global $server, $default_mailbox, $username, $password;
68:
69: // open a stream to default mailbox
70: $imap_stream = imap_open($default_mailbox, $username, $password);
71:
72: if ($imap_stream === false) {
73: echo "Cannot connect to IMAP server $server: " . imap_last_error() . "\n";
74: return false;
75: }
76:
77: echo "Create a temporary mailbox and add " . $message_count . " msgs\n";
78: $new_mailbox = create_mailbox($imap_stream, $mailbox_suffix, $message_count, $msg_type);
79: if ($new_mailbox === false) {
80: echo "Cant create a temporary mailbox: " . imap_last_error(). "\n";
81: return false;
82: }
83:
84: echo ".. mailbox '$new_mailbox' created\n";
85:
86: // reopen stream to new mailbox
87: if (imap_reopen($imap_stream, $new_mailbox) === false) {
88: echo "cant re-open '$new_mailbox' mailbox: " . imap_last_error() . "\n";
89: return false;
90: }
91:
92: return $imap_stream;
93: }
94:
95: /**
96: * Create mailbox and fill with generic emails
97: *
98: * @param resource $imap_stream
99: * @param string $mailbox
100: */
101: function create_mailbox($imap_stream, $mailbox_suffix, $message_count, $msg_type= "simple"){
102: global $default_mailbox, $mailbox_prefix;
103: $mailbox = $default_mailbox . "." . $mailbox_prefix . $mailbox_suffix;
104:
105: $mailboxes = imap_getmailboxes($imap_stream, $mailbox, '*');
106:
107: // check mailbox does not already exist
108: if ($mailboxes) {
109: foreach($mailboxes as $value) {
110: if ($value->name == $mailbox) {
111: exit ("TEST FAILED : Mailbox '$mailbox' already exists\n");
112: }
113: }
114: }
115:
116: if (imap_createmailbox($imap_stream, $mailbox) === false) {
117: return false;
118: }
119:
120: // Add number of test msgs requested
121: if ($message_count > 0) {
122: populate_mailbox($imap_stream, $mailbox, $message_count, $msg_type);
123: }
124:
125: return $mailbox;
126: }
127:
128: /**
129: * Populate a mailbox with generic emails
130: *
131: * @param resource $imap_stream
132: * @param string $mailbox
133: */
134: function populate_mailbox($imap_stream, $mailbox, $message_count, $msg_type = "simple"){
135:
136: global $users, $domain;
137:
138: for($i = 1; $i <= $message_count; $i++) {
139: if ($msg_type == "simple") {
140: $msg = "From: foo@anywhere.com\r\n"
141: . "To: $users[0]@$domain\r\n"
142: . "Subject: test$i\r\n"
143: . "\r\n"
144: . "$i: this is a test message, please ignore\r\n";
145: } else {
146: $envelope["from"]= "foo@anywhere.com";
147: $envelope["to"] = "$users[0]@$domain";
148: $envelope["subject"] = "Test msg $i";
149:
150: $part1["type"] = TYPEMULTIPART;
151: $part1["subtype"] = "mixed";
152:
153: $part2["type"] = TYPETEXT;
154: $part2["subtype"] = "plain";
155: $part2["description"] = "imap_mail_compose() function";
156: $part2["contents.data"] = "message 1:xxxxxxxxxxxxxxxxxxxxxxxxxx";
157:
158: $part3["type"] = TYPETEXT;
159: $part3["subtype"] = "plain";
160: $part3["description"] = "Example";
161: $part3["contents.data"] = "message 2:yyyyyyyyyyyyyyyyyyyyyyyyyy";
162:
163: $part4["type"] = TYPETEXT;
164: $part4["subtype"] = "plain";
165: $part4["description"] = "Return Values";
166: $part4["contents.data"] = "message 3:zzzzzzzzzzzzzzzzzzzzzzzzzz";
167:
168: $body[1] = $part1;
169: $body[2] = $part2;
170: $body[3] = $part3;
171: $body[4] = $part4;
172:
173: $msg = imap_mail_compose($envelope, $body);
174: }
175:
176: imap_append($imap_stream, $mailbox, $msg);
177: }
178: }
179:
180: /**
181: * Get the mailbox name from a mailbox decription, i.e strip off server details.
182: *
183: * @param string mailbox complete mailbox name
184: * @return mailbox name
185: */
186: function get_mailbox_name($mailbox){
187:
188: if (preg_match('/\{.*?\}(.*)/', $mailbox, $match) != 1) {
189: echo "Unrecpognized mailbox name\n";
190: return false;
191: }
192:
193: return $match[1];
194: }
195:
196: ?>
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>