Author: sclassen
Date: Wed Oct 15 21:59:27 2014
New Revision: 1632185
URL: http://svn.apache.org/r1632185
Log:
ONAMI-115: test to ensure that the servlet filter starts all PUs
Modified:
onami/trunk/persist/src/test/java/org/apache/onami/persist/test/PersistenceServletFilterTest.java
Modified:
onami/trunk/persist/src/test/java/org/apache/onami/persist/test/PersistenceServletFilterTest.java
URL:
http://svn.apache.org/viewvc/onami/trunk/persist/src/test/java/org/apache/onami/persist/test/PersistenceServletFilterTest.java?rev=1632185&r1=1632184&r2=1632185&view=diff
==============================================================================
---
onami/trunk/persist/src/test/java/org/apache/onami/persist/test/PersistenceServletFilterTest.java
(original)
+++
onami/trunk/persist/src/test/java/org/apache/onami/persist/test/PersistenceServletFilterTest.java
Wed Oct 15 21:59:27 2014
@@ -21,27 +21,56 @@ package org.apache.onami.persist.test;
import com.google.inject.Guice;
import com.google.inject.Injector;
+import com.google.inject.Key;
import com.google.inject.Scopes;
+import org.apache.onami.persist.EntityManagerProvider;
import org.apache.onami.persist.PersistenceFilter;
import org.apache.onami.persist.PersistenceModule;
+import org.apache.onami.persist.test.multipersistenceunits.FirstPU;
+import org.apache.onami.persist.test.multipersistenceunits.SecondPU;
+import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThat;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.mock;
/**
* Test which ensures that the @{link PersistenceFilter} fulfills the
requirements of a guice servlet filter.
*/
public class PersistenceServletFilterTest
{
+ private EntityManagerProvider firstEmp;
+
+ private EntityManagerProvider secondEmp;
+
+ private PersistenceFilter persistenceFilter;
+
private Injector injector;
@Before
- public void setUp()
+ public final void setUp()
+ throws Exception
{
final PersistenceModule pm = createPersistenceModuleForTest();
injector = Guice.createInjector( pm );
+
+ persistenceFilter = injector.getInstance( Key.get(
PersistenceFilter.class ) );
+ persistenceFilter.init( mock( FilterConfig.class ) );
+
+ firstEmp = injector.getInstance( Key.get( EntityManagerProvider.class,
FirstPU.class ) );
+ secondEmp = injector.getInstance( Key.get(
EntityManagerProvider.class, SecondPU.class ) );
}
private PersistenceModule createPersistenceModuleForTest()
@@ -52,11 +81,20 @@ public class PersistenceServletFilterTes
@Override
protected void configurePersistence()
{
- bindApplicationManagedPersistenceUnit( "firstUnit" );
+ bindApplicationManagedPersistenceUnit( "firstUnit"
).annotatedWith( FirstPU.class );
+ bindApplicationManagedPersistenceUnit( "secondUnit"
).annotatedWith( SecondPU.class );
}
};
}
+ @After
+ public final void tearDown()
+ throws Exception
+ {
+ persistenceFilter.destroy();
+ }
+
+
@Test
public void persistenceFilterShouldBeSingleton()
{
@@ -67,4 +105,43 @@ public class PersistenceServletFilterTes
{
return Scopes.isSingleton( injector.getBinding( type ) );
}
+
+ @Test
+ public void shouldFilter()
+ throws Exception
+ {
+ // given
+ final ServletRequest request = mock( ServletRequest.class );
+ final ServletResponse response = mock( ServletResponse.class );
+ final FilterChain filterChain = mock( FilterChain.class );
+ doAnswer( new ServletMock() ).when( filterChain ).doFilter( request,
response );
+
+ // when
+ persistenceFilter.doFilter( request, response, filterChain );
+ }
+
+ private class ServletMock
+ implements Answer<Void>
+ {
+
+ public Void answer( InvocationOnMock invocation )
+ throws Throwable
+ {
+ // given
+ final TestEntity firstEntity = new TestEntity();
+ final TestEntity secondEntity = new TestEntity();
+
+ // when
+ firstEmp.get().persist( firstEntity );
+ secondEmp.get().persist( secondEntity );
+
+ // then
+ assertNotNull( firstEmp.get().find( TestEntity.class,
firstEntity.getId() ) );
+ assertNotNull( secondEmp.get().find( TestEntity.class,
secondEntity.getId() ) );
+ assertNull( firstEmp.get().find( TestEntity.class,
secondEntity.getId() ) );
+ assertNull( secondEmp.get().find( TestEntity.class,
firstEntity.getId() ) );
+
+ return null;
+ }
+ }
}