]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
d3ba413816d817df58fd112916c72218caea91c2
[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.intake.Intake;
14 import org.collectionspace.services.intake.IntakeList;
15 import org.collectionspace.services.client.IntakeClient;
16
17 /**
18  * A IntakeNuxeoServiceTest.
19  * 
20  * @version $Revision:$
21  */
22 public class IntakeServiceTest {
23
24     private IntakeClient intakeClient = IntakeClient.getInstance();
25     private String updateId = null;
26     private String deleteId = null;
27
28     @Test
29     public void createIntake() {
30         long identifier = this.createIdentifier();
31         
32         Intake intake = createIntake(identifier);
33         ClientResponse<Response> res = intakeClient.createIntake(intake);
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 = {"createIntake"})
46     public void updateIntake() {
47         ClientResponse<Intake> res = intakeClient.getIntake(updateId);
48         Intake intake = res.getEntity();
49         verbose("Got Intake to update with ID: " + updateId,
50                         intake, Intake.class);
51         
52         //intake.setCsid("updated-" + updateId);
53         intake.setEntryNumber("updated-" + intake.getEntryNumber());
54         intake.setEntryDate("updated-" + intake.getEntryDate());
55         
56         // make call to update service
57         res = intakeClient.updateIntake(updateId, intake);
58         
59         // check the response
60         Intake updatedIntake = res.getEntity();        
61         Assert.assertEquals(updatedIntake.getEntryDate(), intake.getEntryDate());
62         verbose("updateIntake: ", updatedIntake, Intake.class);
63         
64         return;
65     }
66
67     @Test(dependsOnMethods = {"createIntake"})
68     public void createCollection() {
69         for (int i = 0; i < 3; i++) {
70                 this.createIntake();
71         }
72     }
73     
74     @Test(dependsOnMethods = {"createCollection"})
75     public void getIntakeList() {
76         //the resource method is expected to return at least an empty list
77         IntakeList coList = intakeClient.getIntakeList().getEntity();
78         List<IntakeList.IntakeListItem> coItemList = coList.getIntakeListItem();
79         int i = 0;
80         for(IntakeList.IntakeListItem pli : coItemList) {
81             verbose("getIntakeList: list-item[" + i + "] csid=" + pli.getCsid());
82             verbose("getIntakeList: list-item[" + i + "] objectNumber=" + pli.getEntryNumber());
83             verbose("getIntakeList: list-item[" + i + "] URI=" + pli.getUri());
84             i++;
85         }
86     }
87
88     @Test(dependsOnMethods = {"createCollection"})
89     public void deleteIntake() {
90         System.out.println("Calling deleteIntake:" + deleteId);
91         ClientResponse<Response> res = intakeClient.deleteIntake(deleteId);
92         verbose("deleteIntake: csid=" + deleteId);
93         verbose("deleteIntake: status = " + res.getStatus());
94         Assert.assertEquals(res.getStatus(), Response.Status.NO_CONTENT.getStatusCode());
95     }
96
97     private Intake createIntake(long identifier) {
98         Intake intake = createIntake("objectNumber-" + identifier,
99                         "objectName-" + identifier);            
100
101         return intake;
102     }
103
104     private Intake createIntake(String entryNumber, String entryDate) {
105         Intake intake = new Intake();
106         
107         intake.setEntryNumber(entryNumber);
108         intake.setEntryDate(entryDate);
109
110         return intake;
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("Intake 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 }