import datetime from django.test import TestCase, Client from django.urls import reverse_lazy from django.contrib.auth.models import User from lostplaces_app.models import Place from django.contrib.auth.models import User class TestIsAuthenticatedMixin(TestCase): @classmethod def setUpTestData(cls): user = User.objects.create_user( username='testpeter', password='Develop123' ) place = Place.objects.create( name='Im a place', submitted_when=datetime.datetime.now(), submitted_by=User.objects.get(username='testpeter').explorer, location='Testtown', latitude=50.5, longitude=7.0, description='This is just a test, do not worry' ) place.tags.add('I a tag', 'testlocation') place.save() def setUp(self): self. client = Client() def test_logged_in(self): self.client.login(username='testpeter', password='Develop123') response = self.client.get(reverse_lazy('place_detail', kwargs={'pk': 1})) self.assertEqual(response.status_code, 200) def test_not_logged_in(self): url = reverse_lazy('place_detail', kwargs={'pk': 1}) response = self.client.get(url, follow=True) self.assertRedirects( response=response, expected_url='?'.join([str(reverse_lazy('login')), 'next=/place/1/']), status_code=302, target_status_code=200, msg_prefix='''Accesing an IsAuthenticatedMixin view while not logged should redirect to login page with redirect params ''', fetch_redirect_response=True ) self.assertTrue(response.context['messages']) self.assertTrue(len(response.context['messages']) > 0) class TestIsPlaceSubmitterMixin(TestCase): @classmethod def setUpTestData(cls): user = User.objects.create_user( username='testpeter', password='Develop123' ) place = Place.objects.create( name='Im a place', submitted_when=datetime.datetime.now(), submitted_by=user.explorer, location='Testtown', latitude=50.5, longitude=7.0, description='This is just a test, do not worry' ) place.tags.add('I a tag', 'testlocation') place.save() def setUp(self): self. client = Client() def test_is_submitter(self): self.client.login(username='testpeter', password='Develop123') response = self.client.get(reverse_lazy('place_edit', kwargs={'pk': 1})) self.assertEqual(response.status_code, 200) def test_is_no_submitter(self): User.objects.create_user( username='manfred', password='Develop123' ) self.client.login(username='manfred', password='Develop123') response = self.client.get(reverse_lazy('place_edit', kwargs={'pk': 1})) self.assertEqual(response.status_code, 403) self.assertTrue(response.context['messages']) self.assertTrue(len(response.context['messages']) > 0)