1
|
/**
|
2
|
* Copyright (C) 2014 EDIT
|
3
|
* European Distributed Institute of Taxonomy
|
4
|
* http://www.e-taxonomy.eu
|
5
|
*
|
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.
|
8
|
*/
|
9
|
package eu.etaxonomy.taxeditor.httpinvoker;
|
10
|
|
11
|
|
12
|
import static org.hamcrest.CoreMatchers.containsString;
|
13
|
|
14
|
import java.util.Map;
|
15
|
|
16
|
import org.apache.log4j.Level;
|
17
|
import org.apache.log4j.Logger;
|
18
|
import org.junit.Assert;
|
19
|
import org.junit.BeforeClass;
|
20
|
import org.junit.Test;
|
21
|
|
22
|
import eu.etaxonomy.cdm.config.CdmPersistentSourceUtils;
|
23
|
import eu.etaxonomy.cdm.config.CdmPersistentXMLSource.CdmSourceProperties;
|
24
|
import eu.etaxonomy.cdm.config.CdmSourceException;
|
25
|
import eu.etaxonomy.cdm.model.metadata.CdmMetaData.MetaDataPropertyName;
|
26
|
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
|
27
|
import eu.etaxonomy.taxeditor.remoting.source.CdmPersistentRemoteSource;
|
28
|
import eu.etaxonomy.taxeditor.remoting.source.CdmRemoteSource;
|
29
|
import eu.etaxonomy.taxeditor.remoting.source.CdmRemoteSourceException;
|
30
|
import eu.etaxonomy.taxeditor.remoting.source.ICdmRemoteSource;
|
31
|
|
32
|
/**
|
33
|
* Class to test the cdm persistent source functionality, including
|
34
|
* initialising / saving / updating and deleting
|
35
|
*
|
36
|
* Corresponding test sources settings can be found at
|
37
|
* /src/text/resources/eu.etaxonomy.cdm/cdm.datasources.xml
|
38
|
*
|
39
|
*/
|
40
|
public class CdmPersistentRemoteSourceTest extends BaseRemotingTest {
|
41
|
private static final Logger logger = Logger.getLogger(CdmPersistentRemoteSourceTest.class);
|
42
|
|
43
|
private CdmPersistentRemoteSource remotePersistentSource;
|
44
|
|
45
|
@BeforeClass
|
46
|
public static void initialize() {
|
47
|
Logger.getRootLogger().setLevel(Level.INFO);
|
48
|
}
|
49
|
|
50
|
@Test
|
51
|
public void whenLoadingExistingCompleteRemoteSourceThenLoadIsSuccessful() {
|
52
|
|
53
|
remotePersistentSource = getCdmPersistentRemoteSource();
|
54
|
|
55
|
String expectedServer = "127.0.0.1";
|
56
|
String expectedPort = "9090";
|
57
|
String expectedContextPath = "";
|
58
|
logger.info("Default remote source server : " + remotePersistentSource.getServer());
|
59
|
Assert.assertTrue("Default server should be " + expectedServer,
|
60
|
expectedServer.equals(remotePersistentSource.getServer()));
|
61
|
|
62
|
logger.info("Default remote source port : " + remotePersistentSource.getPort());
|
63
|
Assert.assertTrue("Default port should be 9090",
|
64
|
expectedPort.equals(String.valueOf(remotePersistentSource.getPort())));
|
65
|
|
66
|
logger.info("Default remote source context path : " + remotePersistentSource.getContextPath());
|
67
|
Assert.assertTrue("Default remote source context path should be " + expectedContextPath,
|
68
|
expectedContextPath.equals(remotePersistentSource.getContextPath()));
|
69
|
|
70
|
logger.info("Default remote source nomenclatural code : " + remotePersistentSource.getNomenclaturalCode().toString());
|
71
|
Assert.assertTrue("Default NomenclaturalCode should be ICNAFP",
|
72
|
NomenclaturalCode.ICNAFP.equals(remotePersistentSource.getNomenclaturalCode()));
|
73
|
}
|
74
|
|
75
|
|
76
|
|
77
|
|
78
|
@Test
|
79
|
public void whenConnectingToAnActiveServerThenConnectSuccessfully() {
|
80
|
// check if active server throws the right exception
|
81
|
|
82
|
remotePersistentSource = getCdmPersistentRemoteSource();
|
83
|
|
84
|
String dbSchemaVersion = "";
|
85
|
try {
|
86
|
dbSchemaVersion = remotePersistentSource.getDbSchemaVersion();
|
87
|
} catch (CdmSourceException e) {
|
88
|
Assert.fail("getDbSchemaVersion() on active cdm server should not have thrown CdmSourceException");
|
89
|
}
|
90
|
logger.info("dbSchemaVersion is " + dbSchemaVersion);
|
91
|
|
92
|
|
93
|
boolean isDbEmpty = false;
|
94
|
try {
|
95
|
isDbEmpty = remotePersistentSource.isDbEmpty();
|
96
|
} catch (CdmSourceException e) {
|
97
|
Assert.fail("isDbEmpty() on active cdm server should not have thrown CdmSourceException");
|
98
|
}
|
99
|
Assert.assertFalse(isDbEmpty);
|
100
|
|
101
|
|
102
|
boolean check = false;
|
103
|
try {
|
104
|
check = remotePersistentSource.checkConnection();
|
105
|
} catch (CdmSourceException e) {
|
106
|
Assert.fail("checkConnection() on active cdm server should not have thrown CdmSourceException");
|
107
|
}
|
108
|
Assert.assertTrue(check);
|
109
|
|
110
|
|
111
|
}
|
112
|
|
113
|
@Test
|
114
|
public void whenRequestingMetadatFromRemoteSourceThenMetaDataIsRetrieved() {
|
115
|
try {
|
116
|
remotePersistentSource = getCdmPersistentRemoteSource();
|
117
|
Map<MetaDataPropertyName, String> cdmMetaDataMap = remotePersistentSource.getMetaDataMap();
|
118
|
for(MetaDataPropertyName mdpn : cdmMetaDataMap.keySet()) {
|
119
|
String value = cdmMetaDataMap.get(mdpn);
|
120
|
logger.info("MetaData Property " + mdpn.name() + " has value " + value);
|
121
|
Assert.assertNotNull("Meta Data Value for property for " + mdpn.name() + " should not be null", value);
|
122
|
}
|
123
|
} catch (CdmSourceException e) {
|
124
|
// TODO Auto-generated catch block
|
125
|
e.printStackTrace();
|
126
|
}
|
127
|
}
|
128
|
|
129
|
@Test
|
130
|
public void whenLoadingNonExistingRemoteSourceThenThrowException() {
|
131
|
try {
|
132
|
remotePersistentSource = CdmPersistentRemoteSource.NewInstance("nonExistingSource");
|
133
|
Assert.fail("Initialising a non-existing remote source should throw an exception");
|
134
|
} catch (CdmRemoteSourceException e) {
|
135
|
logger.info(e.getMessage());
|
136
|
}
|
137
|
}
|
138
|
|
139
|
@Test
|
140
|
public void whenLoadingExistingIncompleteRemoteSourceThenThrowException() {
|
141
|
try {
|
142
|
remotePersistentSource = CdmPersistentRemoteSource.NewInstance("incomplete");
|
143
|
Assert.fail("Initialising an incomplete remote source should throw an exception");
|
144
|
} catch (CdmRemoteSourceException e) {
|
145
|
Assert.assertThat(e.getMessage(), containsString("Required property '" + CdmSourceProperties.SERVER.toString() + "' is missing"));
|
146
|
}
|
147
|
}
|
148
|
|
149
|
@Test
|
150
|
public void whenSavingUpdatingDeletingNewCompleteRemoteSourceThenSaveUpdateDeleteIsSuccessful() {
|
151
|
String strRemoteSource = "local";
|
152
|
Assert.assertFalse("New remote source '" + strRemoteSource + "' should not yet exist in source settings file",
|
153
|
CdmPersistentRemoteSource.exists(strRemoteSource));
|
154
|
try {
|
155
|
ICdmRemoteSource remoteSource =
|
156
|
CdmRemoteSource.NewInstance(strRemoteSource,
|
157
|
"127.0.0.1",
|
158
|
8080,
|
159
|
"col",
|
160
|
NomenclaturalCode.ICNAFP);
|
161
|
remotePersistentSource = CdmPersistentRemoteSource.save(strRemoteSource,remoteSource);
|
162
|
|
163
|
logger.info("Server : " + remotePersistentSource.getServer());
|
164
|
Assert.assertTrue("Server value should be equal",
|
165
|
remoteSource.getServer().equals(remotePersistentSource.getServer()));
|
166
|
|
167
|
logger.info("Port : " + remotePersistentSource.getPort());
|
168
|
Assert.assertTrue("Port value should be equal",
|
169
|
remoteSource.getPort() == remotePersistentSource.getPort());
|
170
|
|
171
|
logger.info("Context Path : " + remotePersistentSource.getContextPath());
|
172
|
Assert.assertTrue("Context Path value should be equal",
|
173
|
remoteSource.getContextPath().equals(remotePersistentSource.getContextPath()));
|
174
|
|
175
|
logger.info("Nomenclatural Code : " + remotePersistentSource.getNomenclaturalCode().name());
|
176
|
Assert.assertTrue("Nomenclatural Code value should be equal",
|
177
|
remoteSource.getNomenclaturalCode().name().equals(remotePersistentSource.getNomenclaturalCode().name()));
|
178
|
|
179
|
Assert.assertTrue("New remote source '" + strRemoteSource + "' should be saved in source settings file",
|
180
|
CdmPersistentRemoteSource.exists(strRemoteSource));
|
181
|
|
182
|
remoteSource = CdmRemoteSource.NewInstance(strRemoteSource,
|
183
|
"127.0.0.55",
|
184
|
9090,
|
185
|
"cyprus",
|
186
|
NomenclaturalCode.ICNB);
|
187
|
remotePersistentSource = CdmPersistentRemoteSource.update(strRemoteSource,remoteSource);
|
188
|
|
189
|
logger.info("Server : " + remotePersistentSource.getServer());
|
190
|
Assert.assertTrue("Server value should be equal",
|
191
|
remoteSource.getServer().equals(remotePersistentSource.getServer()));
|
192
|
|
193
|
logger.info("Port : " + remotePersistentSource.getPort());
|
194
|
Assert.assertTrue("Port value should be equal",
|
195
|
remoteSource.getPort() == remotePersistentSource.getPort());
|
196
|
|
197
|
logger.info("Context Path : " + remotePersistentSource.getContextPath());
|
198
|
Assert.assertTrue("Context Path value should be equal",
|
199
|
remoteSource.getContextPath().equals(remotePersistentSource.getContextPath()));
|
200
|
|
201
|
logger.info("Nomenclatural Code : " + remotePersistentSource.getNomenclaturalCode().name());
|
202
|
Assert.assertTrue("Nomenclatural Code value should be equal",
|
203
|
remoteSource.getNomenclaturalCode().name().equals(remotePersistentSource.getNomenclaturalCode().name()));
|
204
|
|
205
|
Assert.assertTrue("New remote source '" + strRemoteSource + "' should be saved in source settings file",
|
206
|
CdmPersistentRemoteSource.exists(strRemoteSource));
|
207
|
|
208
|
CdmPersistentSourceUtils.delete(remotePersistentSource);
|
209
|
|
210
|
Assert.assertFalse("New remote source '" + strRemoteSource + "' should no longer exist in source settings file",
|
211
|
CdmPersistentRemoteSource.exists(strRemoteSource));
|
212
|
|
213
|
} catch (CdmRemoteSourceException e) {
|
214
|
Assert.fail("Saving a new complete remote source should not throw an exception");
|
215
|
logger.info(e.getMessage());
|
216
|
}
|
217
|
}
|
218
|
|
219
|
|
220
|
|
221
|
}
|