1 package org.cateproject.service;
2
3 import static org.junit.Assert.fail;
4
5 import java.io.FileOutputStream;
6 import java.util.UUID;
7
8 import org.junit.Before;
9 import org.junit.Ignore;
10 import org.junit.Test;
11
12 import org.springframework.security.authentication.AuthenticationManager;
13 import org.springframework.security.authentication.TestingAuthenticationToken;
14 import org.springframework.security.core.Authentication;
15 import org.springframework.security.core.GrantedAuthority;
16 import org.springframework.security.core.context.SecurityContextHolder;
17 import org.springframework.security.core.context.SecurityContextImpl;
18 import org.unitils.dbunit.annotation.DataSet;
19 import org.unitils.dbunit.annotation.ExpectedDataSet;
20 import org.unitils.spring.annotation.SpringBeanByType;
21
22 import eu.etaxonomy.cdm.api.service.IDescriptionService;
23 import eu.etaxonomy.cdm.api.service.INameService;
24 import eu.etaxonomy.cdm.api.service.ITaxonService;
25 import eu.etaxonomy.cdm.model.common.User;
26 import eu.etaxonomy.cdm.model.description.TaxonDescription;
27 import eu.etaxonomy.cdm.model.name.Rank;
28 import eu.etaxonomy.cdm.model.name.ZoologicalName;
29 import eu.etaxonomy.cdm.model.reference.WebPage;
30 import eu.etaxonomy.cdm.model.taxon.Taxon;
31 import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;
32
33 @Ignore
34 public class PublicationUsecaseTest extends CdmTransactionalIntegrationTest {
35
36 @SpringBeanByType
37 private ITaxonService taxonService;
38
39 @SpringBeanByType
40 private INameService nameService;
41
42 @SpringBeanByType
43 private WebRevisionService webRevisionService;
44
45 @SpringBeanByType
46 private IDescriptionService descriptionService;
47
48 @SpringBeanByType
49 private AuthenticationManager authenticationManager;
50
51 private UUID parentUuid;
52
53 @Before
54 public void setUp() {
55 parentUuid = UUID.fromString("9bcd319a-2126-4e26-bd10-fac4706578d0");
56
57 User user = User.NewInstance("ben","password");
58
59 TestingAuthenticationToken token = new TestingAuthenticationToken(user, "password", new GrantedAuthority[0]);
60 Authentication authentication = authenticationManager.authenticate(token);
61
62 SecurityContextImpl secureContext = new SecurityContextImpl();
63 secureContext.setAuthentication(authentication);
64 SecurityContextHolder.setContext(secureContext);
65 }
66
67 @Test
68 @DataSet("PublicationUsecaseTest.testAddNewTaxon.xml")
69 @ExpectedDataSet
70 public void testAddNewTaxon() {
71 Taxon parent = (Taxon)taxonService.find(parentUuid);
72 assert parent != null : "Parent must not be null";
73
74 try{
75 ZoologicalName name = ZoologicalName.NewInstance(Rank.SPECIES(), "Aus", null, "bus", null, null, null,null,null);
76 name.setAuthorshipCache("L. 1758");
77
78 nameService.save(name);
79
80 Taxon taxon = Taxon.NewInstance(name, webRevisionService.getWebRevision().getCurrentConsensus());
81
82 saveTaxon(taxon, parent);
83 } catch(Exception e) {
84 logger.error(e);
85 for(StackTraceElement ste : e.getStackTrace()) {
86 logger.error(ste);
87 }
88 fail("No exception expected here");
89 }
90 setComplete();
91 endTransaction();
92 try {
93 printDataSet(new FileOutputStream("test.xml"));
94 } catch(Exception e) {
95
96 }
97 }
98
99 @Test
100 @DataSet("PublicationUsecaseTest.testAddAnotherTaxon.xml")
101 @ExpectedDataSet
102 public void testAddAnotherTaxon() {
103 Taxon parent = (Taxon)taxonService.find(parentUuid);
104 assert parent != null : "Parent must not be null";
105
106 try{
107 ZoologicalName name = ZoologicalName.NewInstance(Rank.SPECIES(), "Aus", null, "ceus", null, null, null,null,null);
108 name.setAuthorshipCache("L. 1758");
109
110 nameService.save(name);
111
112 Taxon taxon = Taxon.NewInstance(name, webRevisionService.getWebRevision().getCurrentConsensus());
113
114 saveTaxon(taxon, parent);
115 } catch(Exception e) {
116 logger.error(e);
117 for(StackTraceElement ste : e.getStackTrace()) {
118 logger.error(ste);
119 }
120 fail("No exception expected here");
121 }
122 setComplete();
123 endTransaction();
124
125 }
126
127 @Test
128 @DataSet("PublicationUsecaseTest.testPublishDataSet.xml")
129 @ExpectedDataSet
130 public void testPublishDataSet() {
131 WebPage currentConsensus = webRevisionService.getWebRevision().getCurrentConsensus();
132 assert currentConsensus != null : "WebPage cannot be null";
133 try{
134 webRevisionService.publish();
135 } catch(Exception e) {
136 logger.error(e);
137 for(StackTraceElement ste : e.getStackTrace()) {
138 logger.error(ste);
139 }
140 fail("No exception expected here");
141 }
142 setComplete();
143 endTransaction();
144 }
145
146 public void saveTaxon(Taxon taxon, Taxon parent) {
147 taxon.setSec(webRevisionService.getWebRevision().getCurrentConsensus());
148 taxonService.save(taxon);
149 TaxonDescription description = TaxonDescription.NewInstance(taxon);
150 if(webRevisionService.getWebRevision().getRootArea() != null) {
151 description.addGeoScope(webRevisionService.getWebRevision().getRootArea());
152 }
153 descriptionService.save(description);
154 parent.addTaxonomicChild(taxon, null, null);
155
156 taxonService.update(parent);
157 }
158 }
159