Hi,
I am trying to test my pages that need authentication. But, I am not
able to test views that need authentication. I have tried following
threads about logging in test client in this group and django
documentation, but still cant figure out.
This my view I am trying to test:
def cauction(request)
if not request.user.is_authenticated():
print "redirecting" # printing this to check which if branch is
executing
print request.user
return HttpResponseRedirect('/login/?next=%s' % request.path)
else:
print "authenticated_branch" # printing this to check which if
branch is executing
errors = []
if not request.method == 'POST':
form = createAuction()
return render_to_response('createauction.html', {'form' : form} )
else:
form = createAuction(request.POST)
if form.is_valid():
cd = form.cleaned_data
uname = request.user.username
a_title = cd['title']
a_desc = cd['description']
a_minprice = cd['min_price']
a_end_date = cd['end_date']
a_start_date = datetime.datetime.now()
if not a_end_date > a_start_date:
e = _('End date should be greater than start date.')
errors.append(e)
else:
dt = a_end_date - a_start_date
day = dt.days
total_secs=dt.seconds
secs = total_secs % 60
total_mins = total_secs / 60
mins = total_mins % 60
hours = total_mins / 60
th = hours + (day * 24)
if th > 72 or th == 72:
uname = request.user.username
form = confAuction()
return render_to_response('wizardTest.html', {'form' :
form,
'a_title' : a_title, 'a_desc' : a_desc,'a_start-date' : a_start_date,
'a_end_date' : a_end_date, 'a_minprice' : a_minprice, 'uname' :
uname})
else:
e = _('Auction duration should be at least 72 hours')
errors.append(e)
else:
e = _('Enter Valid data')
errors.append(e)
return render_to_response('createauction.html', {'form' : form,
'errors' : errors})
This view is called by this pattern in urls.py
urlpatterns = patterns('',('^$', yaas_homepage) ,
(r'^createauction/$', cauction), ...)
This is my tests.py
import unittest
from django.test.client import Client
from django.test import Client, TestCase
from django.contrib.auth import authenticate
from django.contrib.auth.models import *
from django.core import mail
import datetime
import time
class SimpleTest(TestCase):
fixtures = ['f1.json']
def setUp(self): # Every test needs a client
self.client = Client()
def test_create(self):
response = self.client.get('/createauction/')
# Check that it takes to login page if not logged n
self.failUnlessEqual(response.status_code, 302)
self.assertRedirects(response, '/login/?next=/createauction/')
# i have created a user here again as some threads suggested that I
should make a user here.
user = User.objects.create_user(username = 'myadmin2', email
='[email protected]', password = 'testing2')
uid = user.id
user.is_staff = True
user.save()
print "trying to login..."
login = self.client.login(username='myadmin2',
password='testing2')
self.failUnless(login, True)
self.assertEqual( login, True) # this test does not fail,
means user has logged in succefully and login is True
enddate = datetime.datetime(2010, 06, 04, 3, 45, 50)
post_data = {
'title' : 'Title1',
'desc' : 'description',
'start-date' : datetime.datetime.now() ,
'end_date' : enddate,
'owner' : user.id,
'price' : 60,
'highbid' : 60,
'banned' : False,
'closed' : True,
}
r = c.post('/createauction/', post_data)
self.failUnlessEqual(r.status_code, 200) # this test fails, as
status_code returned is 302
These tests are run successully, meaning the user is redirected to
login page, implying that client never enters the else branch for
authenticated user in the 'cauction' view.
self.failUnlessEqual(r.status_code, 302)
self.assertRedirects(response, '/login/?next=/createauction/')
I have put in more than a day in this problem, trying to figure out
where I am going wrong. I have tried to explain clearly here. Any one
has any idea?
Thanks,
irum
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en.