1 package org.collectionspace.services.client.test;
3 import java.util.ArrayList;
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;
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;
20 * A CollectionObjectNuxeoServiceTest.
22 * @version $Revision:$
24 public class CollectionObjectServiceTest {
26 private CollectionObjectClient collectionObjectClient = CollectionObjectClient.getInstance();
27 private String updateId = null;
28 private String deleteId = null;
29 final Logger logger = LoggerFactory.getLogger(CollectionObjectServiceTest.class);
32 public void createCollectionObject() {
33 long identifier = this.createIdentifier();
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());
40 //store updateId locally for "update" test
42 updateId = extractId(res);
44 deleteId = extractId(res);
45 verbose("Set deleteId: " + deleteId);
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);
57 //collectionObject.setCsid("updated-" + updateId);
58 collectionObject.setObjectNumber("updated-" + collectionObject.getObjectNumber());
59 collectionObject.setObjectName("updated-" + collectionObject.getObjectName());
61 // make call to update service
62 res = collectionObjectClient.updateCollectionObject(updateId, collectionObject);
63 verbose("updateCollectionObject: status = " + res.getStatus());
65 CollectionObject updatedCollectionObject = res.getEntity();
66 Assert.assertEquals(updatedCollectionObject.getObjectName(), collectionObject.getObjectName());
67 verbose("updateCollectionObject: ", updatedCollectionObject, CollectionObject.class);
72 @Test(dependsOnMethods = {"createCollectionObject"})
73 public void createCollection() {
74 for(int i = 0; i < 3; i++){
75 this.createCollectionObject();
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());
86 List<CollectionObjectList.CollectionObjectListItem> coItemList = coList.getCollectionObjectListItem();
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());
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());
105 private CollectionObject createCollectionObject(long identifier) {
106 CollectionObject collectionObject = createCollectionObject("objectNumber-" + identifier,
107 "objectName-" + identifier);
109 return collectionObject;
112 private CollectionObject createCollectionObject(String objectNumber, String objectName) {
113 CollectionObject collectionObject = new CollectionObject();
115 collectionObject.setObjectNumber(objectNumber);
116 collectionObject.setObjectName(objectName);
118 return collectionObject;
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];
130 private void verbose(String msg) {
131 // if(logger.isInfoEnabled()){
132 // logger.debug(msg);
134 System.out.println(msg);
137 private void verbose(String msg, Object o, Class clazz) {
140 JAXBContext jc = JAXBContext.newInstance(clazz);
141 Marshaller m = jc.createMarshaller();
142 m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
144 m.marshal(o, System.out);
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());
157 private long createIdentifier() {
158 long identifier = System.currentTimeMillis();