1 package org.collectionspace.hello.client.test;
3 import java.util.ArrayList;
4 import javax.ws.rs.core.MultivaluedMap;
5 import javax.ws.rs.core.Response;
6 import javax.xml.bind.JAXBContext;
7 import javax.xml.bind.Marshaller;
8 import org.collectionspace.hello.Person;
9 import org.collectionspace.hello.client.PersonClient;
10 import org.jboss.resteasy.client.ClientResponse;
11 import org.testng.Assert;
12 import org.testng.annotations.Test;
15 * A PersonServiceTest.
17 * @version $Revision:$
19 public class PersonServiceTest {
21 private PersonClient personClient = PersonClient.getInstance();
25 public void createPerson() {
26 Person person = new Person();
27 person.setFirstName("Chris");
28 person.setLastName("Hoffman");
29 person.setStreet("2195 Hearst Ave.");
30 person.setCity("Berkeley");
31 person.setState("CA");
32 person.setZip("94704");
33 person.setCountry("US");
34 ClientResponse<Response> res = personClient.createPerson(person);
35 Assert.assertEquals(res.getStatus(), Response.Status.CREATED.getStatusCode());
40 @Test(dependsOnMethods = {"createPerson"})
41 public void updatePerson() {
42 Person touPerson = personClient.getPerson(id).getEntity();
43 verbose("got person to update", touPerson);
44 touPerson.setFirstName("Richard");
45 touPerson.setLastName("Millet");
46 int initialVersion = touPerson.getVersion();
47 Person uPerson = personClient.updatePerson(id, touPerson).getEntity();
48 verbose("updated person", uPerson);
49 Assert.assertNotSame(uPerson.getVersion(), initialVersion);
50 Assert.assertEquals(uPerson.getFirstName(), "Richard");
54 public void getNonExistingPerson() {
55 ClientResponse<Person> res = personClient.getPerson(999L);
57 Response.Status status = res.getResponseStatus();
58 verbose(this.getClass().getName() + ": " +
59 "getNonExistingPerson: Status: code=" + status.getStatusCode() +
60 " message=" + status.toString());
61 verbose("getNonExistingPerson: Metadata:");
62 verboseMap(res.getMetadata());
63 verbose("getNonExistingPerson: Headers:");
64 verboseMap(res.getHeaders());
65 if (status.equals(Response.Status.NOT_FOUND)) {
66 String msg = res.getEntity(String.class, String.class);
67 verbose("getNonExistingPerson: error message=" + msg);
73 public void updateWrongPerson() {
74 Person touPerson = personClient.getPerson(id).getEntity();
75 verbose("updateWrongPerson: got person to update", touPerson);
76 touPerson.setFirstName("Richard");
77 touPerson.setLastName("Millet");
78 //use non existing person to update
79 ClientResponse<Person> res = personClient.updatePerson(9999L, touPerson);
80 if (res.getResponseStatus().equals(Response.Status.NOT_FOUND)) {
81 verbose("updateWrongPerson: Status=" + res.getResponseStatus().toString());
82 String msg = res.getEntity(String.class, String.class);
83 verbose("updateWrongPerson: application error message=" + msg);
87 private Long extractId(ClientResponse<Response> res) {
88 MultivaluedMap mvm = res.getMetadata();
89 String uri = (String) ((ArrayList) mvm.get("Location")).get(0);
90 String[] segments = uri.split("/");
91 verbose("id=" + segments[segments.length - 1]);
92 return Long.valueOf(segments[segments.length - 1]);
95 private void verbose(String msg) {
96 System.out.println("PersonServiceTest : " + msg);
99 private void verbose(String msg, Person p) {
102 JAXBContext jc = JAXBContext.newInstance(Person.class);
103 Marshaller m = jc.createMarshaller();
104 m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
106 m.marshal(p, System.out);
107 //m.marshal(new JAXBElement(new QName("uri", "local"), Person.class, p), System.out);
108 } catch (Exception e) {
113 private void verboseMap(MultivaluedMap map) {
114 for (Object entry : map.entrySet()) {
115 MultivaluedMap.Entry mentry = (MultivaluedMap.Entry) entry;
116 verbose(" name=" + mentry.getKey() + " value=" + mentry.getValue());