Author: mfranklin
Date: Wed Dec 12 06:09:58 2012
New Revision: 1420533

URL: http://svn.apache.org/viewvc?rev=1420533&view=rev
Log:
Applying patch from Aaron Gooch RAVE-848

Modified:
    
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ProfileController.java
    
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/ProfileControllerTest.java

Modified: 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ProfileController.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ProfileController.java?rev=1420533&r1=1420532&r2=1420533&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ProfileController.java
 (original)
+++ 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/controller/ProfileController.java
 Wed Dec 12 06:09:58 2012
@@ -33,11 +33,13 @@ import org.apache.rave.portal.web.util.V
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
 @Controller
@@ -64,17 +66,14 @@ public class ProfileController {
         * @return the view name of the user profile page
         */
        @RequestMapping(value = {"/{username:.*}"}, method = RequestMethod.GET)
-       public String viewProfileByUsername(@PathVariable String username, 
ModelMap model, @RequestParam(required = false) String referringPageId) {
+       public String viewProfileByUsername(@PathVariable String username, 
ModelMap model, @RequestParam(required = false) String referringPageId, 
HttpServletResponse response) {
         User user = null;
         try{
             user = userService.getUserByUsername(username);
             logger.debug("Viewing person profile for: " + user.getUsername());
             return viewProfileCommon(user, model, referringPageId);
         }catch(Exception e){
-            addAttributesToModel(model, user, referringPageId);
-            String view = ViewNames.USER_NOT_FOUND;
-            addNavItemsToModel(view, model, referringPageId, user, null);
-            return view;
+            return profileNotFoundErrorHelper(model, referringPageId, 
response, user, e);
         }
        }
          /**
@@ -86,20 +85,35 @@ public class ProfileController {
                 * @return the view name of the user profile page
                 */
        @RequestMapping(value = {"/id/{userid:.*}"}, method = RequestMethod.GET)
-       public String viewProfile(@PathVariable String userid, ModelMap model, 
@RequestParam(required = false) String referringPageId) {
+       public String viewProfile(@PathVariable String userid, ModelMap model, 
@RequestParam(required = false) String referringPageId, HttpServletResponse 
response) {
         User user = null;
         try{
             user = userService.getUserById(userid);
             logger.debug("Viewing person profile for: " + user.getUsername());
             return viewProfileCommon(user, model, referringPageId);
         }catch (Exception e){
-            addAttributesToModel(model, user, referringPageId);
-            String view = ViewNames.USER_NOT_FOUND;
-            addNavItemsToModel(view, model, referringPageId, user, null);
-            return view;
+            return profileNotFoundErrorHelper(model, referringPageId, 
response, user, e);
         }
        }
 
+    /**
+     * Helper method to handle error when a person's profile is not found
+     * @param model Model map of values for view
+     * @param referringPageId String
+     * @param response HttpServletResponse object
+     * @param user User of page
+     * @param e Exception that was caught
+     * @return String of the viewname to render
+     */
+    private String profileNotFoundErrorHelper(ModelMap model, String 
referringPageId, HttpServletResponse response, User user, Exception e) {
+        logger.error("Caught an exception: " + e.getMessage());
+        addAttributesToModel(model, user, referringPageId);
+        response.setStatus(HttpStatus.NOT_FOUND.value());
+        String view = ViewNames.USER_NOT_FOUND;
+        addNavItemsToModel(view, model, referringPageId, user, null);
+        return view;
+    }
+
     private String viewProfileCommon(User user, ModelMap model, String 
referringPageId){
         Page personProfilePage = 
pageService.getPersonProfilePage(user.getId());
         addAttributesToModel(model, user, referringPageId);

Modified: 
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/ProfileControllerTest.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/ProfileControllerTest.java?rev=1420533&r1=1420532&r2=1420533&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/ProfileControllerTest.java
 (original)
+++ 
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/controller/ProfileControllerTest.java
 Wed Dec 12 06:09:58 2012
@@ -35,6 +35,8 @@ import org.apache.rave.portal.web.util.V
 import org.hamcrest.CoreMatchers;
 import org.junit.Before;
 import org.junit.Test;
+import org.springframework.http.HttpStatus;
+import org.springframework.mock.web.MockHttpServletResponse;
 import org.springframework.security.core.userdetails.UsernameNotFoundException;
 import org.springframework.ui.ModelMap;
 
@@ -55,7 +57,7 @@ public class ProfileControllerTest {
 
        private UserService userService;
        private PageService pageService;
-    private WidgetService widgetService;
+    private MockHttpServletResponse response;
 
     private Page defaultPage, otherPage;
     private List<Page> allProfilePages;
@@ -71,6 +73,7 @@ public class ProfileControllerTest {
        public void setup() {
                userService = createMock(UserService.class);
                pageService = createMock(PageService.class);
+        response = new MockHttpServletResponse();
                profileController = new ProfileController(userService, 
pageService);
 
         validPageLayout = new PageLayoutImpl();
@@ -111,7 +114,7 @@ public class ProfileControllerTest {
 
                replay(userService, pageService);
 
-               String view = profileController.viewProfileByUsername(username, 
model, null);
+               String view = profileController.viewProfileByUsername(username, 
model, null, response);
 
                //assert that the model is not null
                assertThat(model, CoreMatchers.notNullValue());
@@ -152,7 +155,7 @@ public class ProfileControllerTest {
 
                replay(userService, pageService);
 
-               String view = profileController.viewProfile(USER_ID, model, 
null);
+               String view = profileController.viewProfile(USER_ID, model, 
null, response);
 
                //assert that the model is not null
                assertThat(model, CoreMatchers.notNullValue());
@@ -187,8 +190,32 @@ public class ProfileControllerTest {
 
         replay(userService, pageService);
 
-        String view = profileController.viewProfileByUsername(username, model, 
null);
+        String view = profileController.viewProfileByUsername(username, model, 
null, response);
         assertThat(view, is(ViewNames.USER_NOT_FOUND));
+        assertThat(response.getStatus(), is(HttpStatus.NOT_FOUND.value()));
+
+        verify(userService, pageService);
+    }
+
+    @Test
+    public void viewProfile_invalidUser() {
+        //creating a mock user
+        final User user = null;
+        final ModelMap model = new ModelMap();
+        final int modelSize = 4;
+        final String username="Canonical";
+        Page personProfile = new PageImpl();
+        PageLayout pageLayout = new PageLayoutImpl();
+        pageLayout.setCode("person_profile");
+        personProfile.setPageLayout(pageLayout);
+
+        expect(userService.getUserById(username)).andThrow(new 
UsernameNotFoundException("Username does not exist"));
+
+        replay(userService, pageService);
+
+        String view = profileController.viewProfile(username, model, null, 
response);
+        assertThat(view, is(ViewNames.USER_NOT_FOUND));
+        assertThat(response.getStatus(), is(HttpStatus.NOT_FOUND.value()));
 
         verify(userService, pageService);
     }


Reply via email to