I should test login functionality for this Django project, but it seems it can't login properly. This is the login method on views.py
def login_request(request):
if request.method == "POST":
form = AuthenticationForm(request, data=request.POST)
if form.is_valid():
username = form.cleaned_data.get('username')
password = form.cleaned_data.get('password')
user = authenticate(username=username, password=password)
request.session['username'] = username # Session test
if user is not None:
login(request, user)
messages.info(request, "You are now logged in as {username}.")
# Redirect da login alla dashboard dell'utente
return redirect("dashboard")
else:
messages.error("Invalis User")
#return render(request=request, template_name="dashboard.html", context={})
else:
messages.error(request, "Invalid username or password.")
form = AuthenticationForm()
return render(request=request, template_name="login.html", context={"login_form": form})
After login, it redirects to the dashboard which shows boards linked to the user, with this code
def dashboard(request):
usern = request.session.get('username')
userlog = User.objects.get(username=usern)
boards = BoardMember.objects.all().filter(user=userlog)
return render(request, "dashboard.html", {'board': boards,
'user': userlog})
Everything works fine, but when I test it in TestCase the error is "User matching query does not exist", test code is:
class ViewsTestCase(TestCase):
def setUp(self):
User.objects.create(username="Paolo", password="Paolo")
self.client = Client()
def test_getLogin(self):
response = self.client.get("/")
self.assertEqual(response.status_code, 200)
def test_login(self):
username = "Paolo"
password = "Paolo"
response = self.client.post("/dashboard/",
{
'username': username,
'password': password
})
self.assertEqual(response.status_code, 200)
user = User.objects.get(username="Paolo")
session = self.client.session
"""self.assertEqual(session['username'], username)
self.assertEqual(session['user_id'], user.id)
self.assertEqual(session['logged'], True)"""
Complete traceback:
Traceback (most recent call last):
File "/tests.py", line 52, in test_login
response = self.client.post("/dashboard/",
File "venv/lib/python3.8/site- packages/django/test/client.py", line 543, in post
response = super().post(path, data=data, content_type=content_type, secure=secure, **extra)
File "/venv/lib/python3.8/site-packages/django/test/client.py", line 356, in post
return self.generic('POST', path, post_data, content_type,
File "/venv/lib/python3.8/site-packages/django/test/client.py", line 422, in generic
return self.request(**r)
File "/venv/lib/python3.8/site-packages/django/test/client.py", line 503, in request
raise exc_value
File “/venv/lib/python3.8/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/venv/lib/python3.8/site-packages/django/core/handlers/base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File “/venv/lib/python3.8/site-packages/django/core/handlers/base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/views.py", line 56, in dashboard
userlog = User.objects.get(username=usern)
File "/venv/lib/python3.8/site-packages/django/db/models/manager.py", line 82, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File “/venv/lib/python3.8/site-packages/django/db/models/query.py", line 406, in get
raise self.model.DoesNotExist(
ISW_ScrumBoard.models.User.DoesNotExist: User matching query does not exist.