Clover Coverage Report - ARESTC 0.1.7-SNAPSHOT
Coverage timestamp: Fri Aug 27 2010 19:12:04 CEST
179   478   33   9.94
0   306   0.18   18
18     1.83  
1    
 
  OverallDesignTest       Line # 51 179 0% 33 44 77.7% 0.7766498
 
  (10)
 
1    /*
2    *
3    * (C)opyright 2010, Nikolaos Georgosopoulos
4    *
5    * This file is part of ARESTC.
6    *
7    * ARESTC is free software: you can redistribute it and/or modify it under the
8    * terms of the Lesser General Public License as published by the Free Software
9    * Foundation, either version 3 of the License, or (at your option) any later
10    * version.
11    *
12    * ARESTC is distributed in the hope that it will be useful, but WITHOUT ANY
13    * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14    * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
15    *
16    * You should have received a copy of the Lesser General Public License along
17    * with ARESTC. If not, see <http://www.gnu.org/licenses/>.
18    */
19    package net.sf.arestc.core;
20   
21    import static org.easymock.EasyMock.expect;
22    import static org.easymock.EasyMock.isA;
23    import static org.easymock.classextension.EasyMock.createNiceMock;
24    import static org.easymock.classextension.EasyMock.replay;
25   
26    import java.io.File;
27    import java.io.FileNotFoundException;
28    import java.io.FileOutputStream;
29    import java.io.IOException;
30    import java.io.OutputStream;
31    import java.net.URISyntaxException;
32    import java.util.HashMap;
33    import java.util.Map;
34   
35    import junit.framework.TestCase;
36    import net.sf.arestc.core.bodytransformations.ReturnTransformationTypes;
37    import net.sf.arestc.testserver.ServerFactory;
38   
39    import org.apache.commons.configuration.ConfigurationException;
40    import org.apache.commons.httpclient.HttpClient;
41    import org.apache.commons.httpclient.HttpMethod;
42    import org.apache.commons.httpclient.HttpState;
43    import org.apache.commons.httpclient.methods.InputStreamRequestEntity;
44    import org.apache.commons.io.IOUtils;
45    import org.apache.log4j.Logger;
46    import org.w3c.dom.Document;
47   
48    /**
49    * The Class OverallDesignTest.
50    */
 
