1 package org.collectionspace.hello.client.test;
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;
23 * @version $Revision:$
25 public class MultischemaServiceTest {
27 private MultischemaClient client = MultischemaClient.getInstance();
28 private String updateId = "";
29 private String deleteId = "";
30 final Logger logger = LoggerFactory.getLogger(MultischemaServiceTest.class);
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);
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);
47 multipartPerson = createPerson("Mr.", "Aron", "Roberts");
48 res = client.createPerson(multipartPerson);
49 Assert.assertEquals(res.getStatus(), Response.Status.CREATED.getStatusCode());
51 multipartPerson = createPerson("Mr.", "Richard", "Millet");
52 res = client.createPerson(multipartPerson);
53 Assert.assertEquals(res.getStatus(), Response.Status.CREATED.getStatusCode());
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");
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());
78 private MultipartFormDataOutput createPerson(String title, String firstName, String lastName) {
79 PersonNuxeo person = new PersonNuxeo();
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");
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;
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);
107 private void verbose(String msg) {
111 private void verbose(String msg, Object o, Class clazz) {
114 JAXBContext jc = JAXBContext.newInstance(clazz);
115 Marshaller m = jc.createMarshaller();
116 m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
118 m.marshal(o, System.out);