RoundCube Webmail
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

102 lines
2.4 KiB

  1. <?php
  2. /**
  3. * Test class to test rcube_imap class
  4. *
  5. * @package Tests
  6. */
  7. class Framework_Imap extends PHPUnit\Framework\TestCase
  8. {
  9. /**
  10. * Class constructor
  11. */
  12. function test_class()
  13. {
  14. $object = new rcube_imap;
  15. $this->assertInstanceOf('rcube_imap', $object, "Class constructor");
  16. }
  17. /**
  18. * Test convert_criteria()
  19. */
  20. function test_convert_criteria()
  21. {
  22. $this->assertSame(
  23. "FLAGGED SINCE 1-Feb-1994 NOT FROM \"Smith\"",
  24. rcube_imap::convert_criteria("FLAGGED SINCE 1-Feb-1994 NOT FROM \"Smith\"", RCUBE_CHARSET)
  25. );
  26. $this->assertSame(
  27. "ALL TEXT el",
  28. rcube_imap::convert_criteria("ALL TEXT {4}\r\nżel", RCUBE_CHARSET)
  29. );
  30. $this->assertSame(
  31. "ALL TEXT {4}\r\nżel",
  32. rcube_imap::convert_criteria("ALL TEXT {4}\r\nżel", RCUBE_CHARSET, RCUBE_CHARSET)
  33. );
  34. }
  35. /**
  36. * Folder sorting
  37. */
  38. function test_sort_folder_list()
  39. {
  40. $_SESSION['imap_delimiter'] = '.';
  41. $_SESSION['imap_namespace'] = [
  42. 'personal' => null,
  43. 'other' => [['Other Users.', '.']],
  44. 'shared' => [['Shared.', '.']],
  45. ];
  46. foreach (['drafts', 'sent', 'junk', 'trash'] as $mbox) {
  47. rcube::get_instance()->config->set("{$mbox}_mbox", ucfirst($mbox));
  48. }
  49. $object = new rcube_imap;
  50. $result = $object->sort_folder_list([]);
  51. $this->assertSame([], $result);
  52. $result = $object->sort_folder_list(['B', 'A']);
  53. $this->assertSame(['A', 'B'], $result);
  54. $folders = [
  55. 'Trash',
  56. 'Sent',
  57. 'ABC',
  58. 'Drafts',
  59. 'INBOX.Trash',
  60. 'INBOX.Junk',
  61. 'INBOX.Sent',
  62. 'INBOX.Drafts',
  63. 'Shared.Test1',
  64. 'Other Users.Test2',
  65. 'Junk',
  66. 'INBOX',
  67. 'DEF',
  68. ];
  69. $expected = [
  70. 'INBOX',
  71. 'INBOX.Drafts',
  72. 'INBOX.Junk',
  73. 'INBOX.Sent',
  74. 'INBOX.Trash',
  75. 'Drafts',
  76. 'Sent',
  77. 'Junk',
  78. 'Trash',
  79. 'ABC',
  80. 'DEF',
  81. 'Other Users.Test2',
  82. 'Shared.Test1',
  83. ];
  84. $result = $object->sort_folder_list($folders);
  85. $this->assertSame($expected, $result);
  86. }
  87. }