51    public class OverallDesignTest extends TestCase {
52   
53    /** The Constant LOGGER. */
54    private static final Logger LOGGER = Logger.getLogger(OverallDesignTest.class
55    .getName());
56   
57    /** The connector. */
58    private ARESTConnector connector;
59   
 
60  10 toggle public OverallDesignTest() {
61  10 try {
62  10 connector = new ARESTConnector(ConnectorTypes.STANDARD);
63   
64  10 ServerFactory.factory.startServer();
65    } catch (final ConfigurationException e) {
66  0 LOGGER.error(e);
67    } catch (final Exception e) {
68  0 LOGGER.error(e);
69    }
70    }
71   
72    /*
73    * (non-Javadoc)
74    *
75    * @see java.lang.Object#finalize()
76    */
 
77  0 toggle @Override
78    protected void finalize() throws Throwable {
79    // This is needed here because the server should only be put down when
80    // all tests are over. Starting and stopping the server every time a
81    // test is run is pointless
82  0 ServerFactory.factory.stopServer();
83  0 connector.shutdown();
84  0 super.finalize();
85    }
86   
87    /*
88    * (non-Javadoc)
89    *
90    * @see junit.framework.TestCase#setUp()
91    */
 
92  10 toggle @Override
93    protected void setUp() throws Exception {
94  10 super.setUp();
95   
96    // TODO this should take the session in order to allow persistence of
97    // the connector throughout the user session and avoid creating too many
98    // of these objects
99   
100    }
101   
102    /**
103    * Sets the up1. Not being used since creation of the LocalTestServer
104    *
105    * @throws Exception
106    * the exception
107    * @deprecated
108    */
 
109  0 toggle @Deprecated
110    protected void setUp1() throws Exception {
111  0 super.setUp();
112   
113    // TODO this should take the session in order to allow persistence of
114    // the connector throughout the user session and avoid creating too many
115    // of these objects
116  0 connector = new ARESTConnector(ConnectorTypes.STANDARD);
117   
118  0 final HttpClient mockClient = createNiceMock(HttpClient.class);
119  0 final HttpState mockState = createNiceMock(HttpState.class);
120  0 expect(mockClient.executeMethod(isA(HttpMethod.class))).andReturn(1)
121    .anyTimes();
122  0 expect(mockClient.getState()).andReturn(mockState).anyTimes();
123  0 replay(mockState);
124  0 replay(mockClient);
125  0 connector.setClient(mockClient);
126    }
127   
128    /*
129    * (non-Javadoc)
130    *
131    * @see junit.framework.TestCase#tearDown()
132    */
 
133  10 toggle @Override
134    protected void tearDown() throws Exception {
135   
136  10 super.tearDown();
137    }
138   
139    /**
140    * Test file download.
141    */
 
142  1 toggle public void testFileDownload() {
143  1 final Map<String, Object> myParams = new HashMap<String, Object>();
144  1 myParams.put("store_type", "workspace");
145  1 myParams.put("store_id", "SpacesStore");
146  1 myParams.put("id", "fe424d83-d697-401c-b29e-ce1a915d7283");//
147   
148    // Simple call to serve a request and get the response
149  1 final ConnectorRequest request = new StandardConnectorRequest(
150    "downloadFile", myParams);
151  1 ConnectorResponse resp = null;
152  1 OutputStream os = null;
153  1 try {
154  1 os = new FileOutputStream("recievedBody.pdf");
155  1 resp = connector.serve(request);
156  1 assertFalse(resp.hasErrors());
157  1 assertNotNull(resp.getResponseBody());
158  1 assertNull(resp.getResponseHeaders());
159  1 IOUtils.copy(resp.getStreamedBody(), os);
160    } catch (final CommandException e) {
161  0 LOGGER.error("Error occured in Download:", e);
162  0 fail(e.getMessage());
163    } catch (final FileNotFoundException e) {
164  0 LOGGER.error("Error occured in Download:", e);
165  0 fail(e.getMessage());
166    } catch (final IOException e) {
167  0 LOGGER.error("Error occured in Download:", e);
168  0 fail(e.getMessage());
169    } finally {
170  1 IOUtils.closeQuietly(resp.getStreamedBody());
171  1 IOUtils.closeQuietly(os);
172  1 resp.releaseConnection();
173    }
174    }
175   
176    /**
177    * Test file upload.
178    */
 
179  1 toggle public void testFileUpload() {
180   
181  1 final InputStreamRequestEntity myCreation = new InputStreamRequestEntity(
182    this.getClass()
183    .getClassLoader()
184    .getResourceAsStream(
185    "stubs/db4o-7.4-tutorial-java-1.pdf"));
186   
187    // prepare the parameters
188  1 final Map<String, Object> myParams = new HashMap<String, Object>();
189  1 myParams.put("store_type", "workspace");
190  1 myParams.put("store_id", "SpacesStore");
191  1 myParams.put("id", "fe424d83-d697-401c-b29e-ce1a915d7283");//
192   
193    // Simple call to serve a request and get the response
194  1 final ConnectorRequest request = new StandardConnectorRequest(
195    "uploadFile", myParams);
196  1 request.setBody(myCreation);
197   
198  1 ConnectorResponse resp = null;
199  1 try {
200  1 resp = connector.serve(request);
201  1 assertFalse(resp.hasErrors());
202  1 assertNotNull(resp.getResponseHeaders());
203    } catch (final CommandException e) {
204  0 LOGGER.error("Error occured in testTicketRetrieval:", e);
205  0 fail(e.getMessage());
206    } finally {
207  1 resp.releaseConnection();
208    }
209   
210    }
211   
212    /**
213    * Test load response from file.
214    */
 
215  1 toggle public void testLoadResponseFromFile() {
216  1 ConnectorResponse resp = null;
217  1 try {
218  1 connector = new ARESTConnector(ConnectorTypes.DUMMY);
219   
220  1 final Map<String, Object> myParams = new HashMap<String, Object>();
221  1 myParams.put("u", "admin");
222  1 myParams.put("pw", "admin");
223  1 final ConnectorRequest request = new StandardConnectorRequest(
224    "stubs/loginresponse.xml", myParams);
225  1 resp = connector.serve(request);
226  1 assertNotNull(resp.getResponseBody());
227    } catch (final ConfigurationException e) {
228  0 LOGGER.error("Error occured in testLoadResponseFromFile:", e);
229  0 fail(e.getMessage());
230   
231    } catch (final CommandException e) {
232  0 LOGGER.error("Error occured in testLoadResponseFromFile:", e);
233  0 fail(e.getMessage());
234    } finally {
235    // No connection so no release
236    }
237    }
238   
239    /**
240    * Test repository create.
241    */
 
242  1 toggle public void testRepositoryCreate() {
243  1 ConnectorResponse resp = null;
244    // unmock the client
245  1 try {
246    // Lets create the request entity
247  1 final InputStreamRequestEntity myCreation = new InputStreamRequestEntity(
248    this.getClass().getClassLoader()
249    .getResourceAsStream("samplecmis.xml"));
250   
251    // prepare the parameters
252  1 final Map<String, Object> myParams = new HashMap<String, Object>();
253  1 myParams.put("store_type", "workspace");
254  1 myParams.put("store_id", "SpacesStore");
255  1 myParams.put("id", "fe424d83-d697-401c-b29e-ce1a915d7283");//
256   
257    // Simple call to serve a request and get the response
258  1 final ConnectorRequest request = new StandardConnectorRequest(
259    "nodeCreate", myParams);
260  1 request.setBody(myCreation);
261   
262  1 resp = connector.serve(request);
263  1 assertFalse(resp.hasErrors());
264  1 assertNotNull(resp.getResponseBody());
265  1 assertNotNull(resp.getResponseHeaders());
266    } catch (final CommandException e) {
267  0 LOGGER.error("Error occured in testRepositoryRetrieval:", e);
268  0 fail(e.getMessage());
269    } finally {
270  1 resp.releaseConnection();
271    }
272    }
273   
274    /**
275    * Test repository delete.
276    */
 
277  1 toggle public void testRepositoryDelete() {
278  1 ConnectorResponse resp = null;
279  1 try {
280   
281    // prepare the parameters
282  1 final Map<String, Object> myParams = new HashMap<String, Object>();
283  1 myParams.put("store_type", "workspace");
284  1 myParams.put("store_id", "SpacesStore");
285  1 myParams.put("id", "85cdb8d8-3e77-4916-9674-0a7da5164bb7");//
286   
287    // Simple call to serve a request and get the response
288  1 final ConnectorRequest request = new StandardConnectorRequest(
289    "nodeDelete", myParams);
290  1 resp = connector.serve(request);
291    // this doesn't prove anything, we need a proof that what we asked
292    // to be transmitted was actually sent
293  1 assertFalse(resp.hasErrors());
294  1 assertNotNull(resp.getResponseHeaders());
295    } catch (final CommandException e) {
296  0 LOGGER.error("Error occured in testRepositoryDelete:", e);
297  0 fail(e.getMessage());
298    } finally {
299  1 resp.releaseConnection();
300    }
301    }
302   
303    /**
304    * Test repository multi post.
305    */
 
306  1 toggle public void testRepositoryMultiPost() {
307  1 ConnectorResponse resp = null;
308    // unmock the client
309  1 try {
310    // Lets create the request entity
311  1 final File f = new File(this.getClass().getClassLoader()
312    .getResource("stubs/db4o-7.4-tutorial-java-1.pdf").toURI());
313  1 final File f2 = new File(this.getClass().getClassLoader()
314    .getResource("stubs/db4o-7.4-tutorial-java-2.pdf").toURI());
315   
316    // prepare the parameters
317  1 final Map<String, Object> myParams = new HashMap<String, Object>();
318  1 myParams.put("store_type", "workspace");
319  1 myParams.put("store_id", "SpacesStore");
320  1 myParams.put("id", "fe424d83-d697-401c-b29e-ce1a915d7283");//
321  1 myParams.put(f.getName(), f);
322  1 myParams.put(f2.getName(), f2);
323    // Simple call to serve a request and get the response
324  1 final ConnectorRequest request = new StandardConnectorRequest(
325    "uploadMultipart", myParams);
326  1 resp = connector.serve(request);
327  1 assertFalse(resp.hasErrors());
328  1 assertNotNull(resp.getResponseBody());
329  1 assertNotNull(resp.getResponseHeaders());
330    } catch (final CommandException e) {
331  0 LOGGER.error("Error occured in testRepositoryMultiPost:", e);
332  0 fail(e.getMessage());
333    } catch (final URISyntaxException e) {
334  0 LOGGER.error("Error occured in testRepositoryMultiPost:", e);
335  0 fail(e.getMessage());
336    } finally {
337  1 resp.releaseConnection();
338    }
339    }
340   
341    /**
342    * Test repository retrieval.
343    */
 
344  1 toggle public void testRepositoryRetrieval() {
345  1 ConnectorResponse resp = null;
346  1 try {
347   
348    // prepare the parameters
349  1 final Map<String, Object> myParams = new HashMap<String, Object>();
350  1 myParams.put("store_type", "workspace");
351  1 myParams.put("store_id", "SpacesStore");
352  1 myParams.put("id", "fe424d83-d697-401c-b29e-ce1a915d7283");//
353   
354    // Simple call to serve a request and get the response
355  1 final ConnectorRequest request = new StandardConnectorRequest(
356    "nodeRetrieve", myParams, ReturnTransformationTypes.DOM);
357   
358  1 resp = connector.serve(request);
359  1 assertFalse(resp.hasErrors());
360  1 assertNotNull(resp.getResponseBody());
361  1 assertNotNull(resp.getResponseHeaders());
362    } catch (final CommandException e) {
363  0 LOGGER.error("Error occured in testRepositoryRetrieval:", e);
364  0 fail(e.getMessage());
365    } finally {
366  1 resp.releaseConnection();
367    }
368    }
369   
370    /**
371    * Test ticket retrieval.
372    */
 
373  1 toggle public void testTicketRetrieval() {
374  1 ConnectorResponse resp = null;
375  1 try {
376   
377    // prepare the parameters
378  1 final Map<String, Object> myParams = new HashMap<String, Object>();
379  1 myParams.put("u", "admin");
380  1 myParams.put("pw", "admin");
381   
382    // Simple call to serve a request and get the response
383  1 ConnectorRequest request = new StandardConnectorRequest("login",
384    myParams, ReturnTransformationTypes.DOM);
385   
386  1 resp = connector.serve(request);
387  1 assertFalse(resp.hasErrors());
388  1 assertNotNull(resp.getResponseBody());
389  1 assertNotNull(resp.getResponseHeaders());
390   
391    // lets use the response
392  1 final Document doc = (Document) resp.getResponseBody();
393  1 doc.getDocumentElement().normalize();
394   
395  1 LOGGER.debug(doc.getDocumentElement().getNodeName());
396  1 final String ticket = doc.getDocumentElement().getChildNodes()
397    .item(0).getNodeValue();
398  1 LOGGER.debug(ticket);
399  1 LOGGER.debug(doc.getDocumentElement().getChildNodes().item(0)
400    .getNodeValue());
401   
402    // We will do the same process but return a simple string
403  1 request = new StandardConnectorRequest("login", myParams);
404  1 resp = connector.serve(request);
405  1 assertFalse(resp.hasErrors());
406  1 assertNotNull(resp.getResponseBody());
407  1 assertNotNull(resp.getResponseHeaders());
408    // and show it
409  1 final String body = (String) resp.getResponseBody();
410  1 LOGGER.debug(body);
411   
412    // lets try a request with a final transformation
413  1 final ConnectorRequest req = new StandardConnectorRequest("login",
414    myParams);
415  1 req.setEndTransformer(new ConnectorCommand() {
416   
 
417  0 toggle public ConnectorCommand getNextLink() {
418  0 return null;
419    }
420   
 
421  1 toggle public ConnectorContext process(final ConnectorRequest request,
422    final ConnectorContext context) {
423   
424  1 return context;
425    }
426   
 
427  0 toggle public void setNextLink(final ConnectorCommand nextLink) {
428    // NOTHING to do. this is a test transformer that associates
429    // none next to it
430    }
431   
432    });
433   
434  1 resp = connector.serve(req);
435  1 assertFalse(resp.hasErrors());
436  1 assertNotNull(resp.getResponseBody());
437  1 assertNotNull(resp.getResponseHeaders());
438    } catch (final CommandException e) {
439  0 LOGGER.error("Error occured in testTicketRetrieval:", e);
440  0 fail(e.getMessage());
441    } finally {
442  1 resp.releaseConnection();
443    }
444    }
445   
446    /**
447    * Test ticket retrieval.
448    */
 
449  1 toggle public void testTicketRetrievalWithTicketer() {
450  1 final Ticketer ticketer = new Ticketer();
451  1 final ConnectorContext context = new ConnectorContext(
452    connector.getClient(), connector.getServices().get("login"));
453  1 assertNotNull(ticketer.getTicket(context, "admin", "admin"));
454    }
455   
 
456  1 toggle public void testWrongService() {
457   
458  1 try {
459   
460    // prepare the parameters
461  1 final Map<String, Object> myParams = new HashMap<String, Object>();
462  1 myParams.put("store_type", "workspace");
463  1 myParams.put("store_id", "SpacesStore");
464  1 myParams.put("id", "fe424d83-d697-401c-b29e-ce1a915d7283");//
465   
466    // Simple call to serve a request and get the response
467  1 final ConnectorRequest request = new StandardConnectorRequest(
468    "none-existant", myParams, ReturnTransformationTypes.DOM);
469   
470  1 connector.serve(request);
471  0 fail("non-existent service did not fire exception");
472    } catch (final CommandException e) {
473  1 assertTrue(Boolean.TRUE);
474    } finally {
475    // No response so no release of connection
476    }
477    }
478    }