I have custom login page for admin in my Django project. I am trying to write unit-test
but it raise error. After successful login Django redirect user to other page (dashboard page). In my unit test dont work assertRedirects
. How to fix this problem?
print reverse('administration:dashboard')
return me /administration/
but I have strange error. Can someone say whats wrong I did?
tests.py:
class AdministrationViewTestCase(TestCase):
def setUp(self):
self.client = Client()
def test_administration_login(self):
response = self.client.get(
reverse('administration:administration_login'),
follow=True
)
self.assertEquals(response.status_code, 200)
title = "Login"
self.assertTrue(title in response.content)
user = User.objects.create(
username='user', password=make_password('password')
)
self.assertTrue(user)
logged_in = self.client.login(username='user', password="password")
self.assertTrue(logged_in)
response = self.client.post(
reverse('administration:administration_login')
)
self.assertEqual(response.status_code, 302)
self.assertRedirects(
response,
expected_url=reverse('administration:dashboard'),
status_code=302,
target_status_code=200
)
ERROR:
Traceback (most recent call last):
File "/home/nurzhan/CA/administration/tests.py", line 41, in test_administration_login
target_status_code=200
File "/srv/envs/py27/lib/python2.7/site-packages/django/test/testcases.py", line 324, in assertRedirects
% (path, redirect_response.status_code, target_status_code)
AssertionError: Couldn't retrieve redirection page '/accounts/profile/': response code was 404 (expected 200)
urls.py of app:
urlpatterns = [
# Administration Dashboard
url(r'^$',
login_required(
login_url=reverse_lazy('administration:administration_login'))
(DashboardView.as_view()),
name='dashboard'),
# Administration Login
url(r'^login/$',
authentication_views.login,
{
'template_name': 'administration/login.html',
'authentication_form': AdministrationAuthenticationForm,
'extra_context': {
'next': reverse_lazy('administration:dashboard')
},
'redirect_authenticated_user': True
},
name='administration_login'),
]
urls.py of project:
urlpatterns = [
# Administration Page
url(r'^administration/',
include('administration.urls', namespace='administration')),
]