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