001/**************************************************************** 002 * Licensed to the Apache Software Foundation (ASF) under one * 003 * or more contributor license agreements. See the NOTICE file * 004 * distributed with this work for additional information * 005 * regarding copyright ownership. The ASF licenses this file * 006 * to you under the Apache License, Version 2.0 (the * 007 * "License"); you may not use this file except in compliance * 008 * with the License. You may obtain a copy of the License at * 009 * * 010 * http://www.apache.org/licenses/LICENSE-2.0 * 011 * * 012 * Unless required by applicable law or agreed to in writing, * 013 * software distributed under the License is distributed on an * 014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * 015 * KIND, either express or implied. See the License for the * 016 * specific language governing permissions and limitations * 017 * under the License. * 018 ****************************************************************/ 019 020package org.apache.james.mpt.helper; 021 022public class CreateScript { 023 024 public static final String RE = "Re:"; 025 026 public static final String HEADER = "Delivered-To"; 027 028 public static final String ANOTHER_HEADER = "Received"; 029 030 public static final String COMMON_LETTER = "o"; 031 032 public static final String COMMON_WORD = "the"; 033 034 public static final String UNCOMMON_WORD = "thy"; 035 036 public static final String UNCOMMON_PHRASE = "\"nothing worthy prove\""; 037 038 public static final String ANOTHER_NAME = "Robert"; 039 040 public static final String NAME = "tim"; 041 042 public static final String DOMAIN = "example.org"; 043 044 public static final String ANOTHER_DOMAIN = "apache.org"; 045 046 public static final void main(String[] args) throws Exception { 047 ScriptBuilder builder = ScriptBuilder.open("localhost", 143); 048 expunge(builder); 049 } 050 051 052 public static void expunge(ScriptBuilder builder) throws Exception { 053 try { 054 setup(builder); 055 builder.append(); 056 builder.setFile("wild-example.mail"); 057 builder.append(); 058 builder.setFile("multipart-alt.mail"); 059 builder.append(); 060 builder.setFile("multipart-mixed-complex.mail"); 061 builder.append(); 062 builder.setFile("rfc822-hello-world.mail"); 063 builder.append(); 064 builder.setFile("wild-mixed-alt.mail"); 065 builder.append(); 066 builder.setFile("wild-mixed.mail"); 067 builder.append(); 068 builder.setFile("rfc822-resent.mail"); 069 builder.append(); 070 builder.setFile("rfc822-trace.mail"); 071 builder.append(); 072 builder.setFile("wild-alt-reply4.mail"); 073 builder.append(); 074 builder.select(); 075 builder.flagDeleted(4); 076 builder.flagDeleted(6); 077 builder.flagDeleted(7); 078 builder.expunge(); 079 builder.select(); 080 081 } finally { 082 builder.quit(); 083 } 084 } 085 086 public static void rfcFetch(ScriptBuilder builder) throws Exception { 087 try { 088 setup(builder); 089 builder.append(); 090 builder.setFile("wild-example.mail"); 091 builder.append(); 092 builder.setFile("multipart-alt.mail"); 093 builder.append(); 094 builder.setFile("multipart-mixed-complex.mail"); 095 builder.append(); 096 builder.setFile("rfc822-hello-world.mail"); 097 builder.append(); 098 builder.setFile("wild-mixed-alt.mail"); 099 builder.append(); 100 builder.setFile("wild-mixed.mail"); 101 builder.append(); 102 builder.setFile("rfc822-resent.mail"); 103 builder.append(); 104 builder.setFile("rfc822-trace.mail"); 105 builder.append(); 106 builder.setFile("wild-alt-reply4.mail"); 107 builder.append(); 108 builder.resetFetch().setRfc822Size(true); 109 builder.fetchAllMessages(); 110 builder.resetFetch().setRfc(true); 111 builder.fetchAllMessages(); 112 builder.resetFetch().setRfcHeaders(true); 113 builder.fetchAllMessages(); 114 builder.resetFetch().setRfcText(true); 115 builder.fetchAllMessages(); 116 } finally { 117 builder.quit(); 118 } 119 } 120 121 public static void bodyStructureEmbedded(ScriptBuilder builder) 122 throws Exception { 123 builder.login(); 124 builder.create(); 125 builder.select(); 126 builder.setFile("multipart-mixed-complex.mail"); 127 builder.append(); 128 builder.fetchSection(""); 129 builder.fetchSection("TEXT"); 130 builder.fetchSection("HEADER"); 131 builder.fetchSection("1"); 132 builder.fetchSection("2"); 133 builder.fetchSection("3"); 134 builder.fetchSection("3.HEADER"); 135 builder.fetchSection("3.TEXT"); 136 builder.fetchSection("3.1"); 137 builder.fetchSection("3.2"); 138 builder.fetchSection("4"); 139 builder.fetchSection("4.1"); 140 builder.fetchSection("4.1.MIME"); 141 builder.fetchSection("4.2"); 142 builder.fetchSection("4.2.HEADER"); 143 builder.fetchSection("4.2.TEXT"); 144 builder.fetchSection("4.2.1"); 145 builder.fetchSection("4.2.2"); 146 builder.fetchSection("4.2.2.1"); 147 builder.fetchSection("4.2.2.2"); 148 builder.resetFetch().setBodyFetch(true).setBodyStructureFetch(true); 149 builder.fetchAllMessages(); 150 builder.quit(); 151 } 152 153 public static void bodyStructureComplex(ScriptBuilder builder) 154 throws Exception { 155 builder.login(); 156 builder.create(); 157 builder.select(); 158 builder.setFile("wild-alt-reply3.mail"); 159 builder.append(); 160 builder.setFile("wild-alt-reply4.mail"); 161 builder.append(); 162 builder.setFile("multipart-mixed.mail"); 163 builder.append(); 164 builder.setFile("wild-mixed-alt.mail"); 165 builder.append(); 166 builder.setFile("wild-mixed.mail"); 167 builder.append(); 168 builder.setFile("mime-plain-text.mail"); 169 builder.append(); 170 builder.fetchAllMessages(); 171 for (int i = 1; i < 7; i++) { 172 builder.setMessageNumber(i); 173 builder.fetchSection(""); 174 builder.fetchSection("TEXT"); 175 builder.fetchSection("HEADER"); 176 builder.fetchSection("1"); 177 builder.fetchSection("2"); 178 builder.fetchSection("3"); 179 builder.fetchSection("3.HEADER"); 180 builder.fetchSection("3.TEXT"); 181 builder.fetchSection("3.1"); 182 builder.fetchSection("3.2"); 183 builder.fetchSection("4"); 184 builder.fetchSection("4.1"); 185 builder.fetchSection("4.1.MIME"); 186 builder.fetchSection("4.2"); 187 builder.fetchSection("4.2.HEADER"); 188 builder.fetchSection("4.2.TEXT"); 189 builder.fetchSection("4.2.1"); 190 builder.fetchSection("4.2.2"); 191 builder.fetchSection("4.2.2.1"); 192 builder.fetchSection("4.2.2.2"); 193 } 194 builder.resetFetch().setBodyFetch(true).setBodyStructureFetch(true); 195 builder.fetchAllMessages(); 196 builder.quit(); 197 } 198 199 public static void bodyStructureSimple(ScriptBuilder builder) 200 throws Exception { 201 builder.login(); 202 builder.create(); 203 builder.select(); 204 builder.setFile("rfc822-multiple-addresses.mail"); 205 builder.append(); 206 builder.setFile("wild-example.mail"); 207 builder.append(); 208 builder.setFile("mime-plain-text.mail"); 209 builder.append(); 210 builder.fetchAllMessages(); 211 builder.fetchSection(""); 212 builder.fetchSection("TEXT"); 213 builder.fetchSection("HEADER"); 214 builder.fetchSection("1"); 215 builder.fetchSection("2"); 216 builder.fetchSection("3"); 217 builder.fetchSection("3.HEADER"); 218 builder.fetchSection("3.TEXT"); 219 builder.fetchSection("3.1"); 220 builder.fetchSection("3.2"); 221 builder.fetchSection("4"); 222 builder.fetchSection("4.1"); 223 builder.fetchSection("4.1.MIME"); 224 builder.fetchSection("4.2"); 225 builder.fetchSection("4.2.HEADER"); 226 builder.fetchSection("4.2.TEXT"); 227 builder.fetchSection("4.2.1"); 228 builder.fetchSection("4.2.2"); 229 builder.fetchSection("4.2.2.1"); 230 builder.fetchSection("4.2.2.2"); 231 builder.resetFetch().setBodyFetch(true).setBodyStructureFetch(true); 232 builder.fetchAllMessages(); 233 builder.quit(); 234 } 235 236 public static void bodyStructureMultipart(ScriptBuilder builder) 237 throws Exception { 238 builder.login(); 239 builder.create(); 240 builder.select(); 241 builder.setFile("multipart-binary.mail"); 242 builder.append(); 243 builder.setFile("multipart-alt-translation.mail"); 244 builder.append(); 245 builder.fetchAllMessages(); 246 builder.fetchSection(""); 247 builder.fetchSection("TEXT"); 248 builder.fetchSection("HEADER"); 249 builder.fetchSection("1"); 250 builder.fetchSection("2"); 251 builder.fetchSection("3"); 252 builder.fetchSection("3.HEADER"); 253 builder.fetchSection("3.TEXT"); 254 builder.fetchSection("3.1"); 255 builder.fetchSection("3.2"); 256 builder.fetchSection("4"); 257 builder.fetchSection("4.1"); 258 builder.fetchSection("4.1.MIME"); 259 builder.fetchSection("4.2"); 260 builder.fetchSection("4.2.HEADER"); 261 builder.fetchSection("4.2.TEXT"); 262 builder.fetchSection("4.2.1"); 263 builder.fetchSection("4.2.2"); 264 builder.fetchSection("4.2.2.1"); 265 builder.fetchSection("4.2.2.2"); 266 builder.resetFetch().setBodyFetch(true).setBodyStructureFetch(true); 267 builder.fetchAllMessages(); 268 builder.quit(); 269 } 270 271 public static void renameSelected(ScriptBuilder builder) throws Exception { 272 builder.login(); 273 builder.create(); 274 builder.select(); 275 builder.append(); 276 builder.setFile("rfc822-hello-world.mail"); 277 builder.append(); 278 builder.setFile("rfc822-sender.mail"); 279 builder.append(); 280 builder.setFile("rfc822.mail"); 281 builder.append(); 282 builder.setFile("rfc822-multiple-addresses.mail"); 283 builder.append(); 284 builder.select(); 285 builder.getFetch().setFlagsFetch(true).bodyPeekHeaders( 286 ScriptBuilder.Fetch.SELECT_HEADERS).setUid(true); 287 builder.fetchAllMessages(); 288 builder.list(); 289 builder.rename("anothermailbox"); 290 builder.list(); 291 builder.fetchAllMessages(); 292 builder.store(builder.flags().add().flagged().range(1, 2)); 293 builder.store(builder.flags().add().answered().range(1, 3)); 294 builder.fetchAllMessages(); 295 builder.select(); 296 builder.setMailbox("anothermailbox"); 297 builder.select(); 298 builder.fetchAllMessages(); 299 builder.quit(); 300 } 301 302 public static void renameHierarchy(ScriptBuilder builder) throws Exception { 303 builder.login(); 304 builder.setMailbox("one").create(); 305 builder.setMailbox("one.two").create(); 306 builder.setMailbox("one.two.three").create(); 307 builder.setMailbox("one.two.three.four").create(); 308 builder.list(); 309 builder.rename("one.two", "alpha.beta"); 310 builder.list(); 311 builder.rename("alpha.beta.three.four", "alpha.beta.gamma.delta"); 312 builder.list(); 313 builder.rename("alpha.beta.three", "aleph"); 314 builder.list(); 315 builder.rename("aleph", "alpha.beta.gamma.delta.epsilon"); 316 builder.list(); 317 builder.rename("alpha.beta.gamma", "one"); 318 builder.list(); 319 builder.setMailbox("one").delete(); 320 builder.setMailbox("alpha").delete(); 321 builder.setMailbox("aleph"); 322 builder.list(); 323 builder.quit(); 324 } 325 326 public static void rename(ScriptBuilder builder) throws Exception { 327 setupSearch(builder, true); 328 builder.select(); 329 String originalMailbox = builder.getMailbox(); 330 builder.getFetch().setFlagsFetch(true).bodyPeekHeaders( 331 ScriptBuilder.Fetch.SELECT_HEADERS).setUid(true); 332 builder.fetchAllMessages(); 333 builder.setMailbox("other").create().select().append(); 334 builder.setMailbox("base").create().select(); 335 builder.rename(originalMailbox, "moved").setMailbox("moved").select() 336 .fetchAllMessages(); 337 builder.setMailbox(originalMailbox).select(); 338 builder.rename("other", "base"); 339 builder.setMailbox(originalMailbox).select(); 340 builder.setMailbox("moved").select(); 341 builder.setMailbox("other").select(); 342 builder.setMailbox("base").select(); 343 builder.setMailbox("BOGUS").select(); 344 builder.setMailbox("WHATEVER").select(); 345 builder.rename("other", originalMailbox); 346 builder.setMailbox(originalMailbox).select(); 347 builder.setMailbox("moved").select(); 348 builder.setMailbox("other").select(); 349 builder.setMailbox("base").select(); 350 builder.setMailbox("BOGUS").select(); 351 builder.setMailbox("WHATEVER").select(); 352 builder.rename("BOGUS", "WHATEVER"); 353 builder.rename(originalMailbox, "INBOX"); 354 builder.rename(originalMailbox, "inbox"); 355 builder.rename(originalMailbox, "Inbox"); 356 builder.setMailbox(originalMailbox).select(); 357 builder.setMailbox("moved").select(); 358 builder.setMailbox("other").select(); 359 builder.setMailbox("base").select(); 360 builder.setMailbox("BOGUS").select(); 361 builder.setMailbox("WHATEVER").select(); 362 builder.setMailbox("BOGUS").delete(); 363 builder.setMailbox("WHATEVER").delete(); 364 builder.setMailbox(originalMailbox).delete(); 365 builder.setMailbox("base").delete(); 366 builder.setMailbox("other").delete(); 367 builder.setMailbox("moved").delete(); 368 builder.quit(); 369 } 370 371 public static void mimePartialFetch(ScriptBuilder builder) throws Exception { 372 builder.login(); 373 builder.create(); 374 builder.select(); 375 builder.setFile("multipart-mixed-complex.mail"); 376 builder.append(); 377 builder.select(); 378 builder.partial(0, 0).fetchSection("4.1.MIME"); 379 builder.partial(0, 15).fetchSection("4.1.MIME"); 380 builder.partial(0, 31).fetchSection("4.1.MIME"); 381 builder.partial(0, 63).fetchSection("4.1.MIME"); 382 builder.partial(0, 127).fetchSection("4.1.MIME"); 383 builder.partial(0, 1023).fetchSection("4.1.MIME"); 384 builder.partial(0, 2047).fetchSection("4.1.MIME"); 385 builder.partial(17, 0).fetchSection("4.1.MIME"); 386 builder.partial(17, 16).fetchSection("4.1.MIME"); 387 builder.partial(17, 32).fetchSection("4.1.MIME"); 388 builder.partial(17, 64).fetchSection("4.1.MIME"); 389 builder.partial(17, 128).fetchSection("4.1.MIME"); 390 builder.partial(17, 1024).fetchSection("4.1.MIME"); 391 builder.partial(17, 2048).fetchSection("4.1.MIME"); 392 builder.partial(10000, 0).fetchSection("4.1.MIME"); 393 builder.partial(10000, 16).fetchSection("4.1.MIME"); 394 builder.partial(10000, 32).fetchSection("4.1.MIME"); 395 builder.partial(10000, 64).fetchSection("4.1.MIME"); 396 builder.partial(10000, 128).fetchSection("4.1.MIME"); 397 builder.partial(10000, 1024).fetchSection("4.1.MIME"); 398 builder.partial(10000, 2048).fetchSection("4.1.MIME"); 399 builder.quit(); 400 } 401 402 public static void headerPartialFetch(ScriptBuilder builder) 403 throws Exception { 404 builder.login(); 405 builder.create(); 406 builder.select(); 407 builder.setFile("multipart-mixed-complex.mail"); 408 builder.append(); 409 builder.select(); 410 builder.partial(0, 0).fetchSection("HEADER"); 411 builder.partial(0, 16).fetchSection("HEADER"); 412 builder.partial(0, 32).fetchSection("HEADER"); 413 builder.partial(0, 64).fetchSection("HEADER"); 414 builder.partial(0, 128).fetchSection("HEADER"); 415 builder.partial(0, 1024).fetchSection("HEADER"); 416 builder.partial(0, 2048).fetchSection("HEADER"); 417 builder.partial(7, 0).fetchSection("HEADER"); 418 builder.partial(7, 16).fetchSection("HEADER"); 419 builder.partial(7, 32).fetchSection("HEADER"); 420 builder.partial(7, 64).fetchSection("HEADER"); 421 builder.partial(7, 128).fetchSection("HEADER"); 422 builder.partial(7, 1024).fetchSection("HEADER"); 423 builder.partial(7, 2048).fetchSection("HEADER"); 424 builder.partial(10000, 0).fetchSection("HEADER"); 425 builder.partial(10000, 16).fetchSection("HEADER"); 426 builder.partial(10000, 32).fetchSection("HEADER"); 427 builder.partial(10000, 64).fetchSection("HEADER"); 428 builder.partial(10000, 128).fetchSection("HEADER"); 429 builder.partial(10000, 1024).fetchSection("HEADER"); 430 builder.partial(10000, 2048).fetchSection("HEADER"); 431 builder.quit(); 432 } 433 434 public static void textPartialFetch(ScriptBuilder builder) throws Exception { 435 builder.login(); 436 builder.create(); 437 builder.select(); 438 builder.setFile("multipart-mixed-complex.mail"); 439 builder.append(); 440 builder.select(); 441 builder.partial(0, 0).fetchSection("TEXT"); 442 builder.partial(0, 16).fetchSection("TEXT"); 443 builder.partial(0, 32).fetchSection("TEXT"); 444 builder.partial(0, 64).fetchSection("TEXT"); 445 builder.partial(0, 128).fetchSection("TEXT"); 446 builder.partial(0, 1024).fetchSection("TEXT"); 447 builder.partial(0, 2048).fetchSection("TEXT"); 448 builder.partial(7, 0).fetchSection("TEXT"); 449 builder.partial(7, 16).fetchSection("TEXT"); 450 builder.partial(7, 32).fetchSection("TEXT"); 451 builder.partial(7, 64).fetchSection("TEXT"); 452 builder.partial(7, 128).fetchSection("TEXT"); 453 builder.partial(7, 1024).fetchSection("TEXT"); 454 builder.partial(7, 2048).fetchSection("TEXT"); 455 builder.partial(10000, 0).fetchSection("TEXT"); 456 builder.partial(10000, 16).fetchSection("TEXT"); 457 builder.partial(10000, 32).fetchSection("TEXT"); 458 builder.partial(10000, 64).fetchSection("TEXT"); 459 builder.partial(10000, 128).fetchSection("TEXT"); 460 builder.partial(10000, 1024).fetchSection("TEXT"); 461 builder.partial(10000, 2048).fetchSection("TEXT"); 462 builder.quit(); 463 } 464 465 public static void bodyPartialFetch(ScriptBuilder builder) throws Exception { 466 builder.login(); 467 builder.create(); 468 builder.select(); 469 builder.setFile("multipart-mixed.mail"); 470 builder.append(); 471 builder.select(); 472 builder.partial(0, 10).fetchSection(""); 473 builder.partial(0, 100).fetchSection(""); 474 builder.partial(0, 1000).fetchSection(""); 475 builder.partial(0, 10000).fetchSection(""); 476 builder.partial(0, 100000).fetchSection(""); 477 builder.partial(100, 10).fetchSection(""); 478 builder.partial(100, 100).fetchSection(""); 479 builder.partial(100, 1000).fetchSection(""); 480 builder.partial(100, 10000).fetchSection(""); 481 builder.partial(100, 100000).fetchSection(""); 482 builder.partial(10000, 10).fetchSection(""); 483 builder.partial(10000, 100).fetchSection(""); 484 builder.partial(10000, 1000).fetchSection(""); 485 builder.partial(10000, 10000).fetchSection(""); 486 builder.partial(10000, 100000).fetchSection(""); 487 builder.quit(); 488 } 489 490 public static void searchCombinations(ScriptBuilder builder, boolean uids) 491 throws Exception { 492 setupSearch(builder, uids); 493 builder.body(COMMON_LETTER).undraft().unflagged().answered().search(); 494 builder.to(COMMON_LETTER).draft().flagged().answered().search(); 495 builder.to(COMMON_LETTER).smaller(10000).all().draft().search(); 496 builder.bcc(COMMON_LETTER).larger(1000).search(); 497 builder.from(COMMON_LETTER).larger(1000).flagged().search(); 498 builder.from(COMMON_LETTER).to(COMMON_LETTER).answered().flagged() 499 .all().body(COMMON_LETTER).sentbefore(2009, 1, 1).search(); 500 builder.or().openParen().from(COMMON_LETTER).to(COMMON_LETTER) 501 .answered().flagged().all().body(COMMON_LETTER).sentbefore( 502 2009, 1, 1).closeParen().openParen().header(HEADER, 503 "\"\"").draft().closeParen().search(); 504 builder.or().openParen().cc(COMMON_LETTER).text(COMMON_LETTER).unseen() 505 .larger(1000).all().body(COMMON_LETTER).senton(2008, 4, 8) 506 .closeParen().openParen().header(HEADER, "\"\"").draft() 507 .closeParen().search(); 508 builder.or().openParen().cc(COMMON_LETTER).to(COMMON_LETTER).draft() 509 .unseen().all().text(COMMON_LETTER).sentsince(2000, 1, 1) 510 .closeParen().openParen().header(HEADER, "\"\"").draft() 511 .closeParen().search(); 512 builder.or().openParen().or().openParen().or().openParen().not().text( 513 COMMON_LETTER).cc(COMMON_LETTER).unseen().flagged().all().body( 514 COMMON_LETTER).not().senton(2008, 3, 1).closeParen() 515 .openParen().header(HEADER, DOMAIN).flagged().closeParen() 516 .closeParen().openParen().from(COMMON_LETTER).to(COMMON_LETTER) 517 .answered().flagged().all().body(COMMON_LETTER).sentbefore( 518 2009, 1, 1).closeParen().closeParen().openParen() 519 .answered().flagged().draft().closeParen().all().deleted() 520 .search(); 521 builder.or().openParen().or().openParen().or().openParen().from( 522 COMMON_LETTER).to(COMMON_LETTER).answered().flagged().all() 523 .body(COMMON_LETTER).sentbefore(2009, 1, 1).closeParen() 524 .openParen().header(HEADER, "\"\"").draft().closeParen() 525 .closeParen().openParen().from(COMMON_LETTER).to(COMMON_LETTER) 526 .answered().flagged().all().body(COMMON_LETTER).sentbefore( 527 2009, 1, 1).closeParen().closeParen().openParen() 528 .answered().flagged().draft().closeParen().all().unanswered() 529 .search(); 530 builder.quit(); 531 } 532 533 public static void searchAtoms(ScriptBuilder builder, boolean uids) 534 throws Exception { 535 setupSearch(builder, uids); 536 builder.all().search(); 537 builder.answered().search(); 538 builder.bcc(COMMON_LETTER).search(); 539 builder.bcc(NAME).search(); 540 builder.bcc(ANOTHER_NAME).search(); 541 builder.bcc(DOMAIN).search(); 542 builder.bcc(ANOTHER_DOMAIN).search(); 543 builder.body(COMMON_LETTER).search(); 544 builder.body(COMMON_WORD).search(); 545 builder.body(UNCOMMON_WORD).search(); 546 builder.body(UNCOMMON_PHRASE).search(); 547 builder.cc(COMMON_LETTER).search(); 548 builder.cc(NAME).search(); 549 builder.cc(ANOTHER_NAME).search(); 550 builder.cc(DOMAIN).search(); 551 builder.cc(ANOTHER_DOMAIN).search(); 552 builder.deleted().search(); 553 builder.draft().search(); 554 builder.flagged().search(); 555 builder.from(COMMON_LETTER).search(); 556 builder.from(NAME).search(); 557 builder.from(ANOTHER_NAME).search(); 558 builder.from(DOMAIN).search(); 559 builder.from(ANOTHER_DOMAIN).search(); 560 builder.header(HEADER, DOMAIN).search(); 561 builder.header(HEADER, COMMON_LETTER).search(); 562 builder.header(HEADER, ANOTHER_DOMAIN).search(); 563 builder.header(HEADER, "\"\"").search(); 564 builder.header(ANOTHER_HEADER, DOMAIN).search(); 565 builder.header(ANOTHER_HEADER, COMMON_LETTER).search(); 566 builder.header(ANOTHER_HEADER, ANOTHER_DOMAIN).search(); 567 builder.header(ANOTHER_HEADER, "\"\"").search(); 568 builder.larger(10).search(); 569 builder.larger(100).search(); 570 builder.larger(1000).search(); 571 builder.larger(10000).search(); 572 builder.larger(12500).search(); 573 builder.larger(15000).search(); 574 builder.larger(20000).search(); 575 builder.NEW().search(); 576 builder.not().flagged().search(); 577 builder.msn(3, 5).search(); 578 builder.msnAndDown(10).search(); 579 builder.msnAndUp(17).search(); 580 builder.old().search(); 581 builder.or().answered().flagged().search(); 582 builder.recent().search(); 583 builder.seen().search(); 584 builder.sentbefore(2007, 10, 10).search(); 585 builder.sentbefore(2008, 1, 1).search(); 586 builder.sentbefore(2008, 2, 1).search(); 587 builder.sentbefore(2008, 2, 10).search(); 588 builder.sentbefore(2008, 2, 20).search(); 589 builder.sentbefore(2008, 2, 25).search(); 590 builder.sentbefore(2008, 3, 1).search(); 591 builder.sentbefore(2008, 3, 5).search(); 592 builder.sentbefore(2008, 3, 10).search(); 593 builder.sentbefore(2008, 4, 1).search(); 594 builder.senton(2007, 10, 10).search(); 595 builder.senton(2008, 1, 1).search(); 596 builder.senton(2008, 2, 1).search(); 597 builder.senton(2008, 2, 10).search(); 598 builder.senton(2008, 2, 20).search(); 599 builder.senton(2008, 2, 25).search(); 600 builder.senton(2008, 3, 1).search(); 601 builder.senton(2008, 3, 5).search(); 602 builder.senton(2008, 3, 10).search(); 603 builder.senton(2008, 4, 1).search(); 604 builder.sentsince(2007, 10, 10).search(); 605 builder.sentsince(2008, 1, 1).search(); 606 builder.sentsince(2008, 2, 1).search(); 607 builder.sentsince(2008, 2, 10).search(); 608 builder.sentsince(2008, 2, 20).search(); 609 builder.sentsince(2008, 2, 25).search(); 610 builder.sentsince(2008, 3, 1).search(); 611 builder.sentsince(2008, 3, 5).search(); 612 builder.sentsince(2008, 3, 10).search(); 613 builder.sentsince(2008, 4, 1).search(); 614 builder.smaller(10).search(); 615 builder.smaller(100).search(); 616 builder.smaller(1000).search(); 617 builder.smaller(10000).search(); 618 builder.smaller(12500).search(); 619 builder.smaller(15000).search(); 620 builder.smaller(20000).search(); 621 builder.subject(COMMON_LETTER).search(); 622 builder.subject(COMMON_WORD).search(); 623 builder.subject(UNCOMMON_PHRASE).search(); 624 builder.subject(UNCOMMON_WORD).search(); 625 builder.subject(RE).search(); 626 builder.text(COMMON_LETTER).search(); 627 builder.text(COMMON_WORD).search(); 628 builder.text(UNCOMMON_PHRASE).search(); 629 builder.text(UNCOMMON_WORD).search(); 630 builder.text(RE).search(); 631 builder.text(DOMAIN).search(); 632 builder.text(ANOTHER_DOMAIN).search(); 633 builder.text(ANOTHER_NAME).search(); 634 builder.text(NAME).search(); 635 builder.to(COMMON_LETTER).search(); 636 builder.to(NAME).search(); 637 builder.to(ANOTHER_NAME).search(); 638 builder.to(DOMAIN).search(); 639 builder.to(ANOTHER_DOMAIN).search(); 640 builder.uid().msn(1, 4).search(); 641 builder.unanswered().search(); 642 builder.undeleted().search(); 643 builder.undraft().search(); 644 builder.unflagged().search(); 645 builder.unseen().search(); 646 builder.quit(); 647 } 648 649 private static void setupSearch(ScriptBuilder builder, boolean uids) 650 throws Exception { 651 builder.setUidSearch(uids); 652 setup(builder); 653 padUids(builder); 654 loadLotsOfMail(builder); 655 builder.store(builder.flags().add().flagged().range(1, 9)); 656 builder.store(builder.flags().add().answered().range(1, 4)); 657 builder.store(builder.flags().add().answered().range(10, 14)); 658 builder.store(builder.flags().add().seen().range(1, 2)); 659 builder.store(builder.flags().add().seen().range(5, 7)); 660 builder.store(builder.flags().add().seen().range(10, 12)); 661 builder.store(builder.flags().add().seen().range(15, 17)); 662 builder.store(builder.flags().add().draft().msn(1)); 663 builder.store(builder.flags().add().draft().msn(3)); 664 builder.store(builder.flags().add().draft().msn(5)); 665 builder.store(builder.flags().add().draft().msn(7)); 666 builder.store(builder.flags().add().draft().msn(9)); 667 builder.store(builder.flags().add().draft().msn(11)); 668 builder.store(builder.flags().add().draft().msn(13)); 669 builder.store(builder.flags().add().draft().msn(15)); 670 builder.store(builder.flags().add().draft().msn(17)); 671 builder.store(builder.flags().add().deleted().range(1, 3)); 672 } 673 674 private static void setup(ScriptBuilder builder) throws Exception { 675 builder.login(); 676 builder.create(); 677 builder.select(); 678 } 679 680 private static void padUids(ScriptBuilder builder) throws Exception { 681 builder.setFile("rfc822.mail"); 682 for (int i = 0; i < 20; i++) { 683 builder.append(); 684 builder.flagDeleted().expunge(); 685 } 686 } 687 688 private static void loadLotsOfMail(ScriptBuilder builder) throws Exception { 689 builder.append(); 690 builder.setFile("wild-example.mail"); 691 builder.append(); 692 builder.setFile("multipart-alt.mail"); 693 builder.append(); 694 builder.setFile("multipart-mixed.mail"); 695 builder.append(); 696 builder.setFile("multipart-mixed-complex.mail"); 697 builder.append(); 698 builder.setFile("rfc822-hello-world.mail"); 699 builder.append(); 700 builder.setFile("rfc822-sender.mail"); 701 builder.append(); 702 builder.setFile("rfc822.mail"); 703 builder.append(); 704 builder.setFile("rfc822-multiple-addresses.mail"); 705 builder.append(); 706 builder.setFile("wild-alt-reply.mail"); 707 builder.append(); 708 builder.setFile("wild-mixed-alt.mail"); 709 builder.append(); 710 builder.setFile("wild-mixed.mail"); 711 builder.append(); 712 builder.setFile("rfc822-reply.mail"); 713 builder.append(); 714 builder.setFile("rfc822-resent.mail"); 715 builder.append(); 716 builder.setFile("rfc822-trace.mail"); 717 builder.append(); 718 builder.setFile("rfc822-group-addresses.mail"); 719 builder.append(); 720 builder.setFile("wild-alt-another-reply.mail"); 721 builder.append(); 722 builder.setFile("wild-alt-reply3.mail"); 723 builder.append(); 724 builder.setFile("wild-alt-reply4.mail"); 725 builder.append(); 726 } 727 728 public static void notHeaderFetches(ScriptBuilder builder) throws Exception { 729 builder.login(); 730 builder.create(); 731 builder.select(); 732 builder.append(); 733 builder.setFile("wild-example.mail"); 734 builder.append(); 735 builder.setFile("multipart-alt.mail"); 736 builder.append(); 737 builder.setFile("multipart-mixed.mail"); 738 builder.append(); 739 builder.setFile("multipart-mixed-complex.mail"); 740 builder.append(); 741 builder.setFile("rfc822-hello-world.mail"); 742 builder.append(); 743 builder.setFile("rfc822-sender.mail"); 744 builder.append(); 745 builder.setFile("rfc822.mail"); 746 builder.append(); 747 builder.setFile("rfc822-multiple-addresses.mail"); 748 builder.append(); 749 builder.select(); 750 builder.getFetch().bodyPeekCompleteMessage(); 751 builder.fetchAllMessages(); 752 builder.resetFetch(); 753 builder.getFetch().bodyPeekNotHeaders( 754 ScriptBuilder.Fetch.SELECT_HEADERS); 755 builder.fetchAllMessages(); 756 builder.select(); 757 builder.quit(); 758 } 759 760 public static void simpleCombinedFetches(ScriptBuilder builder) 761 throws Exception { 762 builder.login(); 763 builder.create(); 764 builder.select(); 765 builder.append(); 766 builder.setFile("wild-example.mail"); 767 builder.append(); 768 builder.setFile("multipart-alt.mail"); 769 builder.append(); 770 builder.setFile("multipart-mixed.mail"); 771 builder.append(); 772 builder.setFile("multipart-mixed-complex.mail"); 773 builder.append(); 774 builder.setFile("rfc822-hello-world.mail"); 775 builder.append(); 776 builder.setFile("rfc822-sender.mail"); 777 builder.append(); 778 builder.setFile("rfc822.mail"); 779 builder.append(); 780 builder.setFile("rfc822-multiple-addresses.mail"); 781 builder.append(); 782 builder.select(); 783 builder.getFetch().bodyPeekCompleteMessage(); 784 builder.fetchAllMessages(); 785 builder.resetFetch(); 786 builder.getFetch().bodyPeekHeaders( 787 ScriptBuilder.Fetch.COMPREHENSIVE_HEADERS); 788 builder.fetchAllMessages(); 789 builder.select(); 790 builder.quit(); 791 } 792 793 public static void recent(ScriptBuilder builder) throws Exception { 794 builder.login(); 795 builder.create(); 796 builder.select(); 797 builder.append(); 798 builder.select(); 799 builder.fetchFlags(); 800 builder.fetchSection(""); 801 builder.fetchFlags(); 802 builder.quit(); 803 } 804 805 public static void multipartMixedMessagesPeek(ScriptBuilder builder) 806 throws Exception { 807 builder.setPeek(true); 808 multipartMixedMessages(builder); 809 } 810 811 public static void multipartMixedMessages(ScriptBuilder builder) 812 throws Exception { 813 builder.login(); 814 builder.create(); 815 builder.select(); 816 builder.setFile("multipart-mixed-complex.mail"); 817 builder.append(); 818 builder.select(); 819 builder.fetchSection(""); 820 builder.fetchSection("TEXT"); 821 builder.fetchSection("HEADER"); 822 builder.fetchSection("1"); 823 builder.fetchSection("2"); 824 builder.fetchSection("3"); 825 builder.fetchSection("3.HEADER"); 826 builder.fetchSection("3.TEXT"); 827 builder.fetchSection("3.1"); 828 builder.fetchSection("3.2"); 829 builder.fetchSection("4"); 830 builder.fetchSection("4.1"); 831 builder.fetchSection("4.1.MIME"); 832 builder.fetchSection("4.2"); 833 builder.fetchSection("4.2.HEADER"); 834 builder.fetchSection("4.2.TEXT"); 835 builder.fetchSection("4.2.1"); 836 builder.fetchSection("4.2.2"); 837 builder.fetchSection("4.2.2.1"); 838 builder.fetchSection("4.2.2.2"); 839 builder.select(); 840 builder.quit(); 841 } 842 843 public static void multipartAlternativePeek(ScriptBuilder builder) 844 throws Exception { 845 builder.setPeek(true); 846 multipartAlternative(builder); 847 } 848 849 public static void multipartAlternative(ScriptBuilder builder) 850 throws Exception { 851 builder.login(); 852 builder.create(); 853 builder.select(); 854 builder.setFile("multipart-alt.mail"); 855 builder.append(); 856 builder.select(); 857 builder.fetchSection(""); 858 builder.fetchSection("TEXT"); 859 builder.fetchSection("HEADER"); 860 builder.fetchSection("1"); 861 builder.fetchSection("2"); 862 builder.fetchSection("3"); 863 builder.select(); 864 builder.quit(); 865 } 866 867 public static void multipartMixedPeek(ScriptBuilder builder) 868 throws Exception { 869 builder.setPeek(true); 870 multipartMixed(builder); 871 } 872 873 public static void multipartMixed(ScriptBuilder builder) throws Exception { 874 builder.login(); 875 builder.create(); 876 builder.select(); 877 builder.setFile("multipart-mixed.mail"); 878 builder.append(); 879 builder.select(); 880 builder.fetchSection(""); 881 builder.fetchSection("TEXT"); 882 builder.fetchSection("HEADER"); 883 builder.fetchSection("1"); 884 builder.fetchSection("2"); 885 builder.fetchSection("3"); 886 builder.fetchSection("4"); 887 builder.select(); 888 builder.quit(); 889 } 890 891}