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