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
.httpinvoker
;
12 import static org
.hamcrest
.CoreMatchers
.containsString
;
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
;
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
.cdm
.remote
.CdmPersistentRemoteSource
;
28 import eu
.etaxonomy
.cdm
.remote
.CdmRemoteSource
;
29 import eu
.etaxonomy
.cdm
.remote
.CdmRemoteSourceException
;
30 import eu
.etaxonomy
.cdm
.remote
.ICdmRemoteSource
;
33 * Class to test the cdm persistent source functionality, including
34 * initialising / saving / updating and deleting
36 * Corresponding test sources settings can be found at
37 * /src/text/resources/eu.etaxonomy.cdm/cdm.datasources.xml
40 public class CdmPersistentRemoteSourceTest
extends BaseRemotingTest
{
41 private static final Logger logger
= Logger
.getLogger(CdmPersistentRemoteSourceTest
.class);
43 private CdmPersistentRemoteSource remotePersistentSource
;
46 public static void initialize() {
47 Logger
.getRootLogger().setLevel(Level
.INFO
);
51 public void whenLoadingExistingCompleteRemoteSourceThenLoadIsSuccessful() {
53 remotePersistentSource
= getCdmPersistentRemoteSource();
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()));
62 logger
.info("Default remote source port : " + remotePersistentSource
.getPort());
63 Assert
.assertTrue("Default port should be 9090",
64 expectedPort
.equals(String
.valueOf(remotePersistentSource
.getPort())));
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()));
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()));
79 public void whenConnectingToAnActiveServerThenConnectSuccessfully() {
80 // check if active server throws the right exception
82 remotePersistentSource
= getCdmPersistentRemoteSource();
84 String dbSchemaVersion
= "";
86 dbSchemaVersion
= remotePersistentSource
.getDbSchemaVersion();
87 } catch (CdmSourceException e
) {
88 Assert
.fail("getDbSchemaVersion() on active cdm server should not have thrown CdmSourceException");
90 logger
.info("dbSchemaVersion is " + dbSchemaVersion
);
93 boolean isDbEmpty
= false;
95 isDbEmpty
= remotePersistentSource
.isDbEmpty();
96 } catch (CdmSourceException e
) {
97 Assert
.fail("isDbEmpty() on active cdm server should not have thrown CdmSourceException");
99 Assert
.assertFalse(isDbEmpty
);
102 boolean check
= false;
104 check
= remotePersistentSource
.checkConnection();
105 } catch (CdmSourceException e
) {
106 Assert
.fail("checkConnection() on active cdm server should not have thrown CdmSourceException");
108 Assert
.assertTrue(check
);
114 public void whenRequestingMetadatFromRemoteSourceThenMetaDataIsRetrieved() {
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
);
123 } catch (CdmSourceException e
) {
124 // TODO Auto-generated catch block
130 public void whenLoadingNonExistingRemoteSourceThenThrowException() {
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());
140 public void whenLoadingExistingIncompleteRemoteSourceThenThrowException() {
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"));
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
));
155 ICdmRemoteSource remoteSource
=
156 CdmRemoteSource
.NewInstance(strRemoteSource
,
160 NomenclaturalCode
.ICNAFP
);
161 remotePersistentSource
= CdmPersistentRemoteSource
.save(strRemoteSource
,remoteSource
);
163 logger
.info("Server : " + remotePersistentSource
.getServer());
164 Assert
.assertTrue("Server value should be equal",
165 remoteSource
.getServer().equals(remotePersistentSource
.getServer()));
167 logger
.info("Port : " + remotePersistentSource
.getPort());
168 Assert
.assertTrue("Port value should be equal",
169 remoteSource
.getPort() == remotePersistentSource
.getPort());
171 logger
.info("Context Path : " + remotePersistentSource
.getContextPath());
172 Assert
.assertTrue("Context Path value should be equal",
173 remoteSource
.getContextPath().equals(remotePersistentSource
.getContextPath()));
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()));
179 Assert
.assertTrue("New remote source '" + strRemoteSource
+ "' should be saved in source settings file",
180 CdmPersistentRemoteSource
.exists(strRemoteSource
));
182 remoteSource
= CdmRemoteSource
.NewInstance(strRemoteSource
,
186 NomenclaturalCode
.ICNB
);
187 remotePersistentSource
= CdmPersistentRemoteSource
.update(strRemoteSource
,remoteSource
);
189 logger
.info("Server : " + remotePersistentSource
.getServer());
190 Assert
.assertTrue("Server value should be equal",
191 remoteSource
.getServer().equals(remotePersistentSource
.getServer()));
193 logger
.info("Port : " + remotePersistentSource
.getPort());
194 Assert
.assertTrue("Port value should be equal",
195 remoteSource
.getPort() == remotePersistentSource
.getPort());
197 logger
.info("Context Path : " + remotePersistentSource
.getContextPath());
198 Assert
.assertTrue("Context Path value should be equal",
199 remoteSource
.getContextPath().equals(remotePersistentSource
.getContextPath()));
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()));
205 Assert
.assertTrue("New remote source '" + strRemoteSource
+ "' should be saved in source settings file",
206 CdmPersistentRemoteSource
.exists(strRemoteSource
));
208 CdmPersistentSourceUtils
.delete(remotePersistentSource
);
210 Assert
.assertFalse("New remote source '" + strRemoteSource
+ "' should no longer exist in source settings file",
211 CdmPersistentRemoteSource
.exists(strRemoteSource
));
213 } catch (CdmRemoteSourceException e
) {
214 Assert
.fail("Saving a new complete remote source should not throw an exception");
215 logger
.info(e
.getMessage());