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());
51 person = createPerson("Megan", "Forbes");
52 person.setCity("NewYork");
53 person.setState("NY");
54 person.setZip("01234");
55 res = personClient.createPerson(person);
56 Assert.assertEquals(res.getStatus(), Response.Status.CREATED.getStatusCode());
58 person = createPerson("Carl", "Goodman");
59 person.setCity("NewYork");
60 person.setState("NY");
61 person.setZip("01234");
62 res = personClient.createPerson(person);
63 Assert.assertEquals(res.getStatus(), Response.Status.CREATED.getStatusCode());
65 person = createPerson("Dan", "Sheppard");
66 person.setCity("Cambridge");
67 person.setState("ZZ");
68 person.setCountry("UK");
69 person.setZip("UK-01234");
70 res = personClient.createPerson(person);
71 Assert.assertEquals(res.getStatus(), Response.Status.CREATED.getStatusCode());
73 person = createPerson("Colin", "Clark");
74 person.setCity("Toranto");
75 person.setState("ON");
76 person.setCountry("CA");
77 person.setZip("CA-01234");
78 res = personClient.createPerson(person);
79 Assert.assertEquals(res.getStatus(), Response.Status.CREATED.getStatusCode());
83 @Test(dependsOnMethods = {"createPerson"})
84 public void updatePerson() {
85 PersonNuxeo touPerson = personClient.getPerson(updateId).getEntity();
86 touPerson.setId(updateId);
87 verbose("got person to update", touPerson, PersonNuxeo.class);
88 touPerson.setFirstName("Patrick");
89 touPerson.setLastName("Schmitz");
90 PersonNuxeo uPerson = personClient.updatePerson(updateId, touPerson).getEntity();
91 verbose("updated person", uPerson, PersonNuxeo.class);
92 //Assert.assertNotSame(uPerson.getVersion(), initialVersion);
93 Assert.assertEquals(uPerson.getFirstName(), "Patrick");
96 @Test(dependsOnMethods = {"createTeam"})
97 public void getPeople() {
98 //the resource method is expected to return at least an empty list
99 People people = personClient.getPeople().getEntity();
100 List<People.PeopleItem> list = people.getPeopleItem();
102 for(People.PeopleItem pli : list){
103 verbose("getPeople: list-item[" + i + "] title=" + pli.getTitle());
104 verbose("getPeople: list-item[" + i + "] id=" + pli.getId());
105 verbose("getPeople: list-item[" + i + "] uri=" + pli.getUri());
110 @Test(dependsOnMethods = {"updatePerson"})
111 public void deletePerson() {
112 ClientResponse<Response> res = personClient.deletePerson(deleteId);
113 verbose("deletePerson: id=" + deleteId);
114 verbose("deletePerson: status = " + res.getStatus());
115 Assert.assertEquals(res.getStatus(), Response.Status.NO_CONTENT.getStatusCode());
118 private PersonNuxeo createPerson(String firstName, String lastName) {
119 PersonNuxeo person = new PersonNuxeo();
120 person.setFirstName(firstName);
121 person.setLastName(lastName);
122 person.setStreet("2195 Hearst Ave.");
123 person.setCity("Berkeley");
124 person.setState("CA");
125 person.setZip("94704");
126 person.setCountry("US");
127 person.setVersion("1.0");
131 private String extractId(ClientResponse<Response> res) {
132 MultivaluedMap mvm = res.getMetadata();
133 String uri = (String) ((ArrayList) mvm.get("Location")).get(0);
134 String[] segments = uri.split("/");
135 String id = segments[segments.length - 1];
136 verbose("extractId: id=" + id);
140 private void verbose(String msg) {
141 System.out.println("PersonServiceTest : " + msg);
144 private void verbose(String msg, Object o, Class clazz) {
147 JAXBContext jc = JAXBContext.newInstance(clazz);
148 Marshaller m = jc.createMarshaller();
149 m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
151 m.marshal(o, System.out);
157 private void verboseMap(MultivaluedMap map) {
158 for(Object entry : map.entrySet()){
159 MultivaluedMap.Entry mentry = (MultivaluedMap.Entry) entry;
160 verbose(" name=" + mentry.getKey() + " value=" + mentry.getValue());