]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
1112d5497d35f4a864f702e2fe62339e9566a452
[tmp/jakarta-migration.git] /
1 package org.collectionspace.hello.client.test;
2
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;
13
14 /**
15  * A PersonServiceTest.
16  * 
17  * @version $Revision:$
18  */
19 public class PersonServiceTest {
20
21     private PersonClient personClient = PersonClient.getInstance();
22     private Long id = 0L;
23
24     @Test
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());
36         //store id locally
37         id = extractId(res);
38     }
39
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");
51     }
52
53     @Test
54     public void getNonExistingPerson() {
55         ClientResponse<Person> res = personClient.getPerson(999L);
56
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);
68         }
69     }
70
71     
72     @Test
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);
84         }
85     }
86
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]);
93     }
94
95     private void verbose(String msg) {
96         System.out.println("PersonServiceTest : " + msg);
97     }
98
99     private void verbose(String msg, Person p) {
100         try {
101             verbose(msg);
102             JAXBContext jc = JAXBContext.newInstance(Person.class);
103             Marshaller m = jc.createMarshaller();
104             m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
105                     Boolean.TRUE);
106             m.marshal(p, System.out);
107         //m.marshal(new JAXBElement(new QName("uri", "local"), Person.class, p), System.out);
108         } catch (Exception e) {
109             e.printStackTrace();
110         }
111     }
112
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());
117         }
118     }
119 }