1 package org.collectionspace.hello.client.test;
3 import java.util.ArrayList;
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.People;
11 import org.collectionspace.hello.client.PersonNuxeoClient;
12 import org.jboss.resteasy.client.ClientResponse;
13 import org.testng.Assert;
14 import org.testng.annotations.Test;
17 * A PersonNuxeoServiceTest.
19 * @version $Revision:$
21 public class PersonNuxeoServiceTest {
23 private PersonNuxeoClient personClient = PersonNuxeoClient.getInstance();
24 private String updateId = "";
25 private String deleteId = "";
28 public void createPerson() {
29 PersonNuxeo person = createPerson("Chris", "Hoffman");
30 ClientResponse<Response> res = personClient.createPerson(person);
31 Assert.assertEquals(res.getStatus(), Response.Status.CREATED.getStatusCode());
32 //store updateId locally
33 updateId = extractId(res);
37 public void createTeam() {
38 PersonNuxeo person = createPerson("Sanjay", "Dalal");
39 ClientResponse<Response> res = personClient.createPerson(person);
40 Assert.assertEquals(res.getStatus(), Response.Status.CREATED.getStatusCode());
41 deleteId = extractId(res);
43 person = createPerson("Aron", "Roberts");
44 res = personClient.createPerson(person);
45 Assert.assertEquals(res.getStatus(), Response.Status.CREATED.getStatusCode());
47 person = createPerson("Richard", "Millet");
48 res = personClient.createPerson(person);
49 Assert.assertEquals(res.getStatus(), Response.Status.CREATED.getStatusCode());
53 @Test(dependsOnMethods = {"createPerson"})
54 public void updatePerson() {
55 PersonNuxeo touPerson = new PersonNuxeo();//personClient.getPerson(updateId).getEntity();
56 touPerson.setId(updateId);
57 verbose("got person to update", touPerson, PersonNuxeo.class);
58 touPerson.setFirstName("Patrick");
59 touPerson.setLastName("Schmitz");
60 PersonNuxeo uPerson = personClient.updatePerson(updateId, touPerson).getEntity();
61 verbose("updated person", uPerson, PersonNuxeo.class);
62 //Assert.assertNotSame(uPerson.getVersion(), initialVersion);
63 Assert.assertEquals(uPerson.getFirstName(), "Patrick");
66 @Test(dependsOnMethods = {"createTeam"})
67 public void getPeople() {
68 //the resource method is expected to return at least an empty list
69 People people = personClient.getPeople().getEntity();
70 List<People.PeopleItem> list = people.getPeopleItem();
72 for(People.PeopleItem pli : list){
73 verbose("getPeople: list-item[" + i + "] title=" + pli.getTitle());
74 verbose("getPeople: list-item[" + i + "] id=" + pli.getId());
75 verbose("getPeople: list-item[" + i + "] uri=" + pli.getUri());
80 @Test(dependsOnMethods = {"updatePerson"})
81 public void deletePerson() {
82 ClientResponse<Response> res = personClient.deletePerson(deleteId);
83 verbose("deletePerson: id=" + deleteId);
84 verbose("deletePerson: status = " + res.getStatus());
85 Assert.assertEquals(res.getStatus(), Response.Status.NO_CONTENT.getStatusCode());
88 private PersonNuxeo createPerson(String firstName, String lastName) {
89 PersonNuxeo person = new PersonNuxeo();
90 person.setFirstName(firstName);
91 person.setLastName(lastName);
92 person.setStreet("2195 Hearst Ave.");
93 person.setCity("Berkeley");
94 person.setState("CA");
95 person.setZip("94704");
96 person.setCountry("US");
97 person.setVersion("1.0");
101 private String extractId(ClientResponse<Response> res) {
102 MultivaluedMap mvm = res.getMetadata();
103 String uri = (String) ((ArrayList) mvm.get("Location")).get(0);
104 String[] segments = uri.split("/");
105 String id = segments[segments.length - 1];
110 private void verbose(String msg) {
111 System.out.println("PersonServiceTest : " + msg);
114 private void verbose(String msg, Object o, Class clazz) {
117 JAXBContext jc = JAXBContext.newInstance(clazz);
118 Marshaller m = jc.createMarshaller();
119 m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
121 m.marshal(o, System.out);
127 private void verboseMap(MultivaluedMap map) {
128 for(Object entry : map.entrySet()){
129 MultivaluedMap.Entry mentry = (MultivaluedMap.Entry) entry;
130 verbose(" name=" + mentry.getKey() + " value=" + mentry.getValue());