1 package org.collectionspace.hello.client;
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.JAXBElement;
8 import javax.xml.bind.Marshaller;
9 import javax.xml.namespace.QName;
10 import org.collectionspace.hello.client.*;
11 import org.jboss.resteasy.client.ClientResponse;
12 import org.testng.Assert;
13 import org.testng.annotations.Test;
16 * A PersonServiceTest.
18 * @version $Revision:$
20 public class PersonServiceTest {
22 private PersonClient personClient = PersonClient.getInstance();
26 public void createPerson() {
27 Person person = new Person();
28 person.setFirstName("Chris");
29 person.setLastName("Hoffman");
30 person.setStreet("2195 Hearst Ave.");
31 person.setCity("Berkeley");
32 person.setState("CA");
33 person.setZip("94704");
34 person.setCountry("US");
35 ClientResponse<Response> res = personClient.createPerson(person);
36 Assert.assertEquals(res.getStatus(), Response.Status.CREATED.getStatusCode());
40 @Test(dependsOnMethods = {"createPerson"})
41 public void updatePerson() {
42 Person me = personClient.getPerson(id).getEntity();
43 verbose("received with get", me);
44 me.setFirstName("Richard");
45 me.setLastName("Millet");
46 int initialVersion = me.getVersion();
47 Person updated = personClient.updatePerson(id, me).getEntity();
48 verbose("updated", updated);
49 Assert.assertNotSame(updated.getVersion(), initialVersion);
50 Assert.assertEquals(updated.getFirstName(), "Richard");
53 private Long extractId(ClientResponse<Response> res) {
54 MultivaluedMap mvm = res.getMetadata();
55 String uri = (String) ((ArrayList) mvm.get("Location")).get(0);
56 String[] segments = uri.split("/");
57 System.out.println("id=" + segments[segments.length - 1]);
58 return Long.valueOf(segments[segments.length - 1]);
61 private void verbose(String msg, Person p) {
63 System.out.println(msg);
64 JAXBContext jc = JAXBContext.newInstance(Person.class);
65 Marshaller m = jc.createMarshaller();
66 m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
68 m.marshal(new JAXBElement(new QName("uri", "local"), Person.class, p), System.out);
69 } catch (Exception e) {