2 * Copyright (C) 2014 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.
9 package eu
.etaxonomy
.taxeditor
.remoting
;
14 import org
.apache
.log4j
.Level
;
15 import org
.apache
.log4j
.Logger
;
16 import org
.junit
.Assert
;
17 import org
.junit
.BeforeClass
;
18 import org
.junit
.Test
;
19 import org
.unitils
.UnitilsJUnit4
;
21 import static org
.hamcrest
.CoreMatchers
.*;
23 import eu
.etaxonomy
.cdm
.config
.CdmPersistentSourceUtils
;
24 import eu
.etaxonomy
.cdm
.config
.CdmPersistentXMLSource
.CdmSourceProperties
;
25 import eu
.etaxonomy
.cdm
.config
.CdmSourceException
;
26 import eu
.etaxonomy
.cdm
.model
.metadata
.CdmMetaData
.MetaDataPropertyName
;
27 import eu
.etaxonomy
.cdm
.model
.name
.NomenclaturalCode
;
28 import eu
.etaxonomy
.cdm
.remote
.CdmPersistentRemoteSource
;
29 import eu
.etaxonomy
.cdm
.remote
.CdmRemoteSource
;
30 import eu
.etaxonomy
.cdm
.remote
.CdmRemoteSourceException
;
31 import eu
.etaxonomy
.cdm
.remote
.ICdmRemoteSource
;
34 * Class to test the cdm persistent source functionality, including
35 * initialising / saving / updating and deleting
37 * Corresponding test sources settings can be found at
38 * /src/text/resources/eu.etaxonomy.cdm/cdm.datasources.xml
41 public class CdmPersistentRemoteSourceTest
extends UnitilsJUnit4
{
42 private static final Logger logger
= Logger
.getLogger(CdmPersistentRemoteSourceTest
.class);
44 private CdmPersistentRemoteSource remotePersistentSource
;
47 public static void initialize() {
48 Logger
.getRootLogger().setLevel(Level
.INFO
);
53 public void whenLoadingExistingCompleteRemoteSourceThenLoadIsSuccessful() {
56 remotePersistentSource
= CdmPersistentRemoteSource
.NewInstance("default");
58 String expectedServer
= "127.0.0.1";
59 String expectedPort
= "8080";
60 String expectedContextPath
= "";
61 logger
.info("Default remote source server : " + remotePersistentSource
.getServer());
62 Assert
.assertTrue("Default server should be " + expectedServer
,
63 expectedServer
.equals(remotePersistentSource
.getServer()));
65 logger
.info("Default remote source port : " + remotePersistentSource
.getPort());
66 Assert
.assertTrue("Default port should be " + 8080,
67 expectedPort
.equals(String
.valueOf(remotePersistentSource
.getPort())));
69 logger
.info("Default remote source context path : " + remotePersistentSource
.getContextPath());
70 Assert
.assertTrue("Default remote source context path should be " + expectedContextPath
,
71 expectedContextPath
.equals(remotePersistentSource
.getContextPath()));
73 logger
.info("Default remote source nomenclatural code : " + remotePersistentSource
.getNomenclaturalCode().toString());
74 Assert
.assertTrue("Default NomenclaturalCode should be ICNAFP",
75 NomenclaturalCode
.ICNAFP
.equals(remotePersistentSource
.getNomenclaturalCode()));
77 } catch (CdmRemoteSourceException e
) {
78 Assert
.fail("Initialising an existing remote source should not throw an exception");
86 public void whenConnectingToAnActiveServerThenConnectSuccessfully() {
87 // check if active server throws the right exception
89 remotePersistentSource
= CdmPersistentRemoteSource
.NewInstance("default");
91 String dbSchemaVersion
= "";
93 dbSchemaVersion
= remotePersistentSource
.getDbSchemaVersion();
94 } catch (CdmSourceException e
) {
95 Assert
.fail("getDbSchemaVersion() on active cdm server should not have thrown CdmSourceException");
97 logger
.info("dbSchemaVersion is " + dbSchemaVersion
);
100 boolean isDbEmpty
= false;
102 isDbEmpty
= remotePersistentSource
.isDbEmpty();
103 } catch (CdmSourceException e
) {
104 Assert
.fail("isDbEmpty() on active cdm server should not have thrown CdmSourceException");
106 Assert
.assertFalse(isDbEmpty
);
109 boolean check
= false;
111 check
= remotePersistentSource
.checkConnection();
112 } catch (CdmSourceException e
) {
113 Assert
.fail("checkConnection() on active cdm server should not have thrown CdmSourceException");
115 Assert
.assertTrue(check
);
116 } catch (CdmRemoteSourceException e1
) {
117 // TODO Auto-generated catch block
118 e1
.printStackTrace();
124 public void whenRequestingMetadatFromRemoteSourceThenMetaDataIsRetrieved() {
126 remotePersistentSource
= CdmPersistentRemoteSource
.NewInstance("default");
127 Map
<MetaDataPropertyName
, String
> cdmMetaDataMap
= remotePersistentSource
.getMetaDataMap();
128 for(MetaDataPropertyName mdpn
: cdmMetaDataMap
.keySet()) {
129 String value
= cdmMetaDataMap
.get(mdpn
);
130 logger
.info("MetaData Property " + mdpn
.name() + " has value " + value
);
131 Assert
.assertNotNull("Meta Data Value for property for " + mdpn
.name() + " should not be null", value
);
134 } catch (CdmRemoteSourceException e
) {
135 Assert
.fail("Initialising an existing remote source should not throw an exception");
136 } catch (CdmSourceException e
) {
137 // TODO Auto-generated catch block
143 public void whenLoadingNonExistingRemoteSourceThenThrowException() {
145 remotePersistentSource
= CdmPersistentRemoteSource
.NewInstance("nonExistingSource");
146 Assert
.fail("Initialising a non-existing remote source should throw an exception");
147 } catch (CdmRemoteSourceException e
) {
148 logger
.info(e
.getMessage());
153 public void whenLoadingExistingIncompleteRemoteSourceThenThrowException() {
155 remotePersistentSource
= CdmPersistentRemoteSource
.NewInstance("incomplete");
156 Assert
.fail("Initialising an incomplete remote source should throw an exception");
157 } catch (CdmRemoteSourceException e
) {
158 Assert
.assertThat(e
.getMessage(), containsString("Required property '" + CdmSourceProperties
.SERVER
.toString() + "' is missing"));
163 public void whenSavingUpdatingDeletingNewCompleteRemoteSourceThenSaveUpdateDeleteIsSuccessful() {
164 String strRemoteSource
= "local";
165 Assert
.assertFalse("New remote source '" + strRemoteSource
+ "' should not yet exist in source settings file",
166 CdmPersistentRemoteSource
.exists(strRemoteSource
));
168 ICdmRemoteSource remoteSource
=
169 CdmRemoteSource
.NewInstance(strRemoteSource
,
173 NomenclaturalCode
.ICNAFP
);
174 remotePersistentSource
= CdmPersistentRemoteSource
.save(strRemoteSource
,remoteSource
);
176 logger
.info("Server : " + remotePersistentSource
.getServer());
177 Assert
.assertTrue("Server value should be equal",
178 remoteSource
.getServer().equals(remotePersistentSource
.getServer()));
180 logger
.info("Port : " + remotePersistentSource
.getPort());
181 Assert
.assertTrue("Port value should be equal",
182 remoteSource
.getPort() == remotePersistentSource
.getPort());
184 logger
.info("Context Path : " + remotePersistentSource
.getContextPath());
185 Assert
.assertTrue("Context Path value should be equal",
186 remoteSource
.getContextPath().equals(remotePersistentSource
.getContextPath()));
188 logger
.info("Nomenclatural Code : " + remotePersistentSource
.getNomenclaturalCode().name());
189 Assert
.assertTrue("Nomenclatural Code value should be equal",
190 remoteSource
.getNomenclaturalCode().name().equals(remotePersistentSource
.getNomenclaturalCode().name()));
192 Assert
.assertTrue("New remote source '" + strRemoteSource
+ "' should be saved in source settings file",
193 CdmPersistentRemoteSource
.exists(strRemoteSource
));
195 remoteSource
= CdmRemoteSource
.NewInstance(strRemoteSource
,
199 NomenclaturalCode
.ICNB
);
200 remotePersistentSource
= CdmPersistentRemoteSource
.update(strRemoteSource
,remoteSource
);
202 logger
.info("Server : " + remotePersistentSource
.getServer());
203 Assert
.assertTrue("Server value should be equal",
204 remoteSource
.getServer().equals(remotePersistentSource
.getServer()));
206 logger
.info("Port : " + remotePersistentSource
.getPort());
207 Assert
.assertTrue("Port value should be equal",
208 remoteSource
.getPort() == remotePersistentSource
.getPort());
210 logger
.info("Context Path : " + remotePersistentSource
.getContextPath());
211 Assert
.assertTrue("Context Path value should be equal",
212 remoteSource
.getContextPath().equals(remotePersistentSource
.getContextPath()));
214 logger
.info("Nomenclatural Code : " + remotePersistentSource
.getNomenclaturalCode().name());
215 Assert
.assertTrue("Nomenclatural Code value should be equal",
216 remoteSource
.getNomenclaturalCode().name().equals(remotePersistentSource
.getNomenclaturalCode().name()));
218 Assert
.assertTrue("New remote source '" + strRemoteSource
+ "' should be saved in source settings file",
219 CdmPersistentRemoteSource
.exists(strRemoteSource
));
221 CdmPersistentSourceUtils
.delete(remotePersistentSource
);
223 Assert
.assertFalse("New remote source '" + strRemoteSource
+ "' should no longer exist in source settings file",
224 CdmPersistentRemoteSource
.exists(strRemoteSource
));
226 } catch (CdmRemoteSourceException e
) {
227 Assert
.fail("Saving a new complete remote source should not throw an exception");
228 logger
.info(e
.getMessage());