PageRenderTime 26ms CodeModel.GetById 13ms RepoModel.GetById 1ms app.codeStats 0ms

/src/test/java/com/atlassian/confluence/extra/impresence2/reporter/TestMSNPresenceReporter.java

https://bitbucket.org/xiaobguo/confluence-impresence-plugin
Java | 218 lines | 174 code | 44 blank | 0 comment | 0 complexity | b92f298c489e0c06630c7dd9a19a8509 MD5 | raw file
  1. package com.atlassian.confluence.extra.impresence2.reporter;
  2. import com.atlassian.confluence.setup.bandana.ConfluenceBandanaContext;
  3. import net.sf.jml.Email;
  4. import net.sf.jml.MsnContact;
  5. import net.sf.jml.MsnContactList;
  6. import net.sf.jml.MsnMessenger;
  7. import net.sf.jml.MsnUserStatus;
  8. import org.apache.commons.lang.StringUtils;
  9. import org.mockito.Mock;
  10. import static org.mockito.Mockito.verify;
  11. import static org.mockito.Mockito.when;
  12. public class TestMSNPresenceReporter extends AbstractLoginPresenceReporterTest<MSNPresenceReporter>
  13. {
  14. @Mock
  15. private MsnMessenger msnMessenger;
  16. @Mock
  17. private MsnContactList msnContactList;
  18. @Mock
  19. private MsnContact msnContact;
  20. private boolean loginComplete;
  21. @Override
  22. protected void setUp() throws Exception
  23. {
  24. super.setUp();
  25. when(bootstrapManager.getWebAppContextPath()).thenReturn("");
  26. }
  27. protected String getPresenceReporterKey()
  28. {
  29. return MSNPresenceReporter.KEY;
  30. }
  31. protected MSNPresenceReporter createPresenceReporter()
  32. {
  33. MSNPresenceReporter presenceReporter = new MSNPresenceReporter()
  34. {
  35. protected MsnMessenger createMsnMessenger()
  36. {
  37. return msnMessenger;
  38. }
  39. protected boolean isLoginComplete()
  40. {
  41. return loginComplete;
  42. }
  43. };
  44. presenceReporter.setLocaleSupport(localeSupport);
  45. presenceReporter.setBootstrapManager(bootstrapManager);
  46. presenceReporter.setBandanaManager(bandanaManager);
  47. return presenceReporter;
  48. }
  49. public void testGetKey()
  50. {
  51. assertEquals("msn", createPresenceReporter().getKey());
  52. }
  53. public void testGetName()
  54. {
  55. assertEquals("presencereporter.msn.name", createPresenceReporter().getName());
  56. }
  57. public void testGetServiceHomePage()
  58. {
  59. assertEquals("presencereporter.msn.servicehomepage", createPresenceReporter().getServiceHomepage());
  60. }
  61. public void testHasConfig()
  62. {
  63. assertEquals(true, createPresenceReporter().hasConfig());
  64. }
  65. public void testGetPresenceXHtmlWhenPresenceRequiresConfig()
  66. {
  67. createPresenceReporter();
  68. presenceReporter.setLocaleSupport(localeSupport);
  69. try
  70. {
  71. presenceReporter.getPresenceXHTML("foo", true);
  72. fail("MsnPresenceReporter should throw a PresenceException if a dummy account has not been configured.");
  73. }
  74. catch (final PresenceException pe)
  75. {
  76. assertEquals("presencereporter.msn.error.needconfig", pe.getMessage());
  77. }
  78. }
  79. public void testGetPresenceXhtmlWhenDummyAccountIsStillLoggingIn() throws PresenceException
  80. {
  81. when(bandanaManager.getValue(
  82. ConfluenceBandanaContext.GLOBAL_CONTEXT,
  83. "extra.im.account." + getPresenceReporterKey()
  84. )).thenReturn("username");
  85. when(bandanaManager.getValue(
  86. ConfluenceBandanaContext.GLOBAL_CONTEXT,
  87. "extra.im.password." + getPresenceReporterKey()
  88. )).thenReturn("password");
  89. createPresenceReporter();
  90. assertTrue(presenceReporter.getPresenceXHTML("admin@localhost.localdomain", true).indexOf("presence.link.loggingin") >= 0);
  91. }
  92. public void testGetPresenceXhtmlWhenTargetIdIsNotFriend() throws PresenceException
  93. {
  94. final String emailAddress = "admin@localhost.localdomain";
  95. final Email email = Email.parseStr(emailAddress);
  96. loginComplete = true;
  97. when(bandanaManager.getValue(
  98. ConfluenceBandanaContext.GLOBAL_CONTEXT,
  99. "extra.im.account." + getPresenceReporterKey()
  100. )).thenReturn("username");
  101. when(bandanaManager.getValue(
  102. ConfluenceBandanaContext.GLOBAL_CONTEXT,
  103. "extra.im.password." + getPresenceReporterKey()
  104. )).thenReturn("password");
  105. when(msnMessenger.getContactList()).thenReturn(msnContactList);
  106. createPresenceReporter();
  107. assertTrue(presenceReporter.getPresenceXHTML("admin@localhost.localdomain", true).indexOf("presencereporter.msn.message.waitinbuddyaccept") >= 0);
  108. verify(msnMessenger).addFriend(email, emailAddress);
  109. }
  110. public void testGetPresenceXhtmlWhenFriendIsAvailableShowingId() throws PresenceException
  111. {
  112. final String emailAddress = "admin@localhost.localdomain";
  113. final Email email = Email.parseStr(emailAddress);
  114. final StringBuffer out = new StringBuffer();
  115. final String url;
  116. loginComplete = true;
  117. when(bandanaManager.getValue(
  118. ConfluenceBandanaContext.GLOBAL_CONTEXT,
  119. "extra.im.account." + getPresenceReporterKey()
  120. )).thenReturn("username");
  121. when(bandanaManager.getValue(
  122. ConfluenceBandanaContext.GLOBAL_CONTEXT,
  123. "extra.im.password." + getPresenceReporterKey()
  124. )).thenReturn("password");
  125. when(msnContact.getStatus()).thenReturn(MsnUserStatus.ONLINE);
  126. when(msnContactList.getContactByEmail(email)).thenReturn(msnContact);
  127. when(msnMessenger.getContactList()).thenReturn(msnContactList);
  128. url = out.append("mailto:").append(emailAddress).toString();
  129. out.setLength(0);
  130. out.append("<A href='").append(url).append("'>");
  131. out.append("<img src='").append(StringUtils.EMPTY)
  132. .append("/download/resources/confluence.extra.impresence2:im/images/").append("im_available").append(".gif'")
  133. .append(" style='vertical-align:bottom; margin:0px 1px;' border='0'")
  134. .append("' title='").append(MsnUserStatus.ONLINE.getDisplayStatus()).append("'")
  135. .append("/>");
  136. out.append("</a>");
  137. out.append("&nbsp;");
  138. out.append("<A href='").append(url).append("' title='").append(MsnUserStatus.ONLINE.getDisplayStatus()).append("'>");
  139. out.append(emailAddress);
  140. out.append("</a>");
  141. createPresenceReporter();
  142. assertEquals(out.toString(), presenceReporter.getPresenceXHTML("admin@localhost.localdomain", true));
  143. }
  144. public void testGetPresenceXhtmlWhenFriendIsAvailableNotShowingId() throws PresenceException
  145. {
  146. final String emailAddress = "admin@localhost.localdomain";
  147. final Email email = Email.parseStr(emailAddress);
  148. final StringBuffer out = new StringBuffer();
  149. final String url;
  150. loginComplete = true;
  151. when(bandanaManager.getValue(
  152. ConfluenceBandanaContext.GLOBAL_CONTEXT,
  153. "extra.im.account." + getPresenceReporterKey()
  154. )).thenReturn("username");
  155. when(bandanaManager.getValue(
  156. ConfluenceBandanaContext.GLOBAL_CONTEXT,
  157. "extra.im.password." + getPresenceReporterKey()
  158. )).thenReturn("password");
  159. when(msnContact.getStatus()).thenReturn(MsnUserStatus.ONLINE);
  160. when(msnContactList.getContactByEmail(email)).thenReturn(msnContact);
  161. when(msnMessenger.getContactList()).thenReturn(msnContactList);
  162. url = out.append("mailto:").append(emailAddress).toString();
  163. out.setLength(0);
  164. out.append("<A href='").append(url).append("'>");
  165. out.append("<img src='").append(StringUtils.EMPTY)
  166. .append("/download/resources/confluence.extra.impresence2:im/images/").append("im_available").append(".gif'")
  167. .append(" style='vertical-align:bottom; margin:0px 1px;' border='0'")
  168. .append("' title='").append(MsnUserStatus.ONLINE.getDisplayStatus()).append("'")
  169. .append("/>");
  170. out.append("</a>");
  171. createPresenceReporter();
  172. assertEquals(out.toString(), presenceReporter.getPresenceXHTML("admin@localhost.localdomain", false));
  173. }
  174. }