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;
18 * A CollectionObjectNuxeoServiceTest.
20 * @version $Revision:$
22 public class CollectionObjectServiceTest {
24 private CollectionObjectClient collectionObjectClient = CollectionObjectClient.getInstance();
25 private String updateId = null;
26 private String deleteId = null;
29 public void createCollectionObject() {
30 long identifier = this.createIdentifier();
32 CollectionObject collectionObject = createCollectionObject(identifier);
33 ClientResponse<Response> res = collectionObjectClient.createCollectionObject(collectionObject);
34 Assert.assertEquals(res.getStatus(), Response.Status.CREATED.getStatusCode());
36 //store updateId locally for "update" test
37 if (updateId == null) {
38 updateId = extractId(res);
40 deleteId = extractId(res);
41 System.out.println("Set deleteId: " + deleteId);
45 @Test(dependsOnMethods = {"createCollectionObject"})
46 public void updateCollectionObject() {
47 ClientResponse<CollectionObject> res = collectionObjectClient.getCollectionObject(updateId);
48 CollectionObject collectionObject = res.getEntity();
49 verbose("Got CollectionObject to update with ID: " + updateId,
50 collectionObject, CollectionObject.class);
52 //collectionObject.setCsid("updated-" + updateId);
53 collectionObject.setObjectNumber("updated-" + collectionObject.getObjectNumber());
54 collectionObject.setObjectName("updated-" + collectionObject.getObjectName());
56 // make call to update service
57 res = collectionObjectClient.updateCollectionObject(updateId, collectionObject);
60 CollectionObject updatedCollectionObject = res.getEntity();
61 Assert.assertEquals(updatedCollectionObject.getObjectName(), collectionObject.getObjectName());
62 verbose("updateCollectionObject: ", updatedCollectionObject, CollectionObject.class);
67 @Test(dependsOnMethods = {"createCollectionObject"})
68 public void createCollection() {
69 for (int i = 0; i < 3; i++) {
70 this.createCollectionObject();
74 @Test(dependsOnMethods = {"createCollection"})
75 public void getCollectionObjectList() {
76 //the resource method is expected to return at least an empty list
77 CollectionObjectList coList = collectionObjectClient.getCollectionObjectList().getEntity();
78 List<CollectionObjectList.CollectionObjectListItem> coItemList = coList.getCollectionObjectListItem();
80 for(CollectionObjectList.CollectionObjectListItem pli : coItemList) {
81 verbose("getCollectionObjectList: list-item[" + i + "] csid=" + pli.getCsid());
82 verbose("getCollectionObjectList: list-item[" + i + "] objectNumber=" + pli.getObjectNumber());
83 verbose("getCollectionObjectList: list-item[" + i + "] URI=" + pli.getUri());
88 @Test(dependsOnMethods = {"createCollection"})
89 public void deleteCollectionObject() {
90 System.out.println("Calling deleteCollectionObject:" + deleteId);
91 ClientResponse<Response> res = collectionObjectClient.deleteCollectionObject(deleteId);
92 verbose("deleteCollectionObject: csid=" + deleteId);
93 verbose("deleteCollectionObject: status = " + res.getStatus());
94 Assert.assertEquals(res.getStatus(), Response.Status.NO_CONTENT.getStatusCode());
97 private CollectionObject createCollectionObject(long identifier) {
98 CollectionObject collectionObject = createCollectionObject("objectNumber-" + identifier,
99 "objectName-" + identifier);
101 return collectionObject;
104 private CollectionObject createCollectionObject(String objectNumber, String objectName) {
105 CollectionObject collectionObject = new CollectionObject();
107 collectionObject.setObjectNumber(objectNumber);
108 collectionObject.setObjectName(objectName);
110 return collectionObject;
113 private String extractId(ClientResponse<Response> res) {
114 MultivaluedMap mvm = res.getMetadata();
115 String uri = (String) ((ArrayList) mvm.get("Location")).get(0);
116 String[] segments = uri.split("/");
117 String id = segments[segments.length - 1];
122 private void verbose(String msg) {
123 System.out.println("CollectionObject Test: " + msg);
126 private void verbose(String msg, Object o, Class clazz) {
129 JAXBContext jc = JAXBContext.newInstance(clazz);
130 Marshaller m = jc.createMarshaller();
131 m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
133 m.marshal(o, System.out);
139 private void verboseMap(MultivaluedMap map) {
140 for(Object entry : map.entrySet()){
141 MultivaluedMap.Entry mentry = (MultivaluedMap.Entry) entry;
142 verbose(" name=" + mentry.getKey() + " value=" + mentry.getValue());
146 private long createIdentifier() {
147 long identifier = System.currentTimeMillis();