]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
57aed5749f2a5e1fd6bb39031bd9a99dc811fad9
[tmp/jakarta-migration.git] /
1 package org.collectionspace.hello.client.test;
2
3 import java.util.ArrayList;
4 import javax.ws.rs.core.MediaType;
5 import javax.ws.rs.core.MultivaluedMap;
6 import javax.ws.rs.core.Response;
7 import javax.xml.bind.JAXBContext;
8 import javax.xml.bind.Marshaller;
9 import org.collectionspace.hello.PersonNuxeo;
10 import org.collectionspace.hello.client.MultipartClient;
11 import org.collectionspace.world.DublincoreNuxeo;
12 import org.jboss.resteasy.client.ClientResponse;
13 import org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataInput;
14 import org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataOutput;
15 import org.testng.Assert;
16 import org.testng.annotations.Test;
17
18 /**
19  * A MultipartTest.
20  * 
21  * @version $Revision:$
22  */
23 public class MultipartServiceTest {
24
25     private MultipartClient multipartClient = MultipartClient.getInstance();
26     private String updateId = "";
27     private String deleteId = "";
28
29     @Test
30     public void createPerson() {
31         MultipartFormDataOutput multipartPerson = createPerson("Mr.", "Chris", "Hoffman");
32         ClientResponse<Response> res = multipartClient.createPerson(multipartPerson);
33         Assert.assertEquals(res.getStatus(), Response.Status.CREATED.getStatusCode());
34         //store updateId locally
35         updateId = extractId(res);
36     }
37
38     @Test
39     public void createTeam() {
40         MultipartFormDataOutput multipartPerson = createPerson("Mr.", "Sanjay", "Dalal");
41         ClientResponse<Response> res = multipartClient.createPerson(multipartPerson);
42         Assert.assertEquals(res.getStatus(), Response.Status.CREATED.getStatusCode());
43         deleteId = extractId(res);
44
45         multipartPerson = createPerson("Mr.", "Aron", "Roberts");
46         res = multipartClient.createPerson(multipartPerson);
47         Assert.assertEquals(res.getStatus(), Response.Status.CREATED.getStatusCode());
48
49         multipartPerson = createPerson("Mr.", "Richard", "Millet");
50         res = multipartClient.createPerson(multipartPerson);
51         Assert.assertEquals(res.getStatus(), Response.Status.CREATED.getStatusCode());
52     }
53
54     @Test(dependsOnMethods = {"createPerson"})
55     public void updatePerson() throws Exception {
56         MultipartFormDataInput mdip = multipartClient.getPerson(updateId).getEntity();
57         PersonNuxeo touPerson = mdip.getFormDataPart("hello", PersonNuxeo.class, null);
58         touPerson.setId(updateId);
59         verbose("got person to update", touPerson, PersonNuxeo.class);
60         touPerson.setFirstName("Patrick");
61         touPerson.setLastName("Schmitz");
62         PersonNuxeo uPerson = multipartClient.updatePerson(updateId, touPerson).getEntity();
63         verbose("updated person", uPerson, PersonNuxeo.class);
64         //Assert.assertNotSame(uPerson.getVersion(), initialVersion);
65         Assert.assertEquals(uPerson.getFirstName(), "Patrick");
66     }
67
68     @Test(dependsOnMethods = {"createTeam"})
69     public void deletePerson() {
70         ClientResponse<Response> res = multipartClient.deletePerson(deleteId);
71         verbose("deletePerson: id=" + deleteId);
72         verbose("deletePerson: status = " + res.getStatus());
73         Assert.assertEquals(res.getStatus(), Response.Status.NO_CONTENT.getStatusCode());
74     }
75
76     private MultipartFormDataOutput createPerson(String title, String firstName, String lastName) {
77         PersonNuxeo person = new PersonNuxeo();
78
79         person.setFirstName(firstName);
80         person.setLastName(lastName);
81         person.setStreet("2195 Hearst Ave.");
82         person.setCity("Berkeley");
83         person.setState("CA");
84         person.setZip("94704");
85         person.setCountry("US");
86         person.setVersion("1.0");
87
88         DublincoreNuxeo dublin = new DublincoreNuxeo();
89         dublin.setTitle(title);
90         MultipartFormDataOutput multipartPerson = new MultipartFormDataOutput();
91         multipartPerson.addFormData("hello", person, MediaType.APPLICATION_XML_TYPE);
92         multipartPerson.addFormData("dublincore", dublin, MediaType.APPLICATION_XML_TYPE);
93         return multipartPerson;
94     }
95
96     private String extractId(ClientResponse<Response> res) {
97         MultivaluedMap mvm = res.getMetadata();
98         String uri = (String) ((ArrayList) mvm.get("Location")).get(0);
99         String[] segments = uri.split("/");
100         String id = segments[segments.length - 1];
101         verbose("extractId: id=" + id);
102         return id;
103     }
104
105     private void verbose(String msg) {
106         System.out.println("PersonServiceTest : " + msg);
107     }
108
109     private void verbose(String msg, Object o, Class clazz) {
110         try{
111             verbose(msg);
112             JAXBContext jc = JAXBContext.newInstance(clazz);
113             Marshaller m = jc.createMarshaller();
114             m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
115                     Boolean.TRUE);
116             m.marshal(o, System.out);
117         }catch(Exception e){
118             e.printStackTrace();
119         }
120     }
121
122     private void verboseMap(MultivaluedMap map) {
123         for(Object entry : map.entrySet()){
124             MultivaluedMap.Entry mentry = (MultivaluedMap.Entry) entry;
125             verbose("    name=" + mentry.getKey() + " value=" + mentry.getValue());
126         }
127     }
128 }