40032ef767bf9f0dd782fb147b0cc4aa753293a5
[taxeditor.git] / eu.etaxonomy.taxeditor.cdmlib / src / test / java / eu / etaxonomy / taxeditor / remoting / CdmPersistentRemoteSourceTest.java
1 /**
2 * Copyright (C) 2014 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
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.
8 */
9 package eu.etaxonomy.taxeditor.remoting;
10
11
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;
18
19 import static org.hamcrest.CoreMatchers.*;
20
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;
28
29 /**
30 * Class to test the cdm persistent source functionality, including
31 * initialising / saving / updating and deleting
32 *
33 * Corresponding test sources settings can be found at
34 * /src/text/resources/eu.etaxonomy.cdm/cdm.datasources.xml
35 *
36 */
37 public class CdmPersistentRemoteSourceTest extends UnitilsJUnit4 {
38 private static final Logger logger = Logger.getLogger(CdmPersistentRemoteSourceTest.class);
39
40 private CdmPersistentRemoteSource remotePersistentSource;
41
42 @BeforeClass
43 public static void initialize() {
44 Logger.getRootLogger().setLevel(Level.INFO);
45
46 }
47
48 @Test
49 public void whenLoadingExistingCompleteRemoteSourceThenLoadIsSuccessful() {
50
51 try {
52 remotePersistentSource = CdmPersistentRemoteSource.NewInstance("default");
53
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()));
60
61 logger.info("Default remote source port : " + remotePersistentSource.getPort());
62 Assert.assertTrue("Default port should be " + 8080,
63 expectedPort.equals(String.valueOf(remotePersistentSource.getPort())));
64
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()));
68
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()));
72
73 } catch (CdmRemoteSourceException e) {
74 Assert.fail("Initialising an existing remote source should not throw an exception");
75 }
76
77
78 }
79
80 @Test
81 public void whenLoadingNonExistingRemoteSourceThenThrowException() {
82 try {
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());
87 }
88 }
89
90 @Test
91 public void whenLoadingExistingIncompleteRemoteSourceThenThrowException() {
92 try {
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"));
97 }
98 }
99
100 @Test
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));
105 try {
106 ICdmRemoteSource remoteSource =
107 CdmRemoteSource.NewInstance(strRemoteSource,
108 "127.0.0.1",
109 8080,
110 "col",
111 NomenclaturalCode.ICNAFP);
112 remotePersistentSource = CdmPersistentRemoteSource.save(strRemoteSource,remoteSource);
113
114 logger.info("Server : " + remotePersistentSource.getServer());
115 Assert.assertTrue("Server value should be equal",
116 remoteSource.getServer().equals(remotePersistentSource.getServer()));
117
118 logger.info("Port : " + remotePersistentSource.getPort());
119 Assert.assertTrue("Port value should be equal",
120 remoteSource.getPort() == remotePersistentSource.getPort());
121
122 logger.info("Context Path : " + remotePersistentSource.getContextPath());
123 Assert.assertTrue("Context Path value should be equal",
124 remoteSource.getContextPath().equals(remotePersistentSource.getContextPath()));
125
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()));
129
130 Assert.assertTrue("New remote source '" + strRemoteSource + "' should be saved in source settings file",
131 CdmPersistentRemoteSource.exists(strRemoteSource));
132
133 remoteSource = CdmRemoteSource.NewInstance(strRemoteSource,
134 "127.0.0.55",
135 9090,
136 "cyprus",
137 NomenclaturalCode.ICNB);
138 remotePersistentSource = CdmPersistentRemoteSource.update(strRemoteSource,remoteSource);
139
140 logger.info("Server : " + remotePersistentSource.getServer());
141 Assert.assertTrue("Server value should be equal",
142 remoteSource.getServer().equals(remotePersistentSource.getServer()));
143
144 logger.info("Port : " + remotePersistentSource.getPort());
145 Assert.assertTrue("Port value should be equal",
146 remoteSource.getPort() == remotePersistentSource.getPort());
147
148 logger.info("Context Path : " + remotePersistentSource.getContextPath());
149 Assert.assertTrue("Context Path value should be equal",
150 remoteSource.getContextPath().equals(remotePersistentSource.getContextPath()));
151
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()));
155
156 Assert.assertTrue("New remote source '" + strRemoteSource + "' should be saved in source settings file",
157 CdmPersistentRemoteSource.exists(strRemoteSource));
158
159 CdmPersistentSourceUtils.delete(remotePersistentSource);
160
161 Assert.assertFalse("New remote source '" + strRemoteSource + "' should no longer exist in source settings file",
162 CdmPersistentRemoteSource.exists(strRemoteSource));
163
164 } catch (CdmRemoteSourceException e) {
165 Assert.fail("Saving a new complete remote source should not throw an exception");
166 logger.info(e.getMessage());
167 }
168 }
169
170 }