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.intake.Intake;
14 import org.collectionspace.services.intake.IntakeList;
15 import org.collectionspace.services.client.IntakeClient;
18 * A IntakeNuxeoServiceTest.
20 * @version $Revision:$
22 public class IntakeServiceTest {
24 private IntakeClient intakeClient = IntakeClient.getInstance();
25 private String updateId = null;
26 private String deleteId = null;
29 public void createIntake() {
30 long identifier = this.createIdentifier();
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());
37 //store updateId locally for "update" test
39 updateId = extractId(res);
41 deleteId = extractId(res);
42 System.out.println("Set deleteId: " + deleteId);
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);
55 //intake.setCsid("updated-" + updateId);
56 intake.setEntryNumber("updated-" + intake.getEntryNumber());
57 intake.setEntryDate("updated-" + intake.getEntryDate());
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());
64 Intake updatedIntake = res.getEntity();
65 Assert.assertEquals(updatedIntake.getEntryDate(), intake.getEntryDate());
66 verbose("updateIntake: ", updatedIntake, Intake.class);
71 @Test(dependsOnMethods = {"createIntake"})
72 public void createCollection() {
73 for(int i = 0; i < 3; i++){
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();
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());
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());
104 private Intake createIntake(long identifier) {
105 Intake intake = createIntake("entryNumber-" + identifier,
106 "entryDate-" + identifier);
111 private Intake createIntake(String entryNumber, String entryDate) {
112 Intake intake = new Intake();
114 intake.setEntryNumber(entryNumber);
115 intake.setEntryDate(entryDate);
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];
129 private void verbose(String msg) {
130 System.out.println("Intake Test: " + msg);
133 private void verbose(String msg, Object o, Class clazz) {
136 JAXBContext jc = JAXBContext.newInstance(clazz);
137 Marshaller m = jc.createMarshaller();
138 m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
140 m.marshal(o, System.out);
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());
153 private long createIdentifier() {
154 long identifier = System.currentTimeMillis();