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