Project

General

Profile

Download (5.49 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.cdm.api.service;
2

    
3
import static org.junit.Assert.assertEquals;
4

    
5

    
6
import java.util.Iterator;
7
import java.util.Set;
8
import java.util.UUID;
9

    
10
import javax.sql.DataSource;
11

    
12
import org.apache.log4j.Logger;
13

    
14
import org.junit.Assert;
15
import org.junit.Before;
16
import org.junit.Test;
17
import org.junit.runner.RunWith;
18

    
19
import org.springframework.security.authentication.AuthenticationManager;
20
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
21
import org.springframework.security.core.Authentication;
22
import org.springframework.security.core.context.SecurityContext;
23
import org.springframework.security.core.context.SecurityContextHolder;
24

    
25
import org.springframework.test.annotation.Rollback;
26
import org.springframework.transaction.UnexpectedRollbackException;
27
import org.springframework.transaction.annotation.Transactional;
28
import org.unitils.database.util.TransactionMode;
29
import org.unitils.UnitilsJUnit4TestClassRunner;
30
import org.unitils.database.annotations.TestDataSource;
31
import org.unitils.database.util.TransactionMode;
32
import org.unitils.dbunit.annotation.DataSet;
33
import org.unitils.spring.annotation.SpringApplicationContext;
34
import org.unitils.spring.annotation.SpringBeanByName;
35

    
36
import eu.etaxonomy.cdm.model.common.User;
37
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
38

    
39
import eu.etaxonomy.cdm.model.description.TaxonDescription;
40
import eu.etaxonomy.cdm.model.description.TextData;
41

    
42
import eu.etaxonomy.cdm.model.media.Media;
43
import eu.etaxonomy.cdm.model.name.BotanicalName;
44
import eu.etaxonomy.cdm.model.name.Rank;
45
import eu.etaxonomy.cdm.model.taxon.Taxon;
46
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
47

    
48
import org.springframework.security.access.AccessDeniedException;
49

    
50
@RunWith(UnitilsJUnit4TestClassRunner.class)
51
@SpringApplicationContext({"/eu/etaxonomy/cdm/applicationContextSecurity.xml"})
52
@Transactional
53
@DataSet
54
public class SecurityTest {
55
private static final Logger logger = Logger.getLogger(TaxonServiceImplTest.class);
56
	
57
	@SpringBeanByName
58
	private ITaxonService taxonService;
59
	
60
	@SpringBeanByName
61
	private IDescriptionService descriptionService;
62
	
63
	@SpringBeanByName
64
	private IUserService userService;
65
	
66
	
67
	@TestDataSource
68
	protected DataSource dataSource;
69
	
70
	private Authentication authentication;
71
	
72
	@SpringBeanByName
73
	private AuthenticationManager authenticationManager;
74
	
75
	private UsernamePasswordAuthenticationToken token;
76
	
77
	@Before
78
	public void setUp(){
79
		token = new UsernamePasswordAuthenticationToken("ben", "sPePhAz6");
80
	}
81
	
82
	
83
	/**
84
	 * Test method for {@link eu.etaxonomy.cdm.api.service.TaxonServiceImpl#saveTaxon(eu.etaxonomy.cdm.model.taxon.TaxonBase)}.
85
	 */
86
	@Test
87
	public final void testSaveTaxon() {
88
		
89
		authentication = authenticationManager.authenticate(token);
90
		SecurityContext context = SecurityContextHolder.getContext();
91
		context.setAuthentication(authentication);
92
		
93
		Taxon expectedTaxon = Taxon.NewInstance(BotanicalName.NewInstance(Rank.SPECIES()), null);
94
		UUID uuid = taxonService.save(expectedTaxon);
95
		TaxonBase<?> actualTaxon = taxonService.find(uuid);
96
		assertEquals(expectedTaxon, actualTaxon);
97
	}
98
	@Test
99
	public void testUpdateUser(){
100
		
101
		authentication = authenticationManager.authenticate(token);
102
		SecurityContext context = SecurityContextHolder.getContext();
103
		context.setAuthentication(authentication);
104
		String username = "standardUser";
105
		String password = "pw";
106
		User user = User.NewInstance(username, password);
107
		
108
		userService.createUser(user);
109
		user.setEmailAddress("test@bgbm.org");
110
		
111
		userService.updateUser(user);
112
		//userService.update(user);
113
		userService.saveOrUpdate(user);
114
	}
115
	
116
	@Test
117
	public final void testSaveOrUpdateTaxon() {
118
		authentication = authenticationManager.authenticate(token);
119
		SecurityContext context = SecurityContextHolder.getContext();
120
		context.setAuthentication(authentication);
121
		Taxon expectedTaxon = Taxon.NewInstance(null, null);
122
		UUID uuid = taxonService.save(expectedTaxon);
123
		TaxonBase<?> actualTaxon = taxonService.find(uuid);
124
		assertEquals(expectedTaxon, actualTaxon);
125
		
126
		actualTaxon.setName(BotanicalName.NewInstance(Rank.SPECIES()));
127
		try{
128
			taxonService.saveOrUpdate(actualTaxon);
129
		}catch(Exception e){
130
			Assert.fail();
131
		}
132
	}
133
	
134
	
135
	@Test
136
	public void testSaveOrUpdateDescription(){
137
		
138
		authentication = authenticationManager.authenticate(new UsernamePasswordAuthenticationToken("descriptionEditor", "test"));
139
		SecurityContext context = SecurityContextHolder.getContext();
140
		context.setAuthentication(authentication);
141
		Taxon taxon = (Taxon) taxonService.find(UUID.fromString("7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331"));
142
		
143
		Set<TaxonDescription> descriptions = taxon.getDescriptions();
144
		
145
		Iterator<TaxonDescription> iterator = descriptions.iterator();
146
		
147
		TaxonDescription description = iterator.next();
148
		description = (TaxonDescription) descriptionService.find(description.getUuid());
149
		Iterator<DescriptionElementBase> elements = description.getElements().iterator();
150
		DescriptionElementBase element = elements.next();
151
		TextData textData = (TextData) element;
152
		Media media = Media.NewInstance();
153
		textData.addMedia(media);
154
		
155
		descriptionService.saveDescriptionElement(element);
156
		
157
		taxon = (Taxon) taxonService.find(UUID.fromString("7b8b5cb3-37ba-4dba-91ac-4c6ffd6ac331"));
158
		descriptions = taxon.getDescriptions();
159
		
160
		iterator = descriptions.iterator();
161
		
162
		description = iterator.next();
163
		
164
		//taxonService.saveOrUpdate(taxon);
165
	}
166
}
(9-9/15)