[#5342] Fixed 500 error when viewing profile for missing user
Signed-off-by: Cory Johns <johnsca@geek.net>
diff --git a/Allura/allura/ext/user_profile/user_main.py b/Allura/allura/ext/user_profile/user_main.py
index f4a1abd..f631fd5 100644
--- a/Allura/allura/ext/user_profile/user_main.py
+++ b/Allura/allura/ext/user_profile/user_main.py
@@ -5,6 +5,7 @@
from pylons import c, g, request
from formencode import validators
from tg import expose, redirect, validate, response
+from webob import exc
from allura import version
from allura.app import Application
@@ -59,7 +60,10 @@
@expose('jinja:allura.ext.user_profile:templates/user_index.html')
def index(self, **kw):
- return dict(user=c.project.user_project_of)
+ user = c.project.user_project_of
+ if not user:
+ raise exc.HTTPNotFound()
+ return dict(user=user)
# This will be fully implemented in a future iteration
# @expose('jinja:allura.ext.user_profile:templates/user_subscriptions.html')
# def subscriptions(self):
diff --git a/Allura/allura/tests/functional/test_user_profile.py b/Allura/allura/tests/functional/test_user_profile.py
index 4c6ebcd..fcea8b4 100644
--- a/Allura/allura/tests/functional/test_user_profile.py
+++ b/Allura/allura/tests/functional/test_user_profile.py
@@ -1,5 +1,6 @@
from formencode.variabledecode import variable_encode
+from allura.model import Project, User
from allura.tests import decorators as td
from allura.tests import TestController
@@ -24,6 +25,14 @@
response = self.app.get('/u/test-user/profile/')
assert 'Email Addresses' not in response
+ @td.with_user_project('test-user')
+ def test_missing_user(self):
+ User.query.remove(dict(username='test-user'))
+ p = Project.query.get(shortname='u/test-user')
+ assert p is not None and p.is_user_project
+ response = self.app.get('/u/test-user/profile/', status=404)
+ assert 'Email Addresses' not in response
+
@td.with_user_project('test-admin')
@td.with_wiki
def test_feed(self):