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
;
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
;
20 import eu
.etaxonomy
.cdm
.config
.CdmPersistentSourceUtils
;
21 import eu
.etaxonomy
.cdm
.config
.CdmSourceException
;
22 import eu
.etaxonomy
.cdm
.model
.metadata
.CdmMetaData
.MetaDataPropertyName
;
23 import eu
.etaxonomy
.cdm
.model
.name
.NomenclaturalCode
;
24 import eu
.etaxonomy
.taxeditor
.remoting
.source
.CdmPersistentRemoteSource
;
25 import eu
.etaxonomy
.taxeditor
.remoting
.source
.CdmRemoteSource
;
26 import eu
.etaxonomy
.taxeditor
.remoting
.source
.CdmRemoteSourceException
;
27 import eu
.etaxonomy
.taxeditor
.remoting
.source
.ICdmRemoteSource
;
30 * Class to test the cdm persistent source functionality, including
31 * initialising / saving / updating and deleting
33 * Corresponding test sources settings can be found at
34 * /src/text/resources/eu.etaxonomy.cdm/cdm.datasources.xml
37 public class CdmPersistentRemoteSourceTest
extends BaseRemotingTest
{
38 private static final Logger logger
= Logger
.getLogger(CdmPersistentRemoteSourceTest
.class);
40 private CdmPersistentRemoteSource remotePersistentSource
;
43 public static void initialize() {
44 Logger
.getRootLogger().setLevel(Level
.INFO
);
48 public void whenLoadingExistingCompleteRemoteSourceThenLoadIsSuccessful() {
50 remotePersistentSource
= getCdmPersistentRemoteSource();
52 String expectedServer
= "127.0.0.1";
53 String expectedPort
= "9090";
54 String expectedContextPath
= "";
55 logger
.info("Default remote source server : " + remotePersistentSource
.getServer());
56 Assert
.assertTrue("Default server should be " + expectedServer
,
57 expectedServer
.equals(remotePersistentSource
.getServer()));
59 logger
.info("Default remote source port : " + remotePersistentSource
.getPort());
60 Assert
.assertTrue("Default port should be 9090",
61 expectedPort
.equals(String
.valueOf(remotePersistentSource
.getPort())));
63 logger
.info("Default remote source context path : " + remotePersistentSource
.getContextPath());
64 Assert
.assertTrue("Default remote source context path should be " + expectedContextPath
,
65 expectedContextPath
.equals(remotePersistentSource
.getContextPath()));
67 logger
.info("Default remote source nomenclatural code : " + remotePersistentSource
.getNomenclaturalCode().toString());
68 Assert
.assertTrue("Default NomenclaturalCode should be ICNAFP",
69 NomenclaturalCode
.ICNAFP
.equals(remotePersistentSource
.getNomenclaturalCode()));
76 public void whenConnectingToAnActiveServerThenConnectSuccessfully() {
77 // check if active server throws the right exception
79 remotePersistentSource
= getCdmPersistentRemoteSource();
81 String dbSchemaVersion
= "";
83 dbSchemaVersion
= remotePersistentSource
.getDbSchemaVersion();
84 } catch (CdmSourceException e
) {
85 Assert
.fail("getDbSchemaVersion() on active cdm server should not have thrown CdmSourceException");
87 logger
.info("dbSchemaVersion is " + dbSchemaVersion
);
90 boolean isDbEmpty
= false;
92 isDbEmpty
= remotePersistentSource
.isDbEmpty();
93 } catch (CdmSourceException e
) {
94 Assert
.fail("isDbEmpty() on active cdm server should not have thrown CdmSourceException");
96 Assert
.assertFalse(isDbEmpty
);
99 boolean check
= false;
101 check
= remotePersistentSource
.checkConnection();
102 } catch (CdmSourceException e
) {
103 Assert
.fail("checkConnection() on active cdm server should not have thrown CdmSourceException");
105 Assert
.assertTrue(check
);
111 public void whenRequestingMetadatFromRemoteSourceThenMetaDataIsRetrieved() {
113 remotePersistentSource
= getCdmPersistentRemoteSource();
114 Map
<MetaDataPropertyName
, String
> cdmMetaDataMap
= remotePersistentSource
.getMetaDataMap();
115 for(MetaDataPropertyName mdpn
: cdmMetaDataMap
.keySet()) {
116 String value
= cdmMetaDataMap
.get(mdpn
);
117 logger
.info("MetaData Property " + mdpn
.name() + " has value " + value
);
118 Assert
.assertNotNull("Meta Data Value for property for " + mdpn
.name() + " should not be null", value
);
120 } catch (CdmSourceException e
) {
121 // TODO Auto-generated catch block
127 public void whenLoadingNonExistingRemoteSourceThenThrowException() {
129 remotePersistentSource
= CdmPersistentRemoteSource
.NewInstance("nonExistingSource");
130 Assert
.fail("Initialising a non-existing remote source should throw an exception");
131 } catch (CdmRemoteSourceException e
) {
132 logger
.info(e
.getMessage());
137 public void whenLoadingExistingIncompleteRemoteSourceThenThrowException() {
139 remotePersistentSource
= CdmPersistentRemoteSource
.NewInstance("incomplete");
140 Assert
.fail("Initialising an incomplete remote source should throw an exception");
141 } catch (CdmRemoteSourceException e
) {
142 //Assert.assertThat(e.getMessage(), containsString("Required property '" + CdmSourceProperties.SERVER.toString() + "' is missing"));
147 public void whenSavingUpdatingDeletingNewCompleteRemoteSourceThenSaveUpdateDeleteIsSuccessful() {
148 String strRemoteSource
= "local";
149 Assert
.assertFalse("New remote source '" + strRemoteSource
+ "' should not yet exist in source settings file",
150 CdmPersistentRemoteSource
.exists(strRemoteSource
));
152 ICdmRemoteSource remoteSource
=
153 CdmRemoteSource
.NewInstance(strRemoteSource
,
157 NomenclaturalCode
.ICNAFP
);
158 remotePersistentSource
= CdmPersistentRemoteSource
.save(strRemoteSource
,remoteSource
);
160 logger
.info("Server : " + remotePersistentSource
.getServer());
161 Assert
.assertTrue("Server value should be equal",
162 remoteSource
.getServer().equals(remotePersistentSource
.getServer()));
164 logger
.info("Port : " + remotePersistentSource
.getPort());
165 Assert
.assertTrue("Port value should be equal",
166 remoteSource
.getPort() == remotePersistentSource
.getPort());
168 logger
.info("Context Path : " + remotePersistentSource
.getContextPath());
169 Assert
.assertTrue("Context Path value should be equal",
170 remoteSource
.getContextPath().equals(remotePersistentSource
.getContextPath()));
172 logger
.info("Nomenclatural Code : " + remotePersistentSource
.getNomenclaturalCode().name());
173 Assert
.assertTrue("Nomenclatural Code value should be equal",
174 remoteSource
.getNomenclaturalCode().name().equals(remotePersistentSource
.getNomenclaturalCode().name()));
176 Assert
.assertTrue("New remote source '" + strRemoteSource
+ "' should be saved in source settings file",
177 CdmPersistentRemoteSource
.exists(strRemoteSource
));
179 remoteSource
= CdmRemoteSource
.NewInstance(strRemoteSource
,
183 NomenclaturalCode
.ICNB
);
184 remotePersistentSource
= CdmPersistentRemoteSource
.update(strRemoteSource
,remoteSource
);
186 logger
.info("Server : " + remotePersistentSource
.getServer());
187 Assert
.assertTrue("Server value should be equal",
188 remoteSource
.getServer().equals(remotePersistentSource
.getServer()));
190 logger
.info("Port : " + remotePersistentSource
.getPort());
191 Assert
.assertTrue("Port value should be equal",
192 remoteSource
.getPort() == remotePersistentSource
.getPort());
194 logger
.info("Context Path : " + remotePersistentSource
.getContextPath());
195 Assert
.assertTrue("Context Path value should be equal",
196 remoteSource
.getContextPath().equals(remotePersistentSource
.getContextPath()));
198 logger
.info("Nomenclatural Code : " + remotePersistentSource
.getNomenclaturalCode().name());
199 Assert
.assertTrue("Nomenclatural Code value should be equal",
200 remoteSource
.getNomenclaturalCode().name().equals(remotePersistentSource
.getNomenclaturalCode().name()));
202 Assert
.assertTrue("New remote source '" + strRemoteSource
+ "' should be saved in source settings file",
203 CdmPersistentRemoteSource
.exists(strRemoteSource
));
205 CdmPersistentSourceUtils
.delete(remotePersistentSource
);
207 Assert
.assertFalse("New remote source '" + strRemoteSource
+ "' should no longer exist in source settings file",
208 CdmPersistentRemoteSource
.exists(strRemoteSource
));
210 } catch (CdmRemoteSourceException e
) {
211 Assert
.fail("Saving a new complete remote source should not throw an exception");
212 logger
.info(e
.getMessage());