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