import static org.junit.Assert.assertNotNull;\r
import static org.junit.Assert.assertTrue;\r
\r
+import java.util.ArrayList;\r
import java.util.List;\r
import java.util.UUID;\r
\r
import org.junit.Before;\r
import org.junit.Test;\r
+import org.springframework.security.authentication.AuthenticationManager;\r
+import org.springframework.security.authentication.TestingAuthenticationToken;\r
+import org.springframework.security.core.Authentication;\r
+import org.springframework.security.core.context.SecurityContextHolder;\r
+import org.springframework.security.core.context.SecurityContextImpl;\r
import org.unitils.dbunit.annotation.DataSet;\r
import org.unitils.dbunit.annotation.ExpectedDataSet;\r
import org.unitils.spring.annotation.SpringBeanByType;\r
\r
import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.common.GrantedAuthorityImpl;\r
+import eu.etaxonomy.cdm.model.common.User;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
+import eu.etaxonomy.cdm.persistence.dao.common.IUserDao;\r
import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao;\r
-import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;\r
+import eu.etaxonomy.cdm.persistence.query.OrderHint;\r
+import eu.etaxonomy.cdm.persistence.query.RandomOrder;\r
+import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;\r
\r
/**\r
* @author a.mueller\r
*\r
*/\r
-public class CdmEntityDaoBaseTest extends CdmIntegrationTest {\r
+public class CdmEntityDaoBaseTest extends CdmTransactionalIntegrationTest {\r
\r
private UUID uuid;\r
private TaxonBase cdmBase;\r
\r
@SpringBeanByType\r
private ITaxonDao cdmEntityDaoBase;\r
+ \r
+ @SpringBeanByType\r
+ private AuthenticationManager authenticationManager;\r
+ \r
+ @SpringBeanByType\r
+ private IUserDao userDao;\r
\r
/**\r
* @throws java.lang.Exception\r
uuid = UUID.fromString("8d77c380-c76a-11dd-ad8b-0800200c9a66");\r
cdmBase = Taxon.NewInstance(null, null);\r
cdmBase.setUuid(UUID.fromString("e463b270-c76b-11dd-ad8b-0800200c9a66"));\r
+ \r
+ // Clear the context prior to each test\r
+ SecurityContextHolder.clearContext();\r
+ }\r
+ \r
+ private void setAuthentication(User user) {\r
+ TestingAuthenticationToken token = new TestingAuthenticationToken(user, "password", new GrantedAuthorityImpl[0]);\r
+ Authentication authentication = authenticationManager.authenticate(token);\r
+ \r
+ SecurityContextImpl secureContext = new SecurityContextImpl();\r
+ secureContext.setAuthentication(authentication);\r
+ SecurityContextHolder.setContext(secureContext);\r
}\r
\r
/************ TESTS ********************************/\r
@ExpectedDataSet\r
public void testSaveOrUpdate() {\r
TaxonBase cdmBase = cdmEntityDaoBase.findByUuid(uuid);\r
- cdmBase.setUuid(UUID.fromString("61410dd0-c774-11dd-ad8b-0800200c9a66"));\r
+ cdmBase.setDoubtful(true);\r
cdmEntityDaoBase.saveOrUpdate(cdmBase);\r
}\r
\r
+ /**\r
+ * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmEntityDaoBase#saveOrUpdate(eu.etaxonomy.cdm.model.common.CdmBase)}.\r
+ */\r
+ @Test\r
+ @DataSet("CdmEntityDaoBaseTest.xml")\r
+ @ExpectedDataSet\r
+ public void testSaveOrUpdateWithAuthentication() {\r
+ User user = userDao.findByUuid(UUID.fromString("dbac0f20-07f2-11de-8c30-0800200c9a66"));\r
+ assert user != null : "User cannot be null";\r
+ setAuthentication(user);\r
+ TaxonBase cdmBase = cdmEntityDaoBase.findByUuid(uuid);\r
+ cdmBase.setDoubtful(true);\r
+ cdmEntityDaoBase.saveOrUpdate(cdmBase);\r
+ } \r
+ \r
+ /**\r
+ * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmEntityDaoBase#saveOrUpdate(eu.etaxonomy.cdm.model.common.CdmBase)}.\r
+ */\r
+ @Test\r
+ @DataSet("CdmEntityDaoBaseTest.xml")\r
+ @ExpectedDataSet\r
+ public void testSaveOrUpdateNewObjectWithAuthentication() {\r
+ User user = userDao.findByUuid(UUID.fromString("dbac0f20-07f2-11de-8c30-0800200c9a66"));\r
+ assert user != null : "User cannot be null";\r
+ setAuthentication(user);\r
+ cdmEntityDaoBase.saveOrUpdate(cdmBase);\r
+ } \r
/**\r
* Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmEntityDaoBase#save(eu.etaxonomy.cdm.model.common.CdmBase)}.\r
*/\r
public void testSave() throws Exception {\r
cdmEntityDaoBase.save(cdmBase);\r
}\r
+ \r
+ /**\r
+ * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmEntityDaoBase#save(eu.etaxonomy.cdm.model.common.CdmBase)}.\r
+ */\r
+ @Test\r
+ @DataSet("CdmEntityDaoBaseTest.xml")\r
+ @ExpectedDataSet\r
+ public void testSaveWithAuthentication() throws Exception {\r
+ User user = userDao.findByUuid(UUID.fromString("dbac0f20-07f2-11de-8c30-0800200c9a66"));\r
+ assert user != null : "User cannot be null";\r
+ setAuthentication(user);\r
+ cdmEntityDaoBase.save(cdmBase);\r
+ }\r
\r
/**\r
* Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmEntityDaoBase#update(eu.etaxonomy.cdm.model.common.CdmBase)}.\r
@ExpectedDataSet\r
public void testUpdate() {\r
TaxonBase cdmBase = cdmEntityDaoBase.findByUuid(uuid);\r
- cdmBase.setUuid(UUID.fromString("65bc7d70-c76c-11dd-ad8b-0800200c9a66"));\r
+ cdmBase.setDoubtful(true);\r
+ cdmEntityDaoBase.update(cdmBase);\r
+ }\r
+ \r
+ @Test\r
+ @DataSet("CdmEntityDaoBaseTest.xml")\r
+ @ExpectedDataSet\r
+ public void testUpdateWithAuthentication() {\r
+ User user = userDao.findByUuid(UUID.fromString("dbac0f20-07f2-11de-8c30-0800200c9a66"));\r
+ assert user != null : "User cannot be null";\r
+ \r
+ setAuthentication(user);\r
+ TaxonBase cdmBase = cdmEntityDaoBase.findByUuid(uuid);\r
+ cdmBase.setDoubtful(true);\r
cdmEntityDaoBase.update(cdmBase);\r
}\r
\r
assertEquals("list() should return a list with two entities in it",list.size(),2);\r
}\r
\r
+ /**\r
+ * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmEntityDaoBase#list(int, int)}.\r
+ */\r
+ @Test\r
+ @DataSet("CdmEntityDaoBaseTest.xml")\r
+ public void testRandomOrder() {\r
+ List<OrderHint> orderHints = new ArrayList<OrderHint>();\r
+ orderHints.add(new RandomOrder());\r
+ List<TaxonBase> list = cdmEntityDaoBase.list(null,1000, 0,orderHints,null);\r
+ assertNotNull("list() should not return null",list);\r
+ assertEquals("list() should return a list with two entities in it",list.size(),2);\r
+ }\r
+ \r
/**\r
* Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmEntityDaoBase#delete(eu.etaxonomy.cdm.model.common.CdmBase)}.\r
*/\r
assertNotNull(cdmBase);\r
cdmEntityDaoBase.delete(cdmBase);\r
}\r
-\r
}\r