Skip to content
Snippets Groups Projects
test_view_login.py 1.71 KiB
Newer Older
from django.contrib import auth as django_auth
from django.test import Client
from django.test import TestCase
from django.urls import reverse

from functions import create_user
from web.models import Worker


class TestLoginView(TestCase):
    def test_login(self):
        self.client = Client()
        user = create_user()
        password = 'top_secret'
        username = user.username
        login_url = reverse('web.views.login')
        self.assertFalse(django_auth.get_user(self.client).is_authenticated())
        response = self.client.post(login_url, data={'username': username, 'password': password}, follow=True)
        self.assertEqual(200, response.status_code)
        self.assertTrue(django_auth.get_user(self.client).is_authenticated())
        worker = Worker.get_by_user(user)
        self.assertIsNotNone(worker)
        worker.last_name = 'Grouès'
        worker.save()
        response = self.client.post(login_url, data={'username': username, 'password': password}, follow=True)
        self.assertEqual(200, response.status_code)

    def test_login_failed(self):
        self.client = Client()
        user = create_user()
        username = user.username
        login_url = reverse('web.views.login')
        response = self.client.post(login_url, data={'username': username, 'password': 'wrong_password'}, follow=False)
        self.assertEqual(302, response.status_code)
        self.assertEqual('/login?error=login_failed', response.url)
        self.assertFalse(django_auth.get_user(self.client).is_authenticated())

    def test_logout(self):
        self.test_login()
        self.client.get(reverse('web.views.logout'))
        self.assertFalse(django_auth.get_user(self.client).is_authenticated())