From 48abf000fcaf03f9276b15c60fd972cf91386870 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20G=C3=B6tz?= Date: Thu, 13 Jun 2019 01:42:15 +0200 Subject: [PATCH] Add realm detail and realm admin view tests --- src/account_manager/tests/test_views.py | 232 +++++++++++++++++++++++- 1 file changed, 231 insertions(+), 1 deletion(-) diff --git a/src/account_manager/tests/test_views.py b/src/account_manager/tests/test_views.py index 2f29802..3046310 100644 --- a/src/account_manager/tests/test_views.py +++ b/src/account_manager/tests/test_views.py @@ -1,6 +1,6 @@ import logging -from django.contrib.auth.models import User +from django.contrib.auth.models import User, Group from django.test import TestCase # Create your tests here. from django.urls import reverse @@ -198,3 +198,233 @@ class RealmAddViewTest(TestCase): self.assertContains(response, 'Das hinzufügen des Bereichs ist fehlgeschlagen.', status_code=409) self.client.logout() + + +class RealmDetailViewTest(TestCase): + + @classmethod + def setUpTestData(cls): + # User.objects.get_or_create(username="test", email="test@test.de") + User.objects.create_superuser( + username='test_superuser', + password=RealmDetailViewTest.get_password(), + email='test@test.de', + is_staff=True, + is_superuser=True, + is_active=True, + ) + + def create_ldap_objects(self): + self.realm_1, _ = Realm.objects.get_or_create(name="test_realm_1", + ldap_base_dn="ou=test,ou=fachschaften,dc=test,dc=de") + + LdapUser.set_root_dn(self.realm_1) + self.ldap_user_admin, _ = LdapUser.objects.get_or_create(username="test_admin", email="test@test.de", + password=RealmDetailViewTest.get_password(), + first_name="max", + last_name="musterstudent") + self.ldap_user, _ = LdapUser.objects.get_or_create(username="test", email="test@test.de", + password=RealmDetailViewTest.get_password(), + first_name="max", + last_name="musterstudent") + LdapGroup.set_root_dn(self.realm_1) + self.realm_1_ldap_group = LdapGroup.objects.create(name="test_realm_1_admin_group", + members=[self.ldap_user_admin.dn]) + + logging.disable(logging.DEBUG) + self.realm_1.admin_group = self.realm_1_ldap_group.get_django_group() + self.realm_1.save() + + @classmethod + def get_password(cls): + return "12345678" + + def setUp(self): + self.create_ldap_objects() + self.django_superuser = User.objects.get(username="test_superuser") + + def tearDown(self): + self.clear_ldap_objects() + self.django_superuser.delete() + logging.disable(logging.NOTSET) + + def clear_ldap_objects(self): + self.realm_1.delete() + self.ldap_user_admin.delete() + self.ldap_user.delete() + self.realm_1_ldap_group.delete() + + def test_without_login(self): + response = self.client.get(reverse('realm-detail', args=[self.realm_1.id])) + self.assertEqual(response.status_code, 302) + + def test_with_user_login(self): + self.client.login(username=self.ldap_user.username, password=RealmDetailViewTest.get_password()) + response = self.client.get(reverse('realm-detail', args=[self.realm_1.id])) + self.assertContains(response, 'Leider hast du keine Rechte', status_code=403) + self.client.logout() + + def test_with_admin_login(self): + self.client.login(username=self.ldap_user_admin.username, password=RealmDetailViewTest.get_password()) + response = self.client.get(reverse('realm-detail', args=[self.realm_1.id])) + self.assertContains(response, 'Bereich ', status_code=200) + self.client.logout() + + def test_with_superuser_login(self): + self.client.login(username=self.django_superuser.username, password=RealmDetailViewTest.get_password()) + response = self.client.get(reverse('realm-detail', args=[self.realm_1.id])) + self.assertContains(response, 'Bereich', status_code=200) + self.client.logout() + + +class RealmUpdateViewTest(TestCase): + + @classmethod + def setUpTestData(cls): + # User.objects.get_or_create(username="test", email="test@test.de") + User.objects.create_superuser( + username='test_superuser', + password=RealmUpdateViewTest.get_password(), + email='test@test.de', + is_staff=True, + is_superuser=True, + is_active=True, + ) + + def create_ldap_objects(self): + self.realm_1, _ = Realm.objects.get_or_create(name="test_realm_1", + ldap_base_dn="ou=test,ou=fachschaften,dc=test,dc=de", + email="test.realm@test.de") + self.realm_2, _ = Realm.objects.get_or_create(name="test_realm_2", + ldap_base_dn="ou=test2,ou=fachschaften,dc=test,dc=de") + LdapUser.set_root_dn(self.realm_1) + self.ldap_user_multiple_admin, _ = LdapUser.objects.get_or_create(username="test_multi_admin", + email="test@test.de", + password=RealmUpdateViewTest.get_password(), + first_name="max", + last_name="musterstudent") + self.ldap_user_admin, _ = LdapUser.objects.get_or_create(username="test_admin", email="test@test.de", + password=RealmUpdateViewTest.get_password(), + first_name="max", + last_name="musterstudent") + self.ldap_user, _ = LdapUser.objects.get_or_create(username="test", email="test@test.de", + password=RealmUpdateViewTest.get_password(), + first_name="max", + last_name="musterstudent") + LdapGroup.set_root_dn(self.realm_1) + self.realm_1_ldap_group = LdapGroup.objects.create(name="test_realm_1_admin_group", + members=[self.ldap_user_multiple_admin.dn, + self.ldap_user_admin.dn]) + LdapGroup.set_root_dn(self.realm_1) + self.realm_2_ldap_group = LdapGroup.objects.create(name="test_realm_2_admin_group", + members=[self.ldap_user_multiple_admin.dn]) + LdapGroup.set_root_dn(self.realm_1) + self.realm_3_ldap_group = LdapGroup.objects.create(name="test_realm_3_admin_group", + members=[self.ldap_user_admin.dn]) + logging.disable(logging.DEBUG) + self.realm_1.admin_group = self.realm_1_ldap_group.get_django_group() + self.realm_1.save() + self.realm_2.admin_group = self.realm_2_ldap_group.get_django_group() + self.realm_2.save() + + @classmethod + def get_password(cls): + return "12345678" + + def setUp(self): + self.create_ldap_objects() + self.django_superuser = User.objects.get(username="test_superuser") + + def tearDown(self): + self.clear_ldap_objects() + self.django_superuser.delete() + logging.disable(logging.NOTSET) + + def clear_ldap_objects(self): + self.realm_1.delete() + self.realm_2.delete() + self.ldap_user_multiple_admin.delete() + self.ldap_user_admin.delete() + self.ldap_user.delete() + self.realm_1_ldap_group.delete() + self.realm_2_ldap_group.delete() + self.realm_3_ldap_group.delete() + + def test_without_login(self): + response = self.client.get(reverse('realm-update', args=[self.realm_1.id])) + self.assertEqual(response.status_code, 302) + + def test_with_user_login(self): + self.client.login(username=self.ldap_user.username, password=RealmUpdateViewTest.get_password()) + response = self.client.get(reverse('realm-update', args=[self.realm_1.id])) + self.assertContains(response, 'Leider hast du keine Rechte', status_code=403) + self.client.logout() + + def test_with_admin_login(self): + self.client.login(username=self.ldap_user_admin.username, password=RealmUpdateViewTest.get_password()) + response = self.client.get(reverse('realm-update', args=[self.realm_1.id])) + self.assertContains(response, 'Leider hast du keine Rechte', status_code=403) + self.client.logout() + + def test_with_superuser_login(self): + self.client.login(username=self.django_superuser.username, password=RealmUpdateViewTest.get_password()) + response = self.client.get(reverse('realm-update', args=[self.realm_1.id])) + self.assertContains(response, '', status_code=200) + self.client.logout() + + def test_with_superuser_login_post_single_changes(self): + self.client.login(username=self.django_superuser.username, password=RealmUpdateViewTest.get_password()) + new_name = "new test realm" + new_email = "newtest@test.de" + new_admin_group = self.realm_1_ldap_group + new_default_group = self.realm_3_ldap_group + response = self.client.post(reverse('realm-update', args=[self.realm_1.id]), + {'name': new_name, 'email': new_email, + 'ldap_base_dn': self.realm_1.ldap_base_dn}) + self.assertContains(response, 'Nutzeranzahl', status_code=200) + self.realm_1.refresh_from_db() + self.assertEqual(self.realm_1.name, new_name) + self.assertEqual(self.realm_1.email, new_email) + + response = self.client.post(reverse('realm-update', args=[self.realm_1.id]), + {'name': new_name, 'email': new_email, + 'ldap_base_dn': self.realm_1.ldap_base_dn, 'admin_group': new_admin_group.name}) + self.assertContains(response, 'Nutzeranzahl', status_code=200) + self.realm_1.refresh_from_db() + django_group = Group.objects.get(name=new_admin_group.name) + self.assertEqual(self.realm_1.admin_group, django_group) + + response = self.client.post(reverse('realm-update', args=[self.realm_1.id]), + {'name': new_name, 'email': new_email, + 'ldap_base_dn': self.realm_1.ldap_base_dn, + 'default_group': new_default_group.name}) + self.assertContains(response, 'Nutzeranzahl', status_code=200) + self.realm_1.refresh_from_db() + django_group = Group.objects.get(name=new_default_group.name) + self.assertEqual(self.realm_1.default_group, django_group) + + self.client.logout() + + def test_with_superuser_login_post_with_missing_data(self): + self.client.login(username=self.django_superuser.username, password=RealmUpdateViewTest.get_password()) + new_name = "new test realm" + response = self.client.post(reverse('realm-update', args=[self.realm_1.id]), + {'name': new_name, + 'ldap_base_dn': self.realm_1.ldap_base_dn}) + self.assertContains(response, '', status_code=422) + + response = self.client.post(reverse('realm-update', args=[self.realm_1.id]), + {'email': "test@test.de", + 'ldap_base_dn': self.realm_1.ldap_base_dn}) + self.assertContains(response, '', status_code=422) + + response = self.client.post(reverse('realm-update', args=[self.realm_1.id]), + {'name': new_name, 'email': "test@test.de"}) + self.assertContains(response, '', status_code=422) + + response = self.client.post(reverse('realm-update', args=[self.realm_1.id]), + {'name': new_name, 'email': "abc", + 'ldap_base_dn': self.realm_1.ldap_base_dn}) + self.assertContains(response, '', status_code=422) + + self.client.logout()