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
.Logger
;
15 import org
.junit
.Assert
;
16 import org
.junit
.BeforeClass
;
17 import org
.junit
.Test
;
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
;
29 * Class to test the cdm persistent source functionality, including
30 * initialising / saving / updating and deleting
32 * Corresponding test sources settings can be found at
33 * /src/text/resources/eu.etaxonomy.cdm/cdm.datasources.xml
36 public class CdmPersistentRemoteSourceTest
extends BaseRemotingTest
{
37 private static final Logger logger
= Logger
.getLogger(CdmPersistentRemoteSourceTest
.class);
39 private CdmPersistentRemoteSource remotePersistentSource
;
42 public static void initialize() {
46 public void whenLoadingExistingCompleteRemoteSourceThenLoadIsSuccessful() {
48 remotePersistentSource
= getCdmPersistentRemoteSource();
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()));
57 logger
.info("Default remote source port : " + remotePersistentSource
.getPort());
58 Assert
.assertTrue("Default port should be 9090",
59 expectedPort
.equals(String
.valueOf(remotePersistentSource
.getPort())));
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()));
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()));
74 public void whenConnectingToAnActiveServerThenConnectSuccessfully() {
75 // check if active server throws the right exception
77 remotePersistentSource
= getCdmPersistentRemoteSource();
79 String dbSchemaVersion
= "";
81 dbSchemaVersion
= remotePersistentSource
.getDbSchemaVersion();
82 } catch (CdmSourceException e
) {
83 Assert
.fail("getDbSchemaVersion() on active cdm server should not have thrown CdmSourceException");
85 logger
.info("dbSchemaVersion is " + dbSchemaVersion
);
88 boolean isDbEmpty
= false;
90 isDbEmpty
= remotePersistentSource
.isDbEmpty();
91 } catch (CdmSourceException e
) {
92 Assert
.fail("isDbEmpty() on active cdm server should not have thrown CdmSourceException");
94 Assert
.assertFalse(isDbEmpty
);
97 boolean check
= false;
99 check
= remotePersistentSource
.checkConnection();
100 } catch (CdmSourceException e
) {
101 Assert
.fail("checkConnection() on active cdm server should not have thrown CdmSourceException");
103 Assert
.assertTrue(check
);
109 public void whenRequestingMetadatFromRemoteSourceThenMetaDataIsRetrieved() {
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
);
118 } catch (CdmSourceException e
) {
119 // TODO Auto-generated catch block
125 public void whenLoadingNonExistingRemoteSourceThenThrowException() {
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());
135 public void whenLoadingExistingIncompleteRemoteSourceThenThrowException() {
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"));
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
));
150 ICdmRemoteSource remoteSource
=
151 CdmRemoteSource
.NewInstance(strRemoteSource
,
155 NomenclaturalCode
.ICNAFP
);
156 remotePersistentSource
= CdmPersistentRemoteSource
.save(strRemoteSource
,remoteSource
);
158 logger
.info("Server : " + remotePersistentSource
.getServer());
159 Assert
.assertTrue("Server value should be equal",
160 remoteSource
.getServer().equals(remotePersistentSource
.getServer()));
162 logger
.info("Port : " + remotePersistentSource
.getPort());
163 Assert
.assertTrue("Port value should be equal",
164 remoteSource
.getPort() == remotePersistentSource
.getPort());
166 logger
.info("Context Path : " + remotePersistentSource
.getContextPath());
167 Assert
.assertTrue("Context Path value should be equal",
168 remoteSource
.getContextPath().equals(remotePersistentSource
.getContextPath()));
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()));
174 Assert
.assertTrue("New remote source '" + strRemoteSource
+ "' should be saved in source settings file",
175 CdmPersistentRemoteSource
.exists(strRemoteSource
));
177 remoteSource
= CdmRemoteSource
.NewInstance(strRemoteSource
,
181 NomenclaturalCode
.ICNB
);
182 remotePersistentSource
= CdmPersistentRemoteSource
.update(strRemoteSource
,remoteSource
);
184 logger
.info("Server : " + remotePersistentSource
.getServer());
185 Assert
.assertTrue("Server value should be equal",
186 remoteSource
.getServer().equals(remotePersistentSource
.getServer()));
188 logger
.info("Port : " + remotePersistentSource
.getPort());
189 Assert
.assertTrue("Port value should be equal",
190 remoteSource
.getPort() == remotePersistentSource
.getPort());
192 logger
.info("Context Path : " + remotePersistentSource
.getContextPath());
193 Assert
.assertTrue("Context Path value should be equal",
194 remoteSource
.getContextPath().equals(remotePersistentSource
.getContextPath()));
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()));
200 Assert
.assertTrue("New remote source '" + strRemoteSource
+ "' should be saved in source settings file",
201 CdmPersistentRemoteSource
.exists(strRemoteSource
));
203 CdmPersistentSourceUtils
.delete(remotePersistentSource
);
205 Assert
.assertFalse("New remote source '" + strRemoteSource
+ "' should no longer exist in source settings file",
206 CdmPersistentRemoteSource
.exists(strRemoteSource
));
208 } catch (CdmRemoteSourceException e
) {
209 Assert
.fail("Saving a new complete remote source should not throw an exception");
210 logger
.info(e
.getMessage());