/* * #%L * Alfresco Records Management Module * %% * Copyright (C) 2005 - 2016 Alfresco Software Limited * %% * This file is part of the Alfresco software. * - * If the software was purchased under a paid Alfresco license, the terms of * the paid license agreement will prevail. Otherwise, the software is * provided under the following open source license terms: * - * Alfresco is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * - * Alfresco is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * - * You should have received a copy of the GNU Lesser General Public License * along with Alfresco. If not, see <http://www.gnu.org/licenses/>. * #L% */ package org.alfresco.module.org_alfresco_module_rm.test.legacy.webscript; import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel; import org.alfresco.module.org_alfresco_module_rm.test.util.BaseRMWebScriptTestCase; import org.alfresco.util.GUID; import org.json.JSONObject; import org.springframework.extensions.webscripts.TestWebScriptServer.DeleteRequest; import org.springframework.extensions.webscripts.TestWebScriptServer.GetRequest; import org.springframework.extensions.webscripts.TestWebScriptServer.PostRequest; import org.springframework.extensions.webscripts.TestWebScriptServer.PutRequest; import org.springframework.extensions.webscripts.TestWebScriptServer.Response; /** * RM event REST API test * * @author Roy Wetherall */ public class EventRestApiTest extends BaseRMWebScriptTestCase implements RecordsManagementModel { protected static final String GET_EVENTS_URL = "/api/rma/admin/rmevents"; protected static final String GET_EVENTTYPES_URL = "/api/rma/admin/rmeventtypes"; protected static final String SERVICE_URL_PREFIX = "/alfresco/service"; protected static final String APPLICATION_JSON = "application/json"; protected static final String DISPLAY_LABEL = "display label"; protected static final String EVENT_TYPE = "rmEventType.simple"; protected static final String KEY_EVENT_NAME = "eventName"; protected static final String KEY_EVENT_TYPE = "eventType"; protected static final String KEY_EVENT_DISPLAY_LABEL = "eventDisplayLabel"; public void testGetEventTypes() throws Exception { Response rsp = sendRequest(new GetRequest(GET_EVENTTYPES_URL),200); String rspContent = rsp.getContentAsString(); JSONObject obj = new JSONObject(rspContent); JSONObject types = obj.getJSONObject("data"); assertNotNull(types); JSONObject type = types.getJSONObject("rmEventType.simple"); assertNotNull(type); assertEquals("rmEventType.simple", type.getString("eventTypeName")); assertNotNull(type.getString("eventTypeDisplayLabel")); System.out.println(rspContent); } public void testGetEvents() throws Exception { String event1 = GUID.generate(); String event2 = GUID.generate(); // Create a couple or events by hand eventService.addEvent(EVENT_TYPE, event1, DISPLAY_LABEL); eventService.addEvent(EVENT_TYPE, event2, DISPLAY_LABEL); try { // Get the events Response rsp = sendRequest(new GetRequest(GET_EVENTS_URL),200); String rspContent = rsp.getContentAsString(); JSONObject obj = new JSONObject(rspContent); JSONObject roles = obj.getJSONObject("data"); assertNotNull(roles); JSONObject eventObj = roles.getJSONObject(event1); assertNotNull(eventObj); assertEquals(event1, eventObj.get(KEY_EVENT_NAME)); assertEquals(DISPLAY_LABEL, eventObj.get(KEY_EVENT_DISPLAY_LABEL)); assertEquals(EVENT_TYPE, eventObj.get(KEY_EVENT_TYPE)); eventObj = roles.getJSONObject(event2); assertNotNull(eventObj); assertEquals(event2, eventObj.get(KEY_EVENT_NAME)); assertEquals(DISPLAY_LABEL, eventObj.get(KEY_EVENT_DISPLAY_LABEL)); assertEquals(EVENT_TYPE, eventObj.get(KEY_EVENT_TYPE)); } finally { // Clean up eventService.removeEvent(event1); eventService.removeEvent(event2); } } public void testPostEvents() throws Exception { String eventName= GUID.generate(); JSONObject obj = new JSONObject(); obj.put(KEY_EVENT_NAME, eventName); obj.put(KEY_EVENT_DISPLAY_LABEL, DISPLAY_LABEL); obj.put(KEY_EVENT_TYPE, EVENT_TYPE); Response rsp = sendRequest(new PostRequest(GET_EVENTS_URL, obj.toString(), APPLICATION_JSON),200); try { String rspContent = rsp.getContentAsString(); JSONObject resultObj = new JSONObject(rspContent); JSONObject eventObj = resultObj.getJSONObject("data"); assertNotNull(eventObj); assertEquals(eventName, eventObj.get(KEY_EVENT_NAME)); assertEquals(DISPLAY_LABEL, eventObj.get(KEY_EVENT_DISPLAY_LABEL)); assertEquals(EVENT_TYPE, eventObj.get(KEY_EVENT_TYPE)); } finally { eventService.removeEvent(eventName); } // Test with no event name set obj = new JSONObject(); obj.put(KEY_EVENT_DISPLAY_LABEL, DISPLAY_LABEL); obj.put(KEY_EVENT_TYPE, EVENT_TYPE); rsp = sendRequest(new PostRequest(GET_EVENTS_URL, obj.toString(), APPLICATION_JSON),200); try { String rspContent = rsp.getContentAsString(); JSONObject resultObj = new JSONObject(rspContent); JSONObject eventObj = resultObj.getJSONObject("data"); assertNotNull(eventObj); assertNotNull(eventObj.get(KEY_EVENT_NAME)); assertEquals(DISPLAY_LABEL, eventObj.get(KEY_EVENT_DISPLAY_LABEL)); assertEquals(EVENT_TYPE, eventObj.get(KEY_EVENT_TYPE)); eventName = eventObj.getString(KEY_EVENT_NAME); } finally { eventService.removeEvent(eventName); } } public void testPutRole() throws Exception { String eventName = GUID.generate(); eventService.addEvent(EVENT_TYPE, eventName, DISPLAY_LABEL); try { JSONObject obj = new JSONObject(); obj.put(KEY_EVENT_NAME, eventName); obj.put(KEY_EVENT_DISPLAY_LABEL, "changed"); obj.put(KEY_EVENT_TYPE, EVENT_TYPE); // Get the roles Response rsp = sendRequest(new PutRequest(GET_EVENTS_URL + "/" + eventName, obj.toString(), APPLICATION_JSON),200); String rspContent = rsp.getContentAsString(); JSONObject result = new JSONObject(rspContent); JSONObject eventObj = result.getJSONObject("data"); assertNotNull(eventObj); assertEquals(eventName, eventObj.get(KEY_EVENT_NAME)); assertEquals("changed", eventObj.get(KEY_EVENT_DISPLAY_LABEL)); assertEquals(EVENT_TYPE, eventObj.get(KEY_EVENT_TYPE)); // Bad requests obj = new JSONObject(); obj.put(KEY_EVENT_NAME, "cheese"); obj.put(KEY_EVENT_DISPLAY_LABEL, "whatever"); obj.put(KEY_EVENT_TYPE, EVENT_TYPE); sendRequest(new PutRequest(GET_EVENTS_URL + "/cheese", obj.toString(), APPLICATION_JSON), 404); } finally { // Clean up eventService.removeEvent(eventName); } } public void testGetRole() throws Exception { String eventName = GUID.generate(); eventService.addEvent(EVENT_TYPE, eventName, DISPLAY_LABEL); try { // Get the roles Response rsp = sendRequest(new GetRequest(GET_EVENTS_URL + "/" + eventName),200); String rspContent = rsp.getContentAsString(); JSONObject obj = new JSONObject(rspContent); JSONObject eventObj = obj.getJSONObject("data"); assertNotNull(eventObj); assertEquals(eventName, eventObj.get(KEY_EVENT_NAME)); assertEquals(DISPLAY_LABEL, eventObj.get(KEY_EVENT_DISPLAY_LABEL)); assertEquals(EVENT_TYPE, eventObj.get(KEY_EVENT_TYPE)); // Bad requests sendRequest(new GetRequest(GET_EVENTS_URL + "/cheese"), 404); } finally { // Clean up eventService.removeEvent(eventName); } } public void testDeleteRole() throws Exception { String eventName = GUID.generate(); assertFalse(eventService.existsEvent(eventName)); eventService.addEvent(EVENT_TYPE, eventName, DISPLAY_LABEL); assertTrue(eventService.existsEvent(eventName)); sendRequest(new DeleteRequest(GET_EVENTS_URL + "/" + eventName),200); assertFalse(eventService.existsEvent(eventName)); // Bad request sendRequest(new DeleteRequest(GET_EVENTS_URL + "/cheese"), 404); } }