]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
97aee047ac9d475ad2d3e85514dd783549c2e9dc
[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
17 /**
18  * A CollectionObjectNuxeoServiceTest.
19  * 
20  * @version $Revision:$
21  */
22 public class CollectionObjectServiceTest {
23
24     private CollectionObjectClient collectionObjectClient = CollectionObjectClient.getInstance();
25     private String updateId = null;
26     private String deleteId = null;
27
28     @Test
29     public void createCollectionObject() {
30         long identifier = this.createIdentifier();
31         
32         CollectionObject collectionObject = createCollectionObject(identifier);
33         ClientResponse<Response> res = collectionObjectClient.createCollectionObject(collectionObject);
34         Assert.assertEquals(res.getStatus(), Response.Status.CREATED.getStatusCode());
35         
36         //store updateId locally for "update" test
37         if (updateId == null) {
38                 updateId = extractId(res);
39         } else {
40                 deleteId = extractId(res);
41                 System.out.println("Set deleteId: " + deleteId);
42         }
43     }
44
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);
51         
52         //collectionObject.setCsid("updated-" + updateId);
53         collectionObject.setObjectNumber("updated-" + collectionObject.getObjectNumber());
54         collectionObject.setObjectName("updated-" + collectionObject.getObjectName());
55         
56         // make call to update service
57         res = collectionObjectClient.updateCollectionObject(updateId, collectionObject);
58         
59         // check the response
60         CollectionObject updatedCollectionObject = res.getEntity();        
61         Assert.assertEquals(updatedCollectionObject.getObjectName(), collectionObject.getObjectName());
62         verbose("updateCollectionObject: ", updatedCollectionObject, CollectionObject.class);
63         
64         return;
65     }
66
67     @Test(dependsOnMethods = {"createCollectionObject"})
68     public void createCollection() {
69         for (int i = 0; i < 3; i++) {
70                 this.createCollectionObject();
71         }
72     }
73     
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();
79         int i = 0;
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());
84             i++;
85         }
86     }
87
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());
95     }
96
97     private CollectionObject createCollectionObject(long identifier) {
98         CollectionObject collectionObject = createCollectionObject("objectNumber-" + identifier,
99                         "objectName-" + identifier);            
100
101         return collectionObject;
102     }
103
104     private CollectionObject createCollectionObject(String objectNumber, String objectName) {
105         CollectionObject collectionObject = new CollectionObject();
106         
107         collectionObject.setObjectNumber(objectNumber);
108         collectionObject.setObjectName(objectName);
109
110         return collectionObject;
111     }
112
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];
118         verbose("id=" + id);
119         return id;
120     }
121
122     private void verbose(String msg) {
123         System.out.println("CollectionObject Test: " + msg);
124     }
125
126     private void verbose(String msg, Object o, Class clazz) {
127         try{
128             verbose(msg);
129             JAXBContext jc = JAXBContext.newInstance(clazz);
130             Marshaller m = jc.createMarshaller();
131             m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
132                     Boolean.TRUE);
133             m.marshal(o, System.out);
134         }catch(Exception e){
135             e.printStackTrace();
136         }
137     }
138
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());
143         }
144     }
145     
146     private long createIdentifier() {
147         long identifier = System.currentTimeMillis();
148         return identifier;
149     }
150 }