Project

General

Profile

Download (9.5 KB) Statistics
| Branch: | Tag: | Revision:
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.httpinvoker;
10

    
11

    
12
import static org.hamcrest.CoreMatchers.containsString;
13

    
14
import java.util.Map;
15

    
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;
21

    
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;
31

    
32
/**
33
 * Class to test the cdm persistent source functionality, including
34
 * initialising / saving / updating and deleting
35
 *
36
 * Corresponding test sources settings can be found at
37
 * /src/text/resources/eu.etaxonomy.cdm/cdm.datasources.xml
38
 *
39
 */
40
public class CdmPersistentRemoteSourceTest extends BaseRemotingTest {
41
    private static final Logger logger = Logger.getLogger(CdmPersistentRemoteSourceTest.class);
42

    
43
    private CdmPersistentRemoteSource remotePersistentSource;
44

    
45
    @BeforeClass
46
    public static void initialize() {
47
        Logger.getRootLogger().setLevel(Level.INFO);
48
    }
49

    
50
    @Test
51
    public void whenLoadingExistingCompleteRemoteSourceThenLoadIsSuccessful() {
52

    
53
        remotePersistentSource = getCdmPersistentRemoteSource();
54

    
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()));
61

    
62
        logger.info("Default remote source port : " + remotePersistentSource.getPort());
63
        Assert.assertTrue("Default port should be 9090",
64
                expectedPort.equals(String.valueOf(remotePersistentSource.getPort())));
65

    
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()));
69

    
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()));
73
    }
74

    
75

    
76

    
77

    
78
    @Test
79
    public void whenConnectingToAnActiveServerThenConnectSuccessfully() {
80
        // check if active server throws the right exception
81

    
82
        remotePersistentSource = getCdmPersistentRemoteSource();
83

    
84
        String dbSchemaVersion = "";
85
        try {
86
            dbSchemaVersion = remotePersistentSource.getDbSchemaVersion();
87
        } catch (CdmSourceException e) {
88
            Assert.fail("getDbSchemaVersion() on active cdm server should not have thrown CdmSourceException");
89
        }
90
        logger.info("dbSchemaVersion is " + dbSchemaVersion);
91

    
92

    
93
        boolean isDbEmpty = false;
94
        try {
95
            isDbEmpty = remotePersistentSource.isDbEmpty();
96
        } catch (CdmSourceException e) {
97
            Assert.fail("isDbEmpty() on active cdm server should not have thrown CdmSourceException");
98
        }
99
        Assert.assertFalse(isDbEmpty);
100

    
101

    
102
        boolean check = false;
103
        try {
104
            check = remotePersistentSource.checkConnection();
105
        } catch (CdmSourceException e) {
106
            Assert.fail("checkConnection() on active cdm server should not have thrown CdmSourceException");
107
        }
108
        Assert.assertTrue(check);
109

    
110

    
111
    }
112

    
113
    @Test
114
    public void whenRequestingMetadatFromRemoteSourceThenMetaDataIsRetrieved() {
115
        try {
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);
122
            }
123
        } catch (CdmSourceException e) {
124
            // TODO Auto-generated catch block
125
            e.printStackTrace();
126
        }
127
    }
128

    
129
    @Test
130
    public void whenLoadingNonExistingRemoteSourceThenThrowException() {
131
        try {
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());
136
        }
137
    }
138

    
139
    @Test
140
    public void whenLoadingExistingIncompleteRemoteSourceThenThrowException() {
141
        try {
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"));
146
        }
147
    }
148

    
149
    @Test
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));
154
        try {
155
            ICdmRemoteSource remoteSource =
156
                    CdmRemoteSource.NewInstance(strRemoteSource,
157
                            "127.0.0.1",
158
                            8080,
159
                            "col",
160
                            NomenclaturalCode.ICNAFP);
161
            remotePersistentSource = CdmPersistentRemoteSource.save(strRemoteSource,remoteSource);
162

    
163
            logger.info("Server : " + remotePersistentSource.getServer());
164
            Assert.assertTrue("Server value should be equal",
165
                    remoteSource.getServer().equals(remotePersistentSource.getServer()));
166

    
167
            logger.info("Port : " + remotePersistentSource.getPort());
168
            Assert.assertTrue("Port value should be equal",
169
                    remoteSource.getPort() == remotePersistentSource.getPort());
170

    
171
            logger.info("Context Path : " + remotePersistentSource.getContextPath());
172
            Assert.assertTrue("Context Path value should be equal",
173
                    remoteSource.getContextPath().equals(remotePersistentSource.getContextPath()));
174

    
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()));
178

    
179
            Assert.assertTrue("New remote source '" + strRemoteSource + "' should be saved in source settings file",
180
                    CdmPersistentRemoteSource.exists(strRemoteSource));
181

    
182
            remoteSource = CdmRemoteSource.NewInstance(strRemoteSource,
183
                    "127.0.0.55",
184
                    9090,
185
                    "cyprus",
186
                    NomenclaturalCode.ICNB);
187
            remotePersistentSource = CdmPersistentRemoteSource.update(strRemoteSource,remoteSource);
188

    
189
            logger.info("Server : " + remotePersistentSource.getServer());
190
            Assert.assertTrue("Server value should be equal",
191
                    remoteSource.getServer().equals(remotePersistentSource.getServer()));
192

    
193
            logger.info("Port : " + remotePersistentSource.getPort());
194
            Assert.assertTrue("Port value should be equal",
195
                    remoteSource.getPort() == remotePersistentSource.getPort());
196

    
197
            logger.info("Context Path : " + remotePersistentSource.getContextPath());
198
            Assert.assertTrue("Context Path value should be equal",
199
                    remoteSource.getContextPath().equals(remotePersistentSource.getContextPath()));
200

    
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()));
204

    
205
            Assert.assertTrue("New remote source '" + strRemoteSource + "' should be saved in source settings file",
206
                    CdmPersistentRemoteSource.exists(strRemoteSource));
207

    
208
            CdmPersistentSourceUtils.delete(remotePersistentSource);
209

    
210
            Assert.assertFalse("New remote source '" + strRemoteSource + "' should no longer exist in source settings file",
211
                    CdmPersistentRemoteSource.exists(strRemoteSource));
212

    
213
        } catch (CdmRemoteSourceException e) {
214
            Assert.fail("Saving a new complete remote source should not throw an exception");
215
            logger.info(e.getMessage());
216
        }
217
    }
218

    
219

    
220

    
221
}
(3-3/6)