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.

VaadinPortletServiceTest.java 6.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. package com.vaadin.server;
  2. import static org.hamcrest.MatcherAssert.assertThat;
  3. import static org.hamcrest.core.Is.is;
  4. import static org.mockito.Mockito.mock;
  5. import static org.mockito.Mockito.when;
  6. import java.util.concurrent.locks.ReentrantLock;
  7. import javax.portlet.PortletSession;
  8. import org.junit.Assert;
  9. import org.junit.Before;
  10. import org.junit.Test;
  11. import org.mockito.Mockito;
  12. import com.vaadin.shared.ui.ui.UIConstants;
  13. import com.vaadin.ui.UI;
  14. public class VaadinPortletServiceTest {
  15. private VaadinPortletService sut;
  16. private VaadinPortletRequest request;
  17. private DeploymentConfiguration conf;
  18. @Before
  19. public void setup() throws ServiceException {
  20. VaadinPortlet portlet = mock(VaadinPortlet.class);
  21. conf = mock(DeploymentConfiguration.class);
  22. sut = new VaadinPortletService(portlet, conf);
  23. request = mock(VaadinPortletRequest.class);
  24. }
  25. private void mockFileLocationProperty(String location) {
  26. mockPortalProperty(Constants.PORTAL_PARAMETER_VAADIN_RESOURCE_PATH,
  27. location);
  28. }
  29. private void mockPortalProperty(String name, String value) {
  30. when(request.getPortalProperty(name)).thenReturn(value);
  31. }
  32. private void mockFileLocationPreference(String location) {
  33. when(request.getPortletPreference(
  34. Constants.PORTAL_PARAMETER_VAADIN_RESOURCE_PATH))
  35. .thenReturn(location);
  36. }
  37. private void mockLocationDeploymentConfiguration(String location) {
  38. when(conf.getApplicationOrSystemProperty(
  39. Constants.PORTAL_PARAMETER_VAADIN_RESOURCE_PATH, null))
  40. .thenReturn(location);
  41. }
  42. private String getStaticFileLocation() {
  43. return sut.getStaticFileLocation(request);
  44. }
  45. private String getTheme() {
  46. return sut.getConfiguredTheme(request);
  47. }
  48. private void mockThemeProperty(String theme) {
  49. mockPortalProperty(Constants.PORTAL_PARAMETER_VAADIN_THEME, theme);
  50. }
  51. private void mockWidgetsetProperty(String widgetset) {
  52. mockPortalProperty(Constants.PORTAL_PARAMETER_VAADIN_WIDGETSET,
  53. widgetset);
  54. }
  55. private void mockWidgetsetConfiguration(String widgetset) {
  56. when(conf.getWidgetset(null)).thenReturn(widgetset);
  57. }
  58. @Test
  59. public void preferencesOverrideDeploymentConfiguration() {
  60. mockFileLocationPreference("prefs");
  61. mockLocationDeploymentConfiguration("conf");
  62. String location = getStaticFileLocation();
  63. assertThat(location, is("prefs"));
  64. }
  65. @Test
  66. public void deploymentConfigurationOverridesProperties() {
  67. mockFileLocationPreference(null);
  68. mockLocationDeploymentConfiguration("conf");
  69. mockFileLocationProperty("props");
  70. String location = getStaticFileLocation();
  71. assertThat(location, is("conf"));
  72. }
  73. @Test
  74. public void defaultFileLocationIsSet() {
  75. mockFileLocationPreference(null);
  76. mockLocationDeploymentConfiguration(null);
  77. mockFileLocationProperty(null);
  78. String location = getStaticFileLocation();
  79. assertThat(location, is("/html"));
  80. }
  81. @Test
  82. public void trailingSlashesAreTrimmedFromStaticFileLocation() {
  83. mockFileLocationPreference("/content////");
  84. String staticFileLocation = getStaticFileLocation();
  85. assertThat(staticFileLocation, is("/content"));
  86. }
  87. @Test
  88. public void themeCanBeOverridden() {
  89. mockThemeProperty("foobar");
  90. String theme = getTheme();
  91. assertThat(theme, is("foobar"));
  92. }
  93. @Test
  94. public void defaultThemeIsSet() {
  95. mockThemeProperty(null);
  96. String theme = getTheme();
  97. assertThat(theme, is(Constants.DEFAULT_THEME_NAME));
  98. }
  99. private String getWidgetset() {
  100. return sut.getConfiguredWidgetset(request);
  101. }
  102. @Test
  103. public void defaultWidgetsetIsSet() {
  104. mockWidgetsetProperty(null);
  105. mockWidgetsetConfiguration(null);
  106. String widgetset = getWidgetset();
  107. assertThat(widgetset, is(Constants.DEFAULT_WIDGETSET));
  108. }
  109. @Test
  110. public void configurationWidgetsetOverridesProperty() {
  111. mockWidgetsetProperty("foo");
  112. mockWidgetsetConfiguration("bar");
  113. String widgetset = getWidgetset();
  114. assertThat(widgetset, is("bar"));
  115. }
  116. @Test
  117. public void oldDefaultWidgetsetIsMappedToDefaultWidgetset() {
  118. mockWidgetsetConfiguration(null);
  119. mockWidgetsetProperty("com.vaadin.portal.gwt.PortalDefaultWidgetSet");
  120. String widgetset = getWidgetset();
  121. assertThat(widgetset, is(Constants.DEFAULT_WIDGETSET));
  122. }
  123. @Test
  124. public void oldDefaultWidgetSetIsNotMappedToDefaultWidgetset() {
  125. mockWidgetsetConfiguration(
  126. "com.vaadin.portal.gwt.PortalDefaultWidgetSet");
  127. mockWidgetsetProperty(null);
  128. String widgetset = getWidgetset();
  129. assertThat(widgetset,
  130. is("com.vaadin.portal.gwt.PortalDefaultWidgetSet"));
  131. }
  132. @Test
  133. public void findUIDoesntThrowNPE() {
  134. try {
  135. ReentrantLock mockLock = Mockito.mock(ReentrantLock.class);
  136. when(mockLock.isHeldByCurrentThread()).thenReturn(true);
  137. WrappedPortletSession emptyWrappedSession = Mockito
  138. .mock(WrappedPortletSession.class);
  139. when(emptyWrappedSession.getAttribute("null.lock",PortletSession.APPLICATION_SCOPE))
  140. .thenReturn(mockLock);
  141. VaadinRequest requestWithUIIDSet = Mockito
  142. .mock(VaadinRequest.class);
  143. when(requestWithUIIDSet.getParameter(UIConstants.UI_ID_PARAMETER))
  144. .thenReturn("1");
  145. when(requestWithUIIDSet.getWrappedSession())
  146. .thenReturn(emptyWrappedSession);
  147. UI ui = sut.findUI(requestWithUIIDSet);
  148. Assert.assertNull("Unset session did not return null", ui);
  149. } catch (NullPointerException e) {
  150. Assert.fail("findUI threw a NullPointerException");
  151. }
  152. }
  153. }