]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
f9d778bd7f8cb0cd43c0eb53386fba121b3863b5
[tmp/jakarta-migration.git] /
1 package org.collectionspace.services.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.jboss.resteasy.client.ClientResponse;
10 import org.testng.Assert;
11 import org.testng.annotations.Test;
12
13 import org.collectionspace.services.collectionobject.CollectionObject;
14 import org.collectionspace.services.collectionobject.CollectionObjectList;
15 import org.collectionspace.services.client.CollectionObjectClient;
16 import org.slf4j.Logger;
17 import org.slf4j.LoggerFactory;
18
19 /**
20  * A CollectionObjectNuxeoServiceTest.
21  * 
22  * @version $Revision:$
23  */
24 public class CollectionObjectServiceTest {
25
26     private CollectionObjectClient collectionObjectClient = CollectionObjectClient.getInstance();
27     private String updateId = null;
28     private String deleteId = null;
29     final Logger logger = LoggerFactory.getLogger(CollectionObjectServiceTest.class);
30
31     @Test
32     public void createCollectionObject() {
33         long identifier = this.createIdentifier();
34
35         CollectionObject collectionObject = createCollectionObject(identifier);
36         ClientResponse<Response> res = collectionObjectClient.createCollectionObject(collectionObject);
37         verbose("createCollectionObject: status = " + res.getStatus());
38         Assert.assertEquals(res.getStatus(), Response.Status.CREATED.getStatusCode());
39
40         //store updateId locally for "update" test
41         if(updateId == null){
42             updateId = extractId(res);
43         }else{
44             deleteId = extractId(res);
45             verbose("Set deleteId: " + deleteId);
46         }
47     }
48
49     @Test(dependsOnMethods = {"createCollectionObject"})
50     public void updateCollectionObject() {
51         ClientResponse<CollectionObject> res = collectionObjectClient.getCollectionObject(updateId);
52         verbose("getCollectionObject: status = " + res.getStatus());
53         CollectionObject collectionObject = res.getEntity();
54         verbose("Got CollectionObject to update with ID: " + updateId,
55                 collectionObject, CollectionObject.class);
56
57         //collectionObject.setCsid("updated-" + updateId);
58         collectionObject.setObjectNumber("updated-" + collectionObject.getObjectNumber());
59         collectionObject.setObjectName("updated-" + collectionObject.getObjectName());
60
61         // make call to update service
62         res = collectionObjectClient.updateCollectionObject(updateId, collectionObject);
63         verbose("updateCollectionObject: status = " + res.getStatus());
64         // check the response
65         CollectionObject updatedCollectionObject = res.getEntity();
66         Assert.assertEquals(updatedCollectionObject.getObjectName(), collectionObject.getObjectName());
67         verbose("updateCollectionObject: ", updatedCollectionObject, CollectionObject.class);
68
69         return;
70     }
71
72     @Test(dependsOnMethods = {"createCollectionObject"})
73     public void createCollection() {
74         for(int i = 0; i < 3; i++){
75             this.createCollectionObject();
76         }
77     }
78
79     @Test(dependsOnMethods = {"createCollection"})
80     public void getCollectionObjectList() {
81         //the resource method is expected to return at least an empty list
82         ClientResponse<CollectionObjectList> res = collectionObjectClient.getCollectionObjectList();
83         CollectionObjectList coList = res.getEntity();
84         verbose("getCollectionObjectList: status = " + res.getStatus());
85
86         List<CollectionObjectList.CollectionObjectListItem> coItemList = coList.getCollectionObjectListItem();
87         int i = 0;
88         for(CollectionObjectList.CollectionObjectListItem pli : coItemList){
89             verbose("getCollectionObjectList: list-item[" + i + "] csid=" + pli.getCsid());
90             verbose("getCollectionObjectList: list-item[" + i + "] objectNumber=" + pli.getObjectNumber());
91             verbose("getCollectionObjectList: list-item[" + i + "] URI=" + pli.getUri());
92             i++;
93         }
94     }
95
96     @Test(dependsOnMethods = {"createCollection"})
97     public void deleteCollectionObject() {
98         verbose("Calling deleteCollectionObject:" + deleteId);
99         ClientResponse<Response> res = collectionObjectClient.deleteCollectionObject(deleteId);
100         verbose("deleteCollectionObject: csid=" + deleteId);
101         verbose("deleteCollectionObject: status = " + res.getStatus());
102         Assert.assertEquals(res.getStatus(), Response.Status.OK.getStatusCode());
103     }
104
105     private CollectionObject createCollectionObject(long identifier) {
106         CollectionObject collectionObject = createCollectionObject("objectNumber-" + identifier,
107                 "objectName-" + identifier);
108
109         return collectionObject;
110     }
111
112     private CollectionObject createCollectionObject(String objectNumber, String objectName) {
113         CollectionObject collectionObject = new CollectionObject();
114
115         collectionObject.setObjectNumber(objectNumber);
116         collectionObject.setObjectName(objectName);
117
118         return collectionObject;
119     }
120
121     private String extractId(ClientResponse<Response> res) {
122         MultivaluedMap mvm = res.getMetadata();
123         String uri = (String) ((ArrayList) mvm.get("Location")).get(0);
124         String[] segments = uri.split("/");
125         String id = segments[segments.length - 1];
126         verbose("id=" + id);
127         return id;
128     }
129
130     private void verbose(String msg) {
131 //        if(logger.isInfoEnabled()){
132 //            logger.debug(msg);
133 //        }
134         System.out.println(msg);
135     }
136
137     private void verbose(String msg, Object o, Class clazz) {
138         try{
139             verbose(msg);
140             JAXBContext jc = JAXBContext.newInstance(clazz);
141             Marshaller m = jc.createMarshaller();
142             m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
143                     Boolean.TRUE);
144             m.marshal(o, System.out);
145         }catch(Exception e){
146             e.printStackTrace();
147         }
148     }
149
150     private void verboseMap(MultivaluedMap map) {
151         for(Object entry : map.entrySet()){
152             MultivaluedMap.Entry mentry = (MultivaluedMap.Entry) entry;
153             verbose("    name=" + mentry.getKey() + " value=" + mentry.getValue());
154         }
155     }
156
157     private long createIdentifier() {
158         long identifier = System.currentTimeMillis();
159         return identifier;
160     }
161 }