]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
1a71db83a4d55ca51c4a44b07ff8b71c98ef1402
[tmp/jakarta-migration.git] /
1 package org.collectionspace.hello.client.test;
2
3 import java.util.ArrayList;
4 import java.util.List;
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;
15
16 /**
17  * A PersonNuxeoServiceTest.
18  * 
19  * @version $Revision:$
20  */
21 public class PersonNuxeoServiceTest {
22
23     private PersonNuxeoClient personClient = PersonNuxeoClient.getInstance();
24     private String updateId = "";
25     private String deleteId = "";
26
27     @Test
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);
34     }
35
36     @Test
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);
42
43         person = createPerson("Aron", "Roberts");
44         res = personClient.createPerson(person);
45         Assert.assertEquals(res.getStatus(), Response.Status.CREATED.getStatusCode());
46
47         person = createPerson("Richard", "Millet");
48         res = personClient.createPerson(person);
49         Assert.assertEquals(res.getStatus(), Response.Status.CREATED.getStatusCode());
50
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());
57
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());
64
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());
72
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());
80
81     }
82
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");
94     }
95
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();
101         int i = 0;
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());
106             i++;
107         }
108     }
109
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());
116     }
117
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");
128         return person;
129     }
130
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);
137         return id;
138     }
139
140     private void verbose(String msg) {
141         System.out.println("PersonServiceTest : " + msg);
142     }
143
144     private void verbose(String msg, Object o, Class clazz) {
145         try{
146             verbose(msg);
147             JAXBContext jc = JAXBContext.newInstance(clazz);
148             Marshaller m = jc.createMarshaller();
149             m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
150                     Boolean.TRUE);
151             m.marshal(o, System.out);
152         }catch(Exception e){
153             e.printStackTrace();
154         }
155     }
156
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());
161         }
162     }
163 }