Skip to content

Commit

Permalink
LUI-156: Custom extension on user form | Fix error response code.
Browse files Browse the repository at this point in the history
  • Loading branch information
PremnishaTW committed Apr 21, 2020
1 parent 50a0b83 commit c864fda
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,6 @@
*/
package org.openmrs.web.controller.user;

import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.Vector;

import javax.servlet.http.HttpSession;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.openmrs.Person;
Expand All @@ -35,6 +28,7 @@
import org.openmrs.web.WebConstants;
import org.openmrs.web.user.UserProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.util.StringUtils;
Expand All @@ -47,6 +41,13 @@
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.context.request.WebRequest;

import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.Vector;

/**
* Used for creating/editing User
*/
Expand Down Expand Up @@ -109,7 +110,7 @@ public String showForm(@RequestParam(required = false, value = "userId") Integer
@RequestParam(required = false, value = "createNewPerson") String createNewPerson,
@ModelAttribute("user") User user, ModelMap model) {

// the formBackingObject method above sets up user, depending on userId and personId parameters
// the formBackingObject method above sets up user, depending on userId and personId parameters

model.addAttribute("isNewUser", isNewUser(user));
if (isNewUser(user) || Context.hasPrivilege(PrivilegeConstants.EDIT_USER_PASSWORDS)) {
Expand Down Expand Up @@ -153,7 +154,7 @@ public String handleSubmission(WebRequest request, HttpSession httpSession, Mode
@RequestParam(required = false, value = "roleStrings") String[] roles,
@RequestParam(required = false, value = "createNewPerson") String createNewPerson,
@RequestParam(required = false, value = "providerCheckBox") String addToProviderTableOption,
@ModelAttribute("user") User user, BindingResult errors) {
@ModelAttribute("user") User user, BindingResult errors, HttpServletResponse response) {

UserService us = Context.getUserService();
MessageSourceService mss = Context.getMessageSourceService();
Expand Down Expand Up @@ -273,6 +274,7 @@ public String handleSubmission(WebRequest request, HttpSession httpSession, Mode
userValidator.validate(user, errors);

if (errors.hasErrors()) {
response.setStatus(HttpStatus.BAD_REQUEST.value());
return showForm(user.getUserId(), createNewPerson, user, model);
}

Expand Down
6 changes: 6 additions & 0 deletions omod/src/main/webapp/admin/users/userForm.jsp
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,12 @@
</tr>
</c:if>
<tr><td colspan="2">&nbsp;</td></tr>

<tr>
<openmrs:extensionPoint pointId="org.openmrs.userForm.custom.extension" type="html"
parameters="userId=${user.userId}">
</openmrs:extensionPoint>
</tr>

<tr>
<td valign="top"><openmrs:message code="User.roles"/></td>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,21 @@

import org.junit.Assert;
import org.junit.Test;
import org.mockito.Mock;
import org.openmrs.PersonName;
import org.openmrs.User;
import org.openmrs.api.context.Context;
import org.openmrs.test.Verifies;
import org.openmrs.web.test.BaseModuleWebContextSensitiveTest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.mock.web.MockHttpSession;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindException;
import org.springframework.web.context.request.ServletWebRequest;
import org.springframework.web.context.request.WebRequest;
import javax.servlet.http.HttpServletResponse;

/**
* Tests the {@link oldUserFormController} class.
Expand All @@ -36,25 +39,26 @@ public class UserFormControllerTest extends BaseModuleWebContextSensitiveTest {

/**
* @see UserFormController#handleSubmission(WebRequest,HttpSession,String,String,String,null,
* String, User,BindingResult)
* String, User,BindingResult, HttpServletResponse)
*/
@Test
@Verifies(value = "should work for an example", method = "handleSubmission(WebRequest,HttpSession,String,String,String,null, String, User,BindingResult)")
@Verifies(value = "should work for an example", method = "handleSubmission(WebRequest,HttpSession,String,String,String,null, String, User,BindingResult, HttpServletResponse)")
public void handleSubmission_shouldWorkForAnExample() throws Exception {
WebRequest request = new ServletWebRequest(new MockHttpServletRequest());
User user = controller.formBackingObject(request, null);
user.addName(new PersonName("This", "is", "Test"));
user.getPerson().setGender("F");
controller.handleSubmission(request, new MockHttpSession(), new ModelMap(), "", "Save User", "pass123", "pass123",
null, null, null, new String[0], "true", null, user, new BindException(user, "user"));
null, null, null, new String[0], "true", null, user, new BindException(user, "user"),
new MockHttpServletResponse());
}

/**
* @see UserFormController#handleSubmission(WebRequest,HttpSession,String,String,String,null,
* String, User,BindingResult)
* String, User,BindingResult,HttpServletResponse)
*/
@Test
@Verifies(value = "Creates Provider Account when Provider Account Checkbox is selected", method = "handleSubmission(WebRequest,HttpSession,String,String,String,null, String, User,BindingResult)")
@Verifies(value = "Creates Provider Account when Provider Account Checkbox is selected", method = "handleSubmission(WebRequest,HttpSession,String,String,String,null, String, User, BindingResult, HttpServletResponse)")
public void handleSubmission_createUserProviderAccountWhenProviderAccountCheckboxIsSelected() throws Exception {
executeDataSet(TEST_DATA);
WebRequest request = new ServletWebRequest(new MockHttpServletRequest());
Expand All @@ -63,11 +67,26 @@ public void handleSubmission_createUserProviderAccountWhenProviderAccountCheckbo
Assert.assertTrue(Context.getProviderService().getProvidersByPerson(user.getPerson()).isEmpty());
ModelMap model = new ModelMap();
model.addAttribute("isProvider", false);
MockHttpServletResponse response = new MockHttpServletResponse();
controller.showForm(2, "true", user, model);
controller.handleSubmission(request, new MockHttpSession(), new ModelMap(), "", null, "Test1234",
"valid secret question", "valid secret answer", "Test1234", false, new String[] { "Provider" }, "true",
"addToProviderTable", user, new BindException(user, "user"));
"addToProviderTable", user, new BindException(user, "user"), response);
Assert.assertFalse(Context.getProviderService().getProvidersByPerson(user.getPerson()).isEmpty());
Assert.assertEquals(200, response.getStatus());
}

@Test
public void shouldSetResponseStatusToBadRequestOnError() throws Exception {
executeDataSet(TEST_DATA);
WebRequest request = new ServletWebRequest(new MockHttpServletRequest());
//A user with userId=2 is preset in the Test DataSet and the relevant details are passed
User user = Context.getUserService().getUser(2);
MockHttpServletResponse response = new MockHttpServletResponse();
controller.handleSubmission(request, new MockHttpSession(), new ModelMap(), "", null, "Test123",
"valid secret question", "valid secret answer", "Test1234", false, new String[] { "Provider" }, "true",
"addToProviderTable", user, new BindException(user, "user"), response);
Assert.assertEquals(400, response.getStatus());
}

}

0 comments on commit c864fda

Please sign in to comment.