|
|
@@ -7,9 +7,15 @@ import javax.servlet.ServletConfig; |
|
|
|
import javax.servlet.ServletException; |
|
|
|
import javax.servlet.http.HttpSessionBindingEvent; |
|
|
|
|
|
|
|
import java.util.Collections; |
|
|
|
|
|
|
|
import org.easymock.EasyMock; |
|
|
|
import org.junit.Assert; |
|
|
|
import org.junit.Test; |
|
|
|
import org.mockito.Mockito; |
|
|
|
import org.mockito.invocation.InvocationOnMock; |
|
|
|
import org.mockito.stubbing.Answer; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* |
|
|
@@ -125,4 +131,47 @@ public class VaadinServiceTest { |
|
|
|
|
|
|
|
assertThat(notification, containsString("\"url\":null")); |
|
|
|
} |
|
|
|
@Test |
|
|
|
public void reinitializeSession_setVaadinSessionAttriuteWithLock() { |
|
|
|
final VaadinRequest request = Mockito.mock(VaadinRequest.class); |
|
|
|
|
|
|
|
VaadinSession vaadinSession = Mockito.mock(VaadinSession.class); |
|
|
|
final VaadinSession newVaadinSession = Mockito.mock(VaadinSession.class); |
|
|
|
|
|
|
|
WrappedSession session = mockSession(request, vaadinSession, "foo"); |
|
|
|
|
|
|
|
Mockito.doAnswer(new Answer() { |
|
|
|
@Override |
|
|
|
public Object answer(InvocationOnMock invocation) { |
|
|
|
mockSession(request, newVaadinSession, "bar"); |
|
|
|
return null; |
|
|
|
} |
|
|
|
}).when(session).invalidate(); |
|
|
|
|
|
|
|
VaadinService.reinitializeSession(request); |
|
|
|
|
|
|
|
Mockito.verify(vaadinSession, Mockito.times(2)).lock(); |
|
|
|
Mockito.verify(vaadinSession).setAttribute( |
|
|
|
VaadinService.PRESERVE_UNBOUND_SESSION_ATTRIBUTE, Boolean.TRUE); |
|
|
|
Mockito.verify(vaadinSession).setAttribute( |
|
|
|
VaadinService.PRESERVE_UNBOUND_SESSION_ATTRIBUTE, null); |
|
|
|
Mockito.verify(vaadinSession, Mockito.times(2)).unlock(); |
|
|
|
} |
|
|
|
|
|
|
|
private WrappedSession mockSession(VaadinRequest request, |
|
|
|
VaadinSession vaadinSession, String attributeName) { |
|
|
|
WrappedSession session = Mockito.mock(WrappedSession.class); |
|
|
|
Mockito.when(request.getWrappedSession()).thenReturn(session); |
|
|
|
|
|
|
|
Mockito.when(session.getAttributeNames()) |
|
|
|
.thenReturn(Collections.singleton(attributeName)); |
|
|
|
|
|
|
|
Mockito.when(session.getAttribute(attributeName)) |
|
|
|
.thenReturn(vaadinSession); |
|
|
|
|
|
|
|
VaadinService service = Mockito.mock(VaadinService.class); |
|
|
|
|
|
|
|
Mockito.when(vaadinSession.getService()).thenReturn(service); |
|
|
|
return session; |
|
|
|
} |
|
|
|
} |