PageRenderTime 25ms CodeModel.GetById 17ms RepoModel.GetById 1ms app.codeStats 0ms

/src/test/java/it/com/atlassian/confluence/extra/impresence2/MsnPresenceTestCase.java

https://bitbucket.org/xiaobguo/confluence-impresence-plugin
Java | 153 lines | 115 code | 33 blank | 5 comment | 0 complexity | 3cf0779f297689d073beed6167755a26 MD5 | raw file
  1. package it.com.atlassian.confluence.extra.impresence2;
  2. import com.atlassian.confluence.plugin.functest.helper.PageHelper;
  3. import org.xml.sax.SAXException;
  4. public class MsnPresenceTestCase extends AbstractPresenceTestCase
  5. {
  6. protected void setUp() throws Exception {
  7. super.setUp();
  8. assertTrue(getBandanaHelper("extra.im.account.msn").delete());
  9. assertTrue(getBandanaHelper("extra.im.password.msn").delete());
  10. }
  11. protected boolean requiresConfiguration()
  12. {
  13. return true;
  14. }
  15. public void testRequiresConfig()
  16. {
  17. final PageHelper pageHelper = getPageHelper();
  18. pageHelper.setSpaceKey(testSpaceKey);
  19. pageHelper.setTitle("Test Requires Configuration");
  20. pageHelper.setContent(
  21. "{im:john.doe@localhost.localdomain|service=msn}"
  22. );
  23. assertTrue(pageHelper.create());
  24. gotoPage("/pages/viewpage.action?pageId=" + pageHelper.getId());
  25. assertTextPresent("An administrator must configure your server's MSN/Windows Messenger Service before you can use this macro.");
  26. assertLinkPresentWithText("Configure MSN/Windows Messenger Service");
  27. }
  28. public void testConfigurationNotAllowedForNonAdminUsers()
  29. {
  30. final PageHelper pageHelper = getPageHelper();
  31. pageHelper.setSpaceKey(testSpaceKey);
  32. pageHelper.setTitle("Test Dummy Account Configuration Accessible By Admins Only");
  33. pageHelper.setContent(
  34. "{im:john.doe@localhost.localdomain|service=msn}"
  35. );
  36. assertTrue(pageHelper.create());
  37. logout();
  38. login(nonAdminUserName, nonAdminPassword);
  39. gotoPage("/pages/viewpage.action?pageId=" + pageHelper.getId());
  40. assertTextPresent("An administrator must configure your server's MSN/Windows Messenger Service before you can use this macro.");
  41. assertLinkNotPresentWithText("Configure MSN/Windows Messenger Service");
  42. logout();
  43. loginAsAdmin(); /* So tearDown can be called successfully */
  44. }
  45. private void configureDummyAccount(final String reporterId, final String reporterPassword)
  46. {
  47. setWorkingForm("presenceconfigform");
  48. setTextField("reporterId", reporterId);
  49. setTextField("reporterPassword", reporterPassword);
  50. submit("update");
  51. /* Assert if the values are correctly set */
  52. assertTitleEquals("Configure the MSN/Windows Messenger Service - Confluence");
  53. assertTableEquals("presenceconfigstatetable",
  54. new String[][] {
  55. new String[] { "Current ID:", reporterId },
  56. new String[] { "Current Password:", reporterPassword },
  57. });
  58. assertEquals(reporterId, getElementAttributByXPath("//input[@name='reporterId']", "value"));
  59. assertEquals(reporterPassword, getElementAttributByXPath("//input[@name='reporterPassword']", "value"));
  60. }
  61. public void testShowPresenceWithId() throws SAXException
  62. {
  63. final PageHelper pageHelper = getPageHelper();
  64. pageHelper.setSpaceKey(testSpaceKey);
  65. pageHelper.setTitle("Test Show Presence With ID");
  66. pageHelper.setContent(
  67. "{im:john.doe@localhost.localdomain|service=msn}"
  68. );
  69. assertTrue(pageHelper.create());
  70. try
  71. {
  72. // Configure MSN/Windows Messenger Service requires escalated privileges
  73. gotoPageWithEscalatedPrivileges("/pages/viewpage.action?pageId=" + pageHelper.getId());
  74. clickLinkWithText("Configure MSN/Windows Messenger Service");
  75. assertTitleEquals("Configure the MSN/Windows Messenger Service - Confluence");
  76. assertTableEquals("presenceconfigstatetable",
  77. new String[][] {
  78. new String[] { "Current ID:", "None!" },
  79. new String[] { "Current Password:", "None!" },
  80. });
  81. assertEquals("", getElementAttributByXPath("//input[@name='reporterId']", "value"));
  82. assertEquals("", getElementAttributByXPath("//input[@name='reporterPassword']", "value"));;
  83. configureDummyAccount("admin@localhost.localdomain", "admin");
  84. /* Now, let's see if the page shows the presence of the targeted user */
  85. gotoPage("/pages/viewpage.action?pageId=" + pageHelper.getId());
  86. assertTextNotPresent("An administrator must configure your server's MSN/Windows Messenger Service before you can use this macro.");
  87. assertTrue(hasPresenceImageInCurrentPage());
  88. assertLinkPresentWithText("john.doe@localhost.localdomain");
  89. }
  90. finally
  91. {
  92. dropEscalatedPrivileges();
  93. }
  94. }
  95. public void testShowPresenceWithoutId() throws SAXException
  96. {
  97. final PageHelper pageHelper = getPageHelper();
  98. pageHelper.setSpaceKey(testSpaceKey);
  99. pageHelper.setTitle("Test Show Presence Without ID");
  100. pageHelper.setContent(
  101. "{im:john.doe@localhost.localdomain|service=msn|showid=false}"
  102. );
  103. assertTrue(pageHelper.create());
  104. try
  105. {
  106. // Configure dummy account requires escalated privileges
  107. gotoPageWithEscalatedPrivileges("/admin/plugins/impresence2/msn/config.action");
  108. configureDummyAccount("admin@localhost.localdomain", "admin");
  109. /* Now, let's see if the page shows the presence of the targeted user */
  110. gotoPage("/pages/viewpage.action?pageId=" + pageHelper.getId());
  111. assertTextNotPresent("An administrator must configure your server's MSN/Windows Messenger Service before you can use this macro.");
  112. assertTrue(hasPresenceImageInCurrentPage());
  113. assertLinkNotPresentWithText("john.doe@localhost.localdomain");
  114. }
  115. finally
  116. {
  117. dropEscalatedPrivileges();
  118. }
  119. }
  120. }