diff --git a/colab/accounts/tests/test_request.py b/colab/accounts/tests/test_request.py index d16d99b..15eb538 100644 --- a/colab/accounts/tests/test_request.py +++ b/colab/accounts/tests/test_request.py @@ -18,19 +18,50 @@ class RequestTest(TestCase): # TODO pass + def create_user(self): + self.user_test = User() + self.user_test.username = "usertest" + self.user_test.email = "usertest@colab.com.br" + self.user_test.set_password("1234colab") + self.user_test.save() + def test_invalid_user_profile_url(self): response = self.client.get('/account/johndoe/') self.assertEqual(404, response.status_code) def test_valid_user_profile_url(self): - self.userTest = User() - self.userTest.username = "usertest" - self.userTest.email = "usertest@colab.com.br" - self.userTest.set_password("1234colab") - self.userTest.save() + self.create_user() response = self.client.get('/account/usertest/') self.assertEqual(200, response.status_code) def test_valid_login_url(self): response = self.client.get('/account/login') self.assertEqual(200, response.status_code) + + def test_myaccount_redirect_not_authenticated_user(self): + self.create_user() + response = self.client.get('/myaccount/edit') + self.assertEqual(404, response.status_code) + + def test_myaccount_redirect_user_profile(self): + self.create_user() + self.client.login(username="usertest", password='1234colab') + response = self.client.get('/myaccount/') + self.assertEqual(302, response.status_code) + self.assertEqual("http://testserver/account/usertest/", response.url) + + def test_myaccount_redirect_edit(self): + self.create_user() + self.client.login(username="usertest", password='1234colab') + response = self.client.get('/myaccount/edit') + self.assertEqual(302, response.status_code) + self.assertEqual("http://testserver/account/usertest/edit", + response.url) + + def test_myaccount_redirect_subscriptions(self): + self.create_user() + self.client.login(username="usertest", password='1234colab') + response = self.client.get('/myaccount/subscriptions') + self.assertEqual(302, response.status_code) + self.assertEqual("http://testserver/account/usertest/subscriptions", + response.url) diff --git a/colab/accounts/views.py b/colab/accounts/views.py index f8bc8d3..4cc6f15 100644 --- a/colab/accounts/views.py +++ b/colab/accounts/views.py @@ -11,6 +11,7 @@ from django.shortcuts import render, redirect, get_object_or_404 from django.core.urlresolvers import reverse from django.core.exceptions import PermissionDenied from django.views.generic import DetailView, UpdateView, TemplateView +from django.http import Http404 from conversejs import xmpp from conversejs.models import XMPPAccount @@ -272,3 +273,13 @@ def password_reset_complete_custom(request): messages.success(request, msg) return redirect('home') + + +def myaccount_redirect(request, route): + if not request.user.is_authenticated(): + raise Http404() + + username = request.user.username + url = "/account/" + username + "/" + route + + return redirect(url) diff --git a/colab/urls.py b/colab/urls.py index 51b0bfc..e7d048d 100644 --- a/colab/urls.py +++ b/colab/urls.py @@ -28,6 +28,8 @@ urlpatterns = patterns( # (same here) TODO: move to nginx url(r'^signup/', include('colab.accounts.urls')), url(r'^account/', include('colab.accounts.urls')), + url(r'^myaccount/(?P[\w@+.-/?]*)$', + 'colab.accounts.views.myaccount_redirect',name='myaccount' ), url(r'', include('django_browserid.urls')), -- libgit2 0.21.2