@Test public void shouldFailIfLoginFormIsNotValid() { //given RedirectAttributesModelMap map = new RedirectAttributesModelMap(); MapBindingResult bindingResult = new MapBindingResult(new HashMap<String, Object>(), "loginForm"); bindingResult.addError(new FieldError("test", "test", "test")); LoginForm loginForm = new LoginForm(); loginForm.setLoginFormUrl("url"); //when String path = controller.login(loginForm, bindingResult, map, new MockHttpServletRequest(), new MockHttpServletResponse()); //then assertEquals(bindingResult.getAllErrors(), map.getFlashAttributes().get("errors")); assertEquals("redirect:url", path); }
@Test public void shouldFailRequestIfCannotLogin() { //given RedirectAttributesModelMap map = new RedirectAttributesModelMap(); MapBindingResult bindingResult = new MapBindingResult(new HashMap<String, Object>(), "loginForm"); LoginForm loginForm = new LoginForm(); when(securityProvider.validate(any(LoginForm.class), any(HttpServletRequest.class), any(HttpServletResponse.class))).thenReturn(false); //when controller.login(loginForm, bindingResult, map, new MockHttpServletRequest(), new MockHttpServletResponse()); //then assertTrue(map.getFlashAttributes().containsKey("errors")); List<ObjectError> errors = (List<ObjectError>) map.getFlashAttributes().get("errors"); assertEquals("login.failed", errors.get(0).getCode()); assertTrue(errors.size() == 1); }
private String reserveTicket(String eventName) { ReservationForm reservationForm = new ReservationForm(); MockHttpServletRequest request = new MockHttpServletRequest(); request.setMethod("POST"); ServletWebRequest servletWebRequest = new ServletWebRequest(request); BindingResult bindingResult = new BeanPropertyBindingResult(reservationForm, "reservation"); Model model = new BindingAwareModelMap(); RedirectAttributes redirectAttributes = new RedirectAttributesModelMap(); TicketReservationModification ticketReservation = new TicketReservationModification(); ticketReservation.setAmount(1); ticketReservation.setTicketCategoryId(ticketCategoryRepository.findByEventId(event.getId()).stream().findFirst().map(TicketCategory::getId).orElseThrow(IllegalStateException::new)); reservationForm.setReservation(Collections.singletonList(ticketReservation)); return eventController.reserveTicket(eventName, reservationForm, bindingResult, model, servletWebRequest, redirectAttributes, Locale.ENGLISH); }
@Override public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception { DataBinder dataBinder = binderFactory.createBinder(webRequest, null, null); ModelMap redirectAttributes = new RedirectAttributesModelMap(dataBinder); mavContainer.setRedirectModel(redirectAttributes); return redirectAttributes; }
@Test public void returnViewNameRedirect() throws Exception { ModelMap redirectModel = new RedirectAttributesModelMap(); this.mavContainer.setRedirectModel(redirectModel); this.handler.handleReturnValue("redirect:testView", this.param, this.mavContainer, this.webRequest); assertEquals("redirect:testView", this.mavContainer.getViewName()); assertSame(redirectModel, this.mavContainer.getModel()); }
@Test public void returnViewCustomRedirect() throws Exception { ModelMap redirectModel = new RedirectAttributesModelMap(); this.mavContainer.setRedirectModel(redirectModel); this.handler.setRedirectPatterns("myRedirect:*"); this.handler.handleReturnValue("myRedirect:testView", this.param, this.mavContainer, this.webRequest); assertEquals("myRedirect:testView", this.mavContainer.getViewName()); assertSame(redirectModel, this.mavContainer.getModel()); }
@Test public void returnViewRedirectWithCustomRedirectPattern() throws Exception { ModelMap redirectModel = new RedirectAttributesModelMap(); this.mavContainer.setRedirectModel(redirectModel); this.handler.setRedirectPatterns("myRedirect:*"); this.handler.handleReturnValue("redirect:testView", this.param, this.mavContainer, this.webRequest); assertEquals("redirect:testView", this.mavContainer.getViewName()); assertSame(redirectModel, this.mavContainer.getModel()); }
@Test public void handleRedirectAttributesWithViewReference() throws Exception { RedirectAttributesModelMap redirectAttributes = new RedirectAttributesModelMap(); mavContainer.setRedirectModel(redirectAttributes); ModelAndView mav = new ModelAndView(new RedirectView(), "attrName", "attrValue"); handler.handleReturnValue(mav, returnParamModelAndView, mavContainer, webRequest); assertEquals(RedirectView.class, mavContainer.getView().getClass()); assertEquals("attrValue", mavContainer.getModel().get("attrName")); assertSame("RedirectAttributes should be used if controller redirects", redirectAttributes, mavContainer.getModel()); }
@Test public void handleRedirectAttributesWithViewName() throws Exception { RedirectAttributesModelMap redirectAttributes = new RedirectAttributesModelMap(); mavContainer.setRedirectModel(redirectAttributes); ModelAndView mav = new ModelAndView("redirect:viewName", "attrName", "attrValue"); handler.handleReturnValue(mav, returnParamModelAndView, mavContainer, webRequest); ModelMap model = mavContainer.getModel(); assertEquals("redirect:viewName", mavContainer.getViewName()); assertEquals("attrValue", model.get("attrName")); assertSame(redirectAttributes, model); }
@Test public void handleRedirectAttributesWithCustomPrefix() throws Exception { RedirectAttributesModelMap redirectAttributes = new RedirectAttributesModelMap(); mavContainer.setRedirectModel(redirectAttributes); ModelAndView mav = new ModelAndView("myRedirect:viewName", "attrName", "attrValue"); handler.setRedirectPatterns("myRedirect:*"); handler.handleReturnValue(mav, returnParamModelAndView, mavContainer, webRequest); ModelMap model = mavContainer.getModel(); assertEquals("myRedirect:viewName", mavContainer.getViewName()); assertEquals("attrValue", model.get("attrName")); assertSame(redirectAttributes, model); }
@Test public void handleRedirectAttributesWithoutRedirect() throws Exception { RedirectAttributesModelMap redirectAttributes = new RedirectAttributesModelMap(); mavContainer.setRedirectModel(redirectAttributes); ModelAndView mav = new ModelAndView(); handler.handleReturnValue(mav, returnParamModelAndView, mavContainer, webRequest); ModelMap model = mavContainer.getModel(); assertEquals(null, mavContainer.getView()); assertTrue(mavContainer.getModel().isEmpty()); assertNotSame("RedirectAttributes should not be used if controller doesn't redirect", redirectAttributes, model); }
@Test public void returnViewRedirect() throws Exception { RedirectView redirectView = new RedirectView("testView"); ModelMap redirectModel = new RedirectAttributesModelMap(); this.mavContainer.setRedirectModel(redirectModel); MethodParameter param = createReturnValueParam("view"); this.handler.handleReturnValue(redirectView, param, this.mavContainer, this.webRequest); assertSame(redirectView, this.mavContainer.getView()); assertSame("Should have switched to the RedirectModel", redirectModel, this.mavContainer.getModel()); }
@Test public void shouldLoginSuccessfullyAndRedirect() { //given LoginForm form = new LoginForm(); RedirectAttributesModelMap map = new RedirectAttributesModelMap(); MapBindingResult bindingResult = new MapBindingResult(new HashMap<String, Object>(), "loginForm"); doReturn(true).when(securityProvider).validate(eq(form), any(HttpServletRequest.class), any(HttpServletResponse.class)); //when String path = controller.login(form, bindingResult, map, new MockHttpServletRequest(), new MockHttpServletResponse()); //then assertEquals("redirect:path", path); }
public Object resolveArgument( MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception { DataBinder dataBinder = binderFactory.createBinder(webRequest, null, null); ModelMap redirectAttributes = new RedirectAttributesModelMap(dataBinder); mavContainer.setRedirectModel(redirectAttributes); return redirectAttributes; }
@Test public void returnViewNameRedirect() throws Exception { ModelMap redirectModel = new RedirectAttributesModelMap(); this.mavContainer.setRedirectModel(redirectModel); MethodParameter param = createReturnValueParam("viewName"); this.handler.handleReturnValue("redirect:testView", param, this.mavContainer, this.webRequest); assertEquals("redirect:testView", this.mavContainer.getViewName()); assertSame("Should have switched to the RedirectModel", redirectModel, this.mavContainer.getModel()); }
@Test public void handleRedirectAttributesWithViewInstance() throws Exception { RedirectAttributesModelMap redirectAttributes = new RedirectAttributesModelMap(); mavContainer.setRedirectModel(redirectAttributes); ModelAndView mav = new ModelAndView("redirect:viewName", "attrName", "attrValue"); handler.handleReturnValue(mav, returnParamModelAndView, mavContainer, webRequest); ModelMap model = mavContainer.getModel(); assertEquals("redirect:viewName", mavContainer.getViewName()); assertEquals("attrValue", model.get("attrName")); assertSame("RedirectAttributes should be used if controller redirects", redirectAttributes, model); }
@RequiresUser @RequestMapping(value = "/save", method = RequestMethod.POST) public String saveUpload(@RequestParam(value = "file", required = true) MultipartFile file, @RequestParam(value = "privateFile", required = false, defaultValue = "false") final boolean privateFile, @RequestParam(value = "description", required = false, defaultValue = "") final String description, RedirectAttributesModelMap redirectAttributesModelMap) throws Exception { // final String creator = SecurityUtils2.getUsername(); // if (file.isEmpty()) { throw new Exception("PLEASE SELECT A FILE."); } else { Closer closer = Closer.create(); try { final String mime = file.getContentType(); final String name = file.getOriginalFilename(); // InputStream in = file.getInputStream(); closer.register(in); // Optional<FileEntry> fe = fileStoreService.save(name, mime, creator, privateFile, description, in); if (fe.isPresent() == false) { throw new Exception("FILE SAVE FAILED?!"); } // flashmap-alert. flashAlerts.add(redirectAttributesModelMap, new FlashAlerts.FlashAlert(BootstrapAlertTypes.INFO, "File Saved.")); // return String.format("redirect:./info/%s", fe.get().getId()); } finally { closer.close(); } } }
@RequiresUser @RequestMapping(value = "/post", method = {RequestMethod.POST}) public View savePage(RedirectAttributesModelMap redirectAttributesModelMap, @RequestParam(value = "title", required = true) final String title, @RequestParam(value = "content", required = true) final String content, @RequestParam(value = "aclForEveryone", required = false, defaultValue = "") final String aclForEveryone, @RequestParam(value = "aclRUser", required = false) List<String> aclRUser, @RequestParam(value = "aclWUser", required = false) List<String> aclWUser, @RequestParam(value = "aclRGroup", required = false) List<String> aclRGroup, @RequestParam(value = "aclWGroup", required = false) List<String> aclWGroup, @RequestParam(value = "tag", required = false) List<String> tags, @RequestParam(value = "origVersion", defaultValue = "", required = false) final String origVersion ) throws Exception { // boolean jumped = false; PageContent pageContentParent = null; Page p = null; if (pageService.existsByTitle(title)) { p = pageService.getPageByTitle(title).get(); // check-acl pageAclService.checkWritable(p); // ObjectId origVersion_ = new ObjectId(origVersion); if (false == p.getCurrent().getId().equals(origVersion_)) { jumped = true; flashAlerts.add(redirectAttributesModelMap, new FlashAlerts.FlashAlert(BootstrapAlertTypes.WARNING, "Page Content has JUMPED! (maybe there's unmerged changes, check page versions.)")); Optional<PageContent> pageContentParent_ = pageContentService.load(origVersion_); if (pageContentParent_.isPresent()) { pageContentParent = pageContentParent_.get(); } else { LOG.warn(String.format("MISSING PARENT!!! -- parent=[%s], SKIP.", origVersion_.toString())); } } else { pageContentParent = p.getCurrent(); } } else { // check-acl pageAclService.checkWritable(null); // p = pageService.createByTitle(title); } // PageContent pageContent = new PageContent(); pageContent.setContent(content); pageContent.setCtime(new Date()); pageContent.setPage(p); if (pageContentParent != null) { pageContent.setParent(pageContentParent); } Optional<User> u = SecurityUtils2.getUser(userService); if (u.isPresent()) { pageContent.setCreator(u.get()); } // WikiSignatureExpandFunction wikiSignatureExpandFunction = new WikiSignatureExpandFunction(timeZoneService, u); pageContent.setContent(wikiSignatureExpandFunction.apply(pageContent.getContent())); // pageContentService.save(pageContent); // pageService.addContent(pageContent); p.setCurrent(pageContent); // p.setAclForEveryone(aclForEveryone); p.setReadables(gatherUserAuthentications(aclRGroup, aclRUser)); p.setWritables(gatherUserAuthentications(aclWGroup, aclWUser)); setPageTags(p, tags); // pageService.update(p); // return redirectHelper.redirectToPageView(title); }
@RequestMapping(value = "/unauthenticated") public RedirectView unauthenticated(RedirectAttributesModelMap redirectAttributesModelMap) { flashAlerts.add(redirectAttributesModelMap, new FlashAlerts.FlashAlert(BootstrapAlertTypes.DANGER, "Unauthenticated!")); return new RedirectView(String.format("%s/a/user/loginForm", WebappPath.getWebappPath())); }