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 Assert.assertEquals(res.getStatus(), Response.Status.CREATED.getStatusCode());
36 //store updateId locally for "update" test
37 if (updateId == null) {
38 updateId = extractId(res);
40 deleteId = extractId(res);
41 System.out.println("Set deleteId: " + deleteId);
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);
52 //intake.setCsid("updated-" + updateId);
53 intake.setEntryNumber("updated-" + intake.getEntryNumber());
54 intake.setEntryDate("updated-" + intake.getEntryDate());
56 // make call to update service
57 res = intakeClient.updateIntake(updateId, intake);
60 Intake updatedIntake = res.getEntity();
61 Assert.assertEquals(updatedIntake.getEntryDate(), intake.getEntryDate());
62 verbose("updateIntake: ", updatedIntake, Intake.class);
67 @Test(dependsOnMethods = {"createIntake"})
68 public void createCollection() {
69 for (int i = 0; i < 3; i++) {
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();
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());
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());
97 private Intake createIntake(long identifier) {
98 Intake intake = createIntake("objectNumber-" + identifier,
99 "objectName-" + identifier);
104 private Intake createIntake(String entryNumber, String entryDate) {
105 Intake intake = new Intake();
107 intake.setEntryNumber(entryNumber);
108 intake.setEntryDate(entryDate);
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];
122 private void verbose(String msg) {
123 System.out.println("Intake Test: " + msg);
126 private void verbose(String msg, Object o, Class clazz) {
129 JAXBContext jc = JAXBContext.newInstance(clazz);
130 Marshaller m = jc.createMarshaller();
131 m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
133 m.marshal(o, System.out);
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());
146 private long createIdentifier() {
147 long identifier = System.currentTimeMillis();