diff --git a/conntrackt/tests/test_views.py b/conntrackt/tests/test_views.py --- a/conntrackt/tests/test_views.py +++ b/conntrackt/tests/test_views.py @@ -94,7 +94,7 @@ class IndexViewTest(ViewTest): def test_locations_available(self): """ - Tests if locations are show or not. + Tests if locations are shown or not. """ self.client.login(username="fullperms", password="fullperms") @@ -568,3 +568,181 @@ class ProjectDeleteViewTest(TestCase): follow=True) self.assertContains(response, "Project Test Project 1 has been removed.") + + +class LocationCreateViewTest(TestCase): + + def setUp(self): + # Set-up web client. + self.client = Client() + + # Set-up users with different view permissions. + self.user = {} + self.user["fullperms"] = User.objects.create_user("fullperms", "fullperms@example.com", "fullperms") + self.user["fullperms"].user_permissions.add(Permission.objects.get(codename="add_location")) + self.user["noperms"] = User.objects.create_user("noperms", "noperms@example.com", "noperms") + + def test_permission_denied(self): + """ + Tests if permission will be denied for client without sufficient privileges. + """ + + self.client.login(username="noperms", password="noperms") + + response = self.client.get(reverse("location_create")) + + self.assertContains(response, "You have insufficient privileges to access this resource. Please contact your local system administrator if you believe you should have been granted access.", status_code=403) + + def test_permission_granted(self): + """ + Tests if permission will be granted for user with correct privileges. + """ + + self.client.login(username="fullperms", password="fullperms") + + response = self.client.get(reverse("location_create")) + + self.assertEqual(response.status_code, 200) + + def test_form_styling(self): + """ + Tests if proper form styling is being applied. + """ + + self.client.login(username="fullperms", password="fullperms") + + response = self.client.get(reverse("location_create")) + + self.assertContains(response, 'class="span6 textinput') + self.assertContains(response, 'class="span6 textarea') + self.assertContains(response, 'placeholder="New Location"') + self.assertContains(response, 'placeholder="Description for new location."') + + +class LocationUpdateViewTest(TestCase): + + fixtures = ['test-data.json'] + + def setUp(self): + # Set-up web client. + self.client = Client() + + # Set-up users with different view permissions. + self.user = {} + self.user["fullperms"] = User.objects.create_user("fullperms", "fullperms@example.com", "fullperms") + self.user["fullperms"].user_permissions.add(Permission.objects.get(codename="change_location")) + self.user["noperms"] = User.objects.create_user("noperms", "noperms@example.com", "noperms") + + def test_permission_denied(self): + """ + Tests if permission will be denied for client without sufficient privileges. + """ + + self.client.login(username="noperms", password="noperms") + + response = self.client.get(reverse("location_update", args=(1,))) + + self.assertContains(response, "You have insufficient privileges to access this resource. Please contact your local system administrator if you believe you should have been granted access.", status_code=403) + + def test_permission_granted(self): + """ + Tests if permission will be granted for user with correct privileges. + """ + + self.client.login(username="fullperms", password="fullperms") + + response = self.client.get(reverse("location_update", args=(1,))) + + self.assertEqual(response.status_code, 200) + + def test_form_styling(self): + """ + Tests if proper form styling is being applied. + """ + + self.client.login(username="fullperms", password="fullperms") + + response = self.client.get(reverse("location_update", args=(1,))) + + self.assertContains(response, 'class="span6 textinput') + self.assertContains(response, 'class="span6 textarea') + self.assertContains(response, 'placeholder="Location name"') + self.assertContains(response, 'placeholder="Description for location."') + + def test_content(self): + """ + Tests if the form comes pre-populated with proper content. + """ + + self.client.login(username="fullperms", password="fullperms") + + response = self.client.get(reverse("location_update", args=(1,))) + + self.assertContains(response, ">Edit location Test Location 1<") + self.assertContains(response, 'value="Test Location 1"') + self.assertContains(response, "This is a test location 1.") + + +class LocationDeleteViewTest(TestCase): + + fixtures = ['test-data.json'] + + def setUp(self): + # Set-up web client. + self.client = Client() + + # Set-up users with different view permissions. + self.user = {} + self.user["fullperms"] = User.objects.create_user("fullperms", "fullperms@example.com", "fullperms") + self.user["fullperms"].user_permissions.add(Permission.objects.get(codename="delete_location")) + self.user["fullperms"].user_permissions.add(Permission.objects.get(codename="view")) + self.user["noperms"] = User.objects.create_user("noperms", "noperms@example.com", "noperms") + + def test_permission_denied(self): + """ + Tests if permission will be denied for client without sufficient privileges. + """ + + self.client.login(username="noperms", password="noperms") + + response = self.client.get(reverse("location_delete", args=(1,))) + + self.assertContains(response, "You have insufficient privileges to access this resource. Please contact your local system administrator if you believe you should have been granted access.", status_code=403) + + def test_permission_granted(self): + """ + Tests if permission will be granted for user with correct privileges. + """ + + self.client.login(username="fullperms", password="fullperms") + + response = self.client.get(reverse("location_delete", args=(1,))) + + self.assertEqual(response.status_code, 200) + + def test_content(self): + """ + Tests if the form comes pre-populated with proper content. + """ + + self.client.login(username="fullperms", password="fullperms") + + response = self.client.get(reverse("location_delete", args=(1,))) + + self.assertContains(response, ">Remove location Test Location 1<") + self.assertContains(response, "Are you sure you want to remove this location?") + + def test_message(self): + """ + Tests if the message gets added when the location is deleted. + """ + + self.client.login(username="fullperms", password="fullperms") + + response = self.client.get(reverse("location_delete", args=(1,))) + + response = self.client.post(reverse("location_delete", args=(1,)), + {'csrfmiddlewaretoken': response.context['request'].META['CSRF_COOKIE']}, + follow=True) + + self.assertContains(response, "Location Test Location 1 has been removed.")