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
;
12 import org
.apache
.log4j
.Level
;
13 import org
.apache
.log4j
.Logger
;
14 import org
.junit
.Assert
;
15 import org
.junit
.BeforeClass
;
16 import org
.junit
.Test
;
17 import org
.unitils
.UnitilsJUnit4
;
19 import static org
.hamcrest
.CoreMatchers
.*;
21 import eu
.etaxonomy
.cdm
.config
.CdmPersistentSourceUtils
;
22 import eu
.etaxonomy
.cdm
.config
.CdmPersistentXMLSource
.CdmSourceProperties
;
23 import eu
.etaxonomy
.cdm
.model
.name
.NomenclaturalCode
;
24 import eu
.etaxonomy
.cdm
.remote
.CdmPersistentRemoteSource
;
25 import eu
.etaxonomy
.cdm
.remote
.CdmRemoteSource
;
26 import eu
.etaxonomy
.cdm
.remote
.CdmRemoteSourceException
;
27 import eu
.etaxonomy
.cdm
.remote
.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 UnitilsJUnit4
{
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
);
49 public void whenLoadingExistingCompleteRemoteSourceThenLoadIsSuccessful() {
52 remotePersistentSource
= CdmPersistentRemoteSource
.NewInstance("default");
54 String expectedServer
= "127.0.0.1";
55 String expectedPort
= "8080";
56 String expectedContextPath
= "";
57 logger
.info("Default remote source server : " + remotePersistentSource
.getServer());
58 Assert
.assertTrue("Default server should be " + expectedServer
,
59 expectedServer
.equals(remotePersistentSource
.getServer()));
61 logger
.info("Default remote source port : " + remotePersistentSource
.getPort());
62 Assert
.assertTrue("Default port should be " + 8080,
63 expectedPort
.equals(String
.valueOf(remotePersistentSource
.getPort())));
65 logger
.info("Default remote source context path : " + remotePersistentSource
.getContextPath());
66 Assert
.assertTrue("Default remote source context path should be " + expectedContextPath
,
67 expectedContextPath
.equals(remotePersistentSource
.getContextPath()));
69 logger
.info("Default remote source nomenclatural code : " + remotePersistentSource
.getNomenclaturalCode().toString());
70 Assert
.assertTrue("Default NomenclaturalCode should be ICNAFP",
71 NomenclaturalCode
.ICNAFP
.equals(remotePersistentSource
.getNomenclaturalCode()));
73 } catch (CdmRemoteSourceException e
) {
74 Assert
.fail("Initialising an existing remote source should not throw an exception");
81 public void whenLoadingNonExistingRemoteSourceThenThrowException() {
83 remotePersistentSource
= CdmPersistentRemoteSource
.NewInstance("nonExistingSource");
84 Assert
.fail("Initialising a non-existing remote source should throw an exception");
85 } catch (CdmRemoteSourceException e
) {
86 logger
.info(e
.getMessage());
91 public void whenLoadingExistingIncompleteRemoteSourceThenThrowException() {
93 remotePersistentSource
= CdmPersistentRemoteSource
.NewInstance("incomplete");
94 Assert
.fail("Initialising an incomplete remote source should throw an exception");
95 } catch (CdmRemoteSourceException e
) {
96 Assert
.assertThat(e
.getMessage(), containsString("Required property '" + CdmSourceProperties
.SERVER
.toString() + "' is missing"));
101 public void whenSavingUpdatingDeletingNewCompleteRemoteSourceThenSaveUpdateDeleteIsSuccessful() {
102 String strRemoteSource
= "local";
103 Assert
.assertFalse("New remote source '" + strRemoteSource
+ "' should not yet exist in source settings file",
104 CdmPersistentRemoteSource
.exists(strRemoteSource
));
106 ICdmRemoteSource remoteSource
=
107 CdmRemoteSource
.NewInstance(strRemoteSource
,
111 NomenclaturalCode
.ICNAFP
);
112 remotePersistentSource
= CdmPersistentRemoteSource
.save(strRemoteSource
,remoteSource
);
114 logger
.info("Server : " + remotePersistentSource
.getServer());
115 Assert
.assertTrue("Server value should be equal",
116 remoteSource
.getServer().equals(remotePersistentSource
.getServer()));
118 logger
.info("Port : " + remotePersistentSource
.getPort());
119 Assert
.assertTrue("Port value should be equal",
120 remoteSource
.getPort() == remotePersistentSource
.getPort());
122 logger
.info("Context Path : " + remotePersistentSource
.getContextPath());
123 Assert
.assertTrue("Context Path value should be equal",
124 remoteSource
.getContextPath().equals(remotePersistentSource
.getContextPath()));
126 logger
.info("Nomenclatural Code : " + remotePersistentSource
.getNomenclaturalCode().name());
127 Assert
.assertTrue("Nomenclatural Code value should be equal",
128 remoteSource
.getNomenclaturalCode().name().equals(remotePersistentSource
.getNomenclaturalCode().name()));
130 Assert
.assertTrue("New remote source '" + strRemoteSource
+ "' should be saved in source settings file",
131 CdmPersistentRemoteSource
.exists(strRemoteSource
));
133 remoteSource
= CdmRemoteSource
.NewInstance(strRemoteSource
,
137 NomenclaturalCode
.ICNB
);
138 remotePersistentSource
= CdmPersistentRemoteSource
.update(strRemoteSource
,remoteSource
);
140 logger
.info("Server : " + remotePersistentSource
.getServer());
141 Assert
.assertTrue("Server value should be equal",
142 remoteSource
.getServer().equals(remotePersistentSource
.getServer()));
144 logger
.info("Port : " + remotePersistentSource
.getPort());
145 Assert
.assertTrue("Port value should be equal",
146 remoteSource
.getPort() == remotePersistentSource
.getPort());
148 logger
.info("Context Path : " + remotePersistentSource
.getContextPath());
149 Assert
.assertTrue("Context Path value should be equal",
150 remoteSource
.getContextPath().equals(remotePersistentSource
.getContextPath()));
152 logger
.info("Nomenclatural Code : " + remotePersistentSource
.getNomenclaturalCode().name());
153 Assert
.assertTrue("Nomenclatural Code value should be equal",
154 remoteSource
.getNomenclaturalCode().name().equals(remotePersistentSource
.getNomenclaturalCode().name()));
156 Assert
.assertTrue("New remote source '" + strRemoteSource
+ "' should be saved in source settings file",
157 CdmPersistentRemoteSource
.exists(strRemoteSource
));
159 CdmPersistentSourceUtils
.delete(remotePersistentSource
);
161 Assert
.assertFalse("New remote source '" + strRemoteSource
+ "' should no longer exist in source settings file",
162 CdmPersistentRemoteSource
.exists(strRemoteSource
));
164 } catch (CdmRemoteSourceException e
) {
165 Assert
.fail("Saving a new complete remote source should not throw an exception");
166 logger
.info(e
.getMessage());