2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
10 package eu
.etaxonomy
.cdm
.persistence
.dao
.hibernate
.common
;
12 import static org
.junit
.Assert
.assertEquals
;
13 import static org
.junit
.Assert
.assertFalse
;
14 import static org
.junit
.Assert
.assertNotNull
;
15 import static org
.junit
.Assert
.assertTrue
;
17 import java
.util
.List
;
18 import java
.util
.UUID
;
20 import org
.junit
.Before
;
21 import org
.junit
.Test
;
22 import org
.springframework
.security
.Authentication
;
23 import org
.springframework
.security
.AuthenticationManager
;
24 import org
.springframework
.security
.context
.SecurityContextHolder
;
25 import org
.springframework
.security
.context
.SecurityContextImpl
;
26 import org
.springframework
.security
.providers
.TestingAuthenticationToken
;
27 import org
.unitils
.dbunit
.annotation
.DataSet
;
28 import org
.unitils
.dbunit
.annotation
.ExpectedDataSet
;
29 import org
.unitils
.spring
.annotation
.SpringBeanByType
;
31 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
32 import eu
.etaxonomy
.cdm
.model
.common
.GrantedAuthorityImpl
;
33 import eu
.etaxonomy
.cdm
.model
.common
.User
;
34 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
35 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonBase
;
36 import eu
.etaxonomy
.cdm
.persistence
.dao
.common
.IUserDao
;
37 import eu
.etaxonomy
.cdm
.persistence
.dao
.taxon
.ITaxonDao
;
38 import eu
.etaxonomy
.cdm
.test
.integration
.CdmTransactionalIntegrationTest
;
44 public class CdmEntityDaoBaseTest
extends CdmTransactionalIntegrationTest
{
47 private TaxonBase cdmBase
;
50 private ITaxonDao cdmEntityDaoBase
;
53 private AuthenticationManager authenticationManager
;
56 private IUserDao userDao
;
59 * @throws java.lang.Exception
62 public void setUp() throws Exception
{
63 uuid
= UUID
.fromString("8d77c380-c76a-11dd-ad8b-0800200c9a66");
64 cdmBase
= Taxon
.NewInstance(null, null);
65 cdmBase
.setUuid(UUID
.fromString("e463b270-c76b-11dd-ad8b-0800200c9a66"));
67 // Clear the context prior to each test
68 SecurityContextHolder
.clearContext();
71 private void setAuthentication(User user
) {
72 TestingAuthenticationToken token
= new TestingAuthenticationToken(user
, "password", new GrantedAuthorityImpl
[0]);
73 Authentication authentication
= authenticationManager
.authenticate(token
);
75 SecurityContextImpl secureContext
= new SecurityContextImpl();
76 secureContext
.setAuthentication(authentication
);
77 SecurityContextHolder
.setContext(secureContext
);
80 /************ TESTS ********************************/
84 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmEntityDaoBase#CdmEntityDaoBase(java.lang.Class)}.
88 public void testCdmEntityDaoBase() throws Exception
{
89 assertNotNull("cdmEntityDaoBase should exist",cdmEntityDaoBase
);
93 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmEntityDaoBase#saveOrUpdate(eu.etaxonomy.cdm.model.common.CdmBase)}.
96 @DataSet("CdmEntityDaoBaseTest.xml")
98 public void testSaveOrUpdate() {
99 TaxonBase cdmBase
= cdmEntityDaoBase
.findByUuid(uuid
);
100 cdmBase
.setDoubtful(true);
101 cdmEntityDaoBase
.saveOrUpdate(cdmBase
);
105 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmEntityDaoBase#saveOrUpdate(eu.etaxonomy.cdm.model.common.CdmBase)}.
108 @DataSet("CdmEntityDaoBaseTest.xml")
110 public void testSaveOrUpdateWithAuthentication() {
111 User user
= userDao
.findByUuid(UUID
.fromString("dbac0f20-07f2-11de-8c30-0800200c9a66"));
112 assert user
!= null : "User cannot be null";
113 setAuthentication(user
);
114 TaxonBase cdmBase
= cdmEntityDaoBase
.findByUuid(uuid
);
115 cdmBase
.setDoubtful(true);
116 cdmEntityDaoBase
.saveOrUpdate(cdmBase
);
120 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmEntityDaoBase#saveOrUpdate(eu.etaxonomy.cdm.model.common.CdmBase)}.
123 @DataSet("CdmEntityDaoBaseTest.xml")
125 public void testSaveOrUpdateNewObjectWithAuthentication() {
126 User user
= userDao
.findByUuid(UUID
.fromString("dbac0f20-07f2-11de-8c30-0800200c9a66"));
127 assert user
!= null : "User cannot be null";
128 setAuthentication(user
);
129 cdmEntityDaoBase
.saveOrUpdate(cdmBase
);
132 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmEntityDaoBase#save(eu.etaxonomy.cdm.model.common.CdmBase)}.
135 @DataSet("CdmEntityDaoBaseTest.xml")
137 public void testSave() throws Exception
{
138 cdmEntityDaoBase
.save(cdmBase
);
142 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmEntityDaoBase#save(eu.etaxonomy.cdm.model.common.CdmBase)}.
145 @DataSet("CdmEntityDaoBaseTest.xml")
147 public void testSaveWithAuthentication() throws Exception
{
148 User user
= userDao
.findByUuid(UUID
.fromString("dbac0f20-07f2-11de-8c30-0800200c9a66"));
149 assert user
!= null : "User cannot be null";
150 setAuthentication(user
);
151 cdmEntityDaoBase
.save(cdmBase
);
155 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmEntityDaoBase#update(eu.etaxonomy.cdm.model.common.CdmBase)}.
158 @DataSet("CdmEntityDaoBaseTest.xml")
160 public void testUpdate() {
161 TaxonBase cdmBase
= cdmEntityDaoBase
.findByUuid(uuid
);
162 cdmBase
.setDoubtful(true);
163 cdmEntityDaoBase
.update(cdmBase
);
167 @DataSet("CdmEntityDaoBaseTest.xml")
169 public void testUpdateWithAuthentication() {
170 User user
= userDao
.findByUuid(UUID
.fromString("dbac0f20-07f2-11de-8c30-0800200c9a66"));
171 assert user
!= null : "User cannot be null";
173 setAuthentication(user
);
174 TaxonBase cdmBase
= cdmEntityDaoBase
.findByUuid(uuid
);
175 cdmBase
.setDoubtful(true);
176 cdmEntityDaoBase
.update(cdmBase
);
180 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmEntityDaoBase#findById(int)}.
183 @DataSet("CdmEntityDaoBaseTest.xml")
184 public void testFindById() {
185 CdmBase cdmBase
= cdmEntityDaoBase
.findById(1);
186 assertNotNull("There should be an entity with an id of 1",cdmBase
);
190 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmEntityDaoBase#findByUuid(java.util.UUID)}.
193 @DataSet("CdmEntityDaoBaseTest.xml")
194 public void testFindByUuid() {
195 CdmBase cdmBase
= cdmEntityDaoBase
.findByUuid(uuid
);
196 assertNotNull("testFindByUuid() an entity with a uuid of " + uuid
.toString(),cdmBase
);
200 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmEntityDaoBase#exists(java.util.UUID)}.
203 @DataSet("CdmEntityDaoBaseTest.xml")
204 public void testExists() {
205 boolean exists
= cdmEntityDaoBase
.exists(uuid
);
206 assertTrue("exists() should return true for uuid " + uuid
.toString(), exists
);
207 boolean existsRandom
= cdmEntityDaoBase
.exists(UUID
.randomUUID());
208 assertFalse("exists() should return false for any other uuid", existsRandom
);
212 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmEntityDaoBase#list(int, int)}.
215 @DataSet("CdmEntityDaoBaseTest.xml")
216 public void testList() {
217 List
<TaxonBase
> list
= cdmEntityDaoBase
.list(1000, 0);
218 assertNotNull("list() should not return null",list
);
219 assertEquals("list() should return a list with two entities in it",list
.size(),2);
223 * Test method for {@link eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmEntityDaoBase#delete(eu.etaxonomy.cdm.model.common.CdmBase)}.
226 @DataSet("CdmEntityDaoBaseTest.xml")
228 public void testDelete() {
229 TaxonBase cdmBase
= cdmEntityDaoBase
.findByUuid(uuid
);
230 assertNotNull(cdmBase
);
231 cdmEntityDaoBase
.delete(cdmBase
);