diff --git a/pom.xml b/pom.xml index 994104b1c..9bb69b978 100755 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ opensrp-server-web war - 2.9.5-SNAPSHOT + 2.9.6-SNAPSHOT opensrp-server-web OpenSRP Server Web Application https://github.com/OpenSRP/opensrp-server-web diff --git a/src/main/java/org/opensrp/web/config/security/SecurityConfig.java b/src/main/java/org/opensrp/web/config/security/SecurityConfig.java index e4bb1aa4a..811a26584 100644 --- a/src/main/java/org/opensrp/web/config/security/SecurityConfig.java +++ b/src/main/java/org/opensrp/web/config/security/SecurityConfig.java @@ -3,18 +3,6 @@ */ package org.opensrp.web.config.security; -import static org.springframework.http.HttpMethod.DELETE; -import static org.springframework.http.HttpMethod.GET; -import static org.springframework.http.HttpMethod.OPTIONS; -import static org.springframework.http.HttpMethod.POST; -import static org.springframework.http.HttpMethod.PUT; - -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.net.InetAddress; -import java.util.Arrays; - import org.apache.commons.lang3.StringUtils; import org.keycloak.adapters.KeycloakDeployment; import org.keycloak.adapters.KeycloakDeploymentBuilder; @@ -42,6 +30,13 @@ import org.springframework.web.cors.CorsConfigurationSource; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.util.Arrays; + +import static org.springframework.http.HttpMethod.*; + /** * @author Samuel Githengi created on 04/20/20 */ @@ -115,7 +110,7 @@ protected void configure(HttpSecurity http) throws Exception { .anyRequest().authenticated() .and() .csrf() - .ignoringAntMatchers("/rest/**","/multimedia/**") + .ignoringAntMatchers("/rest/**","/multimedia/**","/actions/**") .and() .logout() .logoutRequestMatcher(new AntPathRequestMatcher("logout.do", "GET")); diff --git a/src/main/java/org/opensrp/web/controller/ActionController.java b/src/main/java/org/opensrp/web/controller/ActionController.java index 6f98881b6..a9b11567e 100644 --- a/src/main/java/org/opensrp/web/controller/ActionController.java +++ b/src/main/java/org/opensrp/web/controller/ActionController.java @@ -1,36 +1,37 @@ package org.opensrp.web.controller; -import static org.opensrp.common.AllConstants.Event.PROVIDER_ID; -import static org.opensrp.web.rest.RestUtils.getIntegerFilter; -import static org.opensrp.web.rest.RestUtils.getStringFilter; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -import javax.servlet.http.HttpServletRequest; - +import com.google.gson.Gson; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.json.JSONException; +import org.json.JSONObject; import org.opensrp.common.AllConstants.BaseEntity; -import org.smartregister.domain.Client; import org.opensrp.dto.Action; import org.opensrp.repository.ClientsRepository; import org.opensrp.scheduler.Alert; import org.opensrp.scheduler.repository.AlertsRepository; import org.opensrp.scheduler.service.ActionService; +import org.smartregister.domain.Client; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; -import com.google.gson.Gson; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static org.opensrp.common.AllConstants.Event.PROVIDER_ID; +import static org.opensrp.web.rest.RestUtils.getIntegerFilter; +import static org.opensrp.web.rest.RestUtils.getStringFilter; @Controller public class ActionController { @@ -57,6 +58,22 @@ public List getNewActionForANM(@RequestParam("anmIdentifier") String anm return actions.stream().map(action -> ActionConvertor.from(action)).collect(Collectors.toList()); } + @RequestMapping(method = RequestMethod.POST, value = "/actions", produces = { MediaType.APPLICATION_JSON_VALUE }) + public List getNewActionForANMByPost(@RequestBody String requestBody) { + try { + JSONObject data = new JSONObject(requestBody); + String anmIdentifier = data.optString("anmIdentifier"); + long timeStamp = Long.parseLong(data.optString("timeStamp")); + + List actions = actionService.getNewAlertsForANM(anmIdentifier, timeStamp); + return actions.stream().map(action -> ActionConvertor.from(action)).collect(Collectors.toList()); + } + catch (JSONException e) { + logger.error(String.format("Invalid request body {0}", e)); + return new ArrayList<>(); + } + } + @RequestMapping(method = RequestMethod.GET, value = "/useractions", produces = { MediaType.APPLICATION_JSON_VALUE }) public List getNewActionForClient(@RequestParam("baseEntityId") String baseEntityId, @RequestParam("timeStamp") Long timeStamp) { diff --git a/src/test/java/org/opensrp/web/rest/EventResourceTest.java b/src/test/java/org/opensrp/web/rest/EventResourceTest.java index e01a5828b..532d91ef0 100755 --- a/src/test/java/org/opensrp/web/rest/EventResourceTest.java +++ b/src/test/java/org/opensrp/web/rest/EventResourceTest.java @@ -1,42 +1,9 @@ package org.opensrp.web.rest; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.ArgumentMatchers.isNull; -import static org.mockito.ArgumentMatchers.anyList; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.atMostOnce; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.doThrow; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.nullable; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; -import static org.opensrp.common.AllConstants.BaseEntity.BASE_ENTITY_ID; -import static org.opensrp.common.AllConstants.BaseEntity.SERVER_VERSIOIN; -import static org.opensrp.util.constants.EventConstants.CASE_NUMBER; -import static org.opensrp.util.constants.EventConstants.EVENT_TYPE_CASE_DETAILS; -import static org.opensrp.util.constants.EventConstants.FLAG; -import static org.opensrp.web.Constants.DEFAULT_GET_ALL_IDS_LIMIT; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Date; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - import com.fasterxml.jackson.databind.JsonNode; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.reflect.TypeToken; import org.apache.commons.lang3.tuple.Pair; import org.joda.time.DateTime; import org.json.JSONArray; @@ -45,36 +12,38 @@ import org.junit.Test; import org.mockito.ArgumentCaptor; import org.mockito.Captor; - -import static org.opensrp.common.AllConstants.Event.EVENT_TYPE; -import static org.opensrp.common.AllConstants.Event.PROVIDER_ID; -import static org.opensrp.common.AllConstants.Event.LOCATION_ID; -import static org.opensrp.common.AllConstants.Event.TEAM; -import static org.opensrp.common.AllConstants.Event.TEAM_ID; - import org.opensrp.domain.Multimedia; import org.opensrp.dto.ExportEventDataSummary; import org.opensrp.dto.ExportFlagProblemEventImageMetadata; import org.opensrp.dto.ExportImagesSummary; +import org.opensrp.search.EventSearchBean; +import org.opensrp.service.ClientService; +import org.opensrp.service.EventService; import org.opensrp.service.MultimediaService; import org.opensrp.service.PlanProcessingStatusService; import org.opensrp.util.constants.PlanProcessingStatusConstants; +import org.opensrp.web.bean.EventSyncBean; +import org.opensrp.web.bean.Identifier; import org.smartregister.domain.Client; import org.smartregister.domain.Event; -import org.opensrp.search.EventSearchBean; -import org.opensrp.service.ClientService; -import org.opensrp.service.EventService; import org.smartregister.utils.DateTimeTypeConverter; -import org.opensrp.web.bean.EventSyncBean; -import org.opensrp.web.bean.Identifier; import org.springframework.http.ResponseEntity; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.reflect.TypeToken; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import javax.servlet.http.HttpServletRequest; +import java.io.File; +import java.io.IOException; +import java.util.*; + +import static org.junit.Assert.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.nullable; +import static org.mockito.Mockito.*; +import static org.opensrp.common.AllConstants.BaseEntity.BASE_ENTITY_ID; +import static org.opensrp.common.AllConstants.BaseEntity.SERVER_VERSIOIN; +import static org.opensrp.common.AllConstants.Event.*; +import static org.opensrp.web.Constants.DEFAULT_GET_ALL_IDS_LIMIT; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; public class EventResourceTest extends BaseSecureResourceTest {