Commit 816c159d by Dudás Ádám

school: completed tests for views

parent fa5ddad0
...@@ -6,15 +6,17 @@ from django.core.exceptions import ValidationError ...@@ -6,15 +6,17 @@ from django.core.exceptions import ValidationError
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.utils.datastructures import MultiValueDictKeyError from django.utils.datastructures import MultiValueDictKeyError
from ..models import create_user_profile, Person, Course, Semester, Group from ..models import create_user_profile, Person, Course, Semester, Group
from one.models import UserCloudDetails from one.models import (UserCloudDetails, Disk, InstanceType, Network,
Template)
import json
class ViewTestCase(TestCase): class ViewTestCase(TestCase):
def setUp(self): def setUp(self):
self.client = Client() self.client = Client()
date = datetime.now().date() date = datetime.now().date()
delta = timedelta(weeks=7) delta = timedelta(weeks=7)
semester= Semester.objects.create(name="testsem", start=date-delta, self.semester = Semester.objects.create(name="testsem",
end=date+delta) start=date-delta, end=date+delta)
course1 = Course.objects.create(code='tccode1', course1 = Course.objects.create(code='tccode1',
name='testcourse1', short_name='tc1') name='testcourse1', short_name='tc1')
course2 = Course.objects.create(code='tccode2', course2 = Course.objects.create(code='tccode2',
...@@ -23,15 +25,15 @@ class ViewTestCase(TestCase): ...@@ -23,15 +25,15 @@ class ViewTestCase(TestCase):
nonexistent_course_code2 = 'caringforunicorns' nonexistent_course_code2 = 'caringforunicorns'
affiliation1 = AuthGroup.objects.create(name='chalktrademanager') affiliation1 = AuthGroup.objects.create(name='chalktrademanager')
self.group1 = Group.objects.create(name=affiliation1.name, self.group1 = Group.objects.create(name=affiliation1.name,
semester=semester, course=course1) semester=self.semester, course=course1)
self.http_headers = { self.http_headers = {
'niifPersonOrgID': 'ABUZER', 'niifPersonOrgID': 'ABUZER',
'niifEduPersonHeldCourse': ';'.join( 'niifEduPersonHeldCourse': ';'.join(
[course1.code, nonexistent_course_code1]), [course1.code, nonexistent_course_code1]),
'niifEduPersonAttendedCourse': ';'.join( 'niifEduPersonAttendedCourse': ';'.join(
[course2.code, nonexistent_course_code2]), [course2.code, nonexistent_course_code2]),
'givenName': 'User', 'givenName': 'Test',
'sn': 'Test', 'sn': 'User',
'email': 'test.user@testsite.hu', 'email': 'test.user@testsite.hu',
'affiliation': ';'.join([affiliation1.name])} 'affiliation': ';'.join([affiliation1.name])}
...@@ -49,11 +51,17 @@ class ViewTestCase(TestCase): ...@@ -49,11 +51,17 @@ class ViewTestCase(TestCase):
return resp return resp
#
# school.views.logout
#
def test_logout(self): def test_logout(self):
resp = self.client.get(reverse('logout'), follow=False) resp = self.client.get(reverse('logout'), follow=False)
self.assertEqual(302, resp.status_code) self.assertEqual(302, resp.status_code)
#
# school.views.login
#
def test_login(self): def test_login(self):
resp = self.login(follow=True) resp = self.login(follow=True)
self.assertEqual(200, resp.status_code) self.assertEqual(200, resp.status_code)
...@@ -85,6 +93,9 @@ class ViewTestCase(TestCase): ...@@ -85,6 +93,9 @@ class ViewTestCase(TestCase):
self.assertEqual(200, resp.status_code) self.assertEqual(200, resp.status_code)
#
# school.views.language
#
def test_language(self): def test_language(self):
self.login() self.login()
p = Person.objects.get(user=self.user) p = Person.objects.get(user=self.user)
...@@ -100,8 +111,8 @@ class ViewTestCase(TestCase): ...@@ -100,8 +111,8 @@ class ViewTestCase(TestCase):
def test_language_with_invalid_parameter(self): def test_language_with_invalid_parameter(self):
self.login() self.login()
lang_before = Person.objects.get(user=self.user).language lang_before = Person.objects.get(user=self.user).language
new_lang = u'nemvanez' # invalid language invalid_lang = u'nemvanez'
url = reverse('school.views.language', kwargs={'lang': new_lang}) url = reverse('school.views.language', kwargs={'lang': invalid_lang})
self.http_headers['HTTP_REFERER'] = '/' self.http_headers['HTTP_REFERER'] = '/'
resp = self.client.get(url, follow=False, **self.http_headers) resp = self.client.get(url, follow=False, **self.http_headers)
self.assertEqual(302, resp.status_code) self.assertEqual(302, resp.status_code)
...@@ -119,11 +130,22 @@ class ViewTestCase(TestCase): ...@@ -119,11 +130,22 @@ class ViewTestCase(TestCase):
self.assertEqual(302, resp.status_code) self.assertEqual(302, resp.status_code)
#
# school.views.group_show
#
def test_group_show(self): def test_group_show(self):
self.login() self.login()
ucd = UserCloudDetails.objects.get(user=self.user) ucd = UserCloudDetails.objects.get(user=self.user)
ucd.share_quota = 10 ucd.share_quota = 10
ucd.save() ucd.save()
disk = Disk.objects.create(name="testdsk1")
insttype = InstanceType.objects.create(name="testtype", CPU=4,
RAM=4096, credit=4)
ntwrk = Network.objects.create(name="testntwrk", nat=False,
public=True)
tmplt = Template.objects.create(name="testtmplt1", disk=disk,
instance_type=insttype, network=ntwrk, owner=self.user,
state='READY')
gid = self.group1.id gid = self.group1.id
url = reverse('school.views.group_show', kwargs={'gid': gid}) url = reverse('school.views.group_show', kwargs={'gid': gid})
resp = self.client.get(url) resp = self.client.get(url)
...@@ -139,6 +161,9 @@ class ViewTestCase(TestCase): ...@@ -139,6 +161,9 @@ class ViewTestCase(TestCase):
self.assertEqual(404, resp.status_code) self.assertEqual(404, resp.status_code)
#
# school.views.group_new
#
def test_group_new(self): def test_group_new(self):
self.login() self.login()
url = reverse('school.views.group_new') url = reverse('school.views.group_new')
...@@ -148,7 +173,7 @@ class ViewTestCase(TestCase): ...@@ -148,7 +173,7 @@ class ViewTestCase(TestCase):
'name': 'myNewGrp', 'name': 'myNewGrp',
'semester': Semester.get_current().id, 'semester': Semester.get_current().id,
'members': '\n'.join([m.code for m in members]), 'members': '\n'.join([m.code for m in members]),
} }
resp = self.client.post(url, data) resp = self.client.post(url, data)
group = Group.objects.get(name=data['name']) group = Group.objects.get(name=data['name'])
self.assertEqual(Semester.get_current(), group.semester) self.assertEqual(Semester.get_current(), group.semester)
...@@ -163,13 +188,28 @@ class ViewTestCase(TestCase): ...@@ -163,13 +188,28 @@ class ViewTestCase(TestCase):
'name': 'myNewGrp', 'name': 'myNewGrp',
'semester': Semester.get_current().id, 'semester': Semester.get_current().id,
'members': '', 'members': '',
} }
resp = self.client.post(url, data) resp = self.client.post(url, data)
group = Group.objects.get(name=data['name']) group = Group.objects.get(name=data['name'])
self.assertEqual(Semester.get_current(), group.semester) self.assertEqual(Semester.get_current(), group.semester)
self.assertFalse(group.members.exists()) self.assertFalse(group.members.exists())
def test_group_new_with_invalid_neptun(self):
self.login()
url = reverse('school.views.group_new')
data = {
'name': 'myNewGrp',
'semester': Semester.get_current().id,
'members': '1ABC123', # invalid neptun
}
resp = self.client.post(url, data)
self.assertFalse(Group.objects.filter(name=data['name']).exists())
#
# school.views.group_ajax_add_new_member
#
def test_group_ajax_add_new_member(self): def test_group_ajax_add_new_member(self):
self.login() self.login()
group = Group.objects.create(name="mytestgroup", group = Group.objects.create(name="mytestgroup",
...@@ -179,6 +219,7 @@ class ViewTestCase(TestCase): ...@@ -179,6 +219,7 @@ class ViewTestCase(TestCase):
new_member = Person.objects.get(user=self.user) new_member = Person.objects.get(user=self.user)
data = {'neptun': new_member.code} data = {'neptun': new_member.code}
resp = self.client.post(url, data) resp = self.client.post(url, data)
self.assertEqual(200, resp.status_code)
group = Group.objects.get(id=group.id) group = Group.objects.get(id=group.id)
self.assertIn(new_member, group.members.all()) self.assertIn(new_member, group.members.all())
...@@ -194,6 +235,7 @@ class ViewTestCase(TestCase): ...@@ -194,6 +235,7 @@ class ViewTestCase(TestCase):
resp = self.client.post(url, data) resp = self.client.post(url, data)
self.assertEqual(404, resp.status_code) self.assertEqual(404, resp.status_code)
def test_group_ajax_add_new_member_without_neptun(self): def test_group_ajax_add_new_member_without_neptun(self):
self.login() self.login()
group = Group.objects.create(name="mytestgroup", group = Group.objects.create(name="mytestgroup",
...@@ -209,8 +251,20 @@ class ViewTestCase(TestCase): ...@@ -209,8 +251,20 @@ class ViewTestCase(TestCase):
def test_group_ajax_add_new_member_with_invalid_neptun(self): def test_group_ajax_add_new_member_with_invalid_neptun(self):
# TODO self.login()
pass group = Group.objects.create(name="mytestgroup",
semester=Semester.get_current())
url = reverse('school.views.group_ajax_add_new_member',
kwargs={'gid': group.id})
new_member = Person.objects.get(user=self.user)
self.assertNotIn(new_member, group.members.all())
data = {'neptun': '1' + new_member.code}
resp = self.client.post(url, data)
self.assertEqual(200, resp.status_code)
content = json.loads(resp.content)
self.assertEqual('Error', content['status'])
group = Group.objects.get(id=group.id)
self.assertNotIn(new_member, group.members.all())
def test_group_ajax_add_new_member_with_nonexistent_member(self): def test_group_ajax_add_new_member_with_nonexistent_member(self):
...@@ -231,6 +285,9 @@ class ViewTestCase(TestCase): ...@@ -231,6 +285,9 @@ class ViewTestCase(TestCase):
self.assertIn(new_member, group.members.all()) self.assertIn(new_member, group.members.all())
#
# school.views.group_ajax_remove_member
#
def test_group_ajax_remove_member(self): def test_group_ajax_remove_member(self):
self.login() self.login()
group = Group.objects.create(name="mytestgroup", group = Group.objects.create(name="mytestgroup",
...@@ -242,6 +299,7 @@ class ViewTestCase(TestCase): ...@@ -242,6 +299,7 @@ class ViewTestCase(TestCase):
kwargs={'gid': group.id}) kwargs={'gid': group.id})
data = {'neptun': member.code} data = {'neptun': member.code}
resp = self.client.post(url, data) resp = self.client.post(url, data)
self.assertEqual(200, resp.status_code)
group = Group.objects.get(id=group.id) group = Group.objects.get(id=group.id)
self.assertNotIn(member, group.members.all()) self.assertNotIn(member, group.members.all())
...@@ -257,6 +315,7 @@ class ViewTestCase(TestCase): ...@@ -257,6 +315,7 @@ class ViewTestCase(TestCase):
resp = self.client.post(url, data) resp = self.client.post(url, data)
self.assertEqual(404, resp.status_code) self.assertEqual(404, resp.status_code)
def test_group_ajax_remove_member_without_neptun(self): def test_group_ajax_remove_member_without_neptun(self):
self.login() self.login()
group = Group.objects.create(name="mytestgroup", group = Group.objects.create(name="mytestgroup",
...@@ -274,8 +333,21 @@ class ViewTestCase(TestCase): ...@@ -274,8 +333,21 @@ class ViewTestCase(TestCase):
def test_group_ajax_remove_member_with_invalid_neptun(self): def test_group_ajax_remove_member_with_invalid_neptun(self):
# TODO self.login()
pass group = Group.objects.create(name="mytestgroup",
semester=Semester.get_current())
member = Person.objects.get(user=self.user)
group.members.add(member)
group.save()
url = reverse('school.views.group_ajax_remove_member',
kwargs={'gid': group.id})
data = {'neptun': '1' + member.code} # invalid Neptun code
resp = self.client.post(url, data)
self.assertEqual(200, resp.status_code)
content = json.loads(resp.content)
self.assertEqual('Error', content['status'])
group = Group.objects.get(id=group.id)
self.assertIn(member, group.members.all())
def test_group_ajax_remove_member_with_nonexistent_member(self): def test_group_ajax_remove_member_with_nonexistent_member(self):
...@@ -293,6 +365,9 @@ class ViewTestCase(TestCase): ...@@ -293,6 +365,9 @@ class ViewTestCase(TestCase):
self.assertFalse(Person.objects.filter(code=member_code).exists()) self.assertFalse(Person.objects.filter(code=member_code).exists())
#
# school.views.group_ajax_delete
#
def test_group_ajax_delete(self): def test_group_ajax_delete(self):
self.login() self.login()
group = Group.objects.create(name="mytestgroup", group = Group.objects.create(name="mytestgroup",
...@@ -322,6 +397,9 @@ class ViewTestCase(TestCase): ...@@ -322,6 +397,9 @@ class ViewTestCase(TestCase):
self.assertEqual(404, resp.status_code) self.assertEqual(404, resp.status_code)
#
# school.views.group_ajax_owner_autocomplete
#
def test_group_ajax_owner_autocomplete(self): def test_group_ajax_owner_autocomplete(self):
self.login() self.login()
query = self.user.last_name[:2] query = self.user.last_name[:2]
...@@ -329,7 +407,10 @@ class ViewTestCase(TestCase): ...@@ -329,7 +407,10 @@ class ViewTestCase(TestCase):
data = {'q': query} data = {'q': query}
resp = self.client.post(url, data) resp = self.client.post(url, data)
self.assertEqual(200, resp.status_code) self.assertEqual(200, resp.status_code)
# TODO parse json in response and verify user is found content = json.loads(resp.content)
user_data = {'name': self.user.get_full_name(),
'neptun': self.user.username}
self.assertIn(user_data, content)
def test_group_ajax_owner_autocomplete_without_query(self): def test_group_ajax_owner_autocomplete_without_query(self):
...@@ -340,6 +421,9 @@ class ViewTestCase(TestCase): ...@@ -340,6 +421,9 @@ class ViewTestCase(TestCase):
self.client.post(url, data) self.client.post(url, data)
#
# school.views.group_ajax_add_new_owner
#
def test_group_ajax_add_new_owner(self): def test_group_ajax_add_new_owner(self):
self.login() self.login()
user_details = UserCloudDetails.objects.get(user=self.user) user_details = UserCloudDetails.objects.get(user=self.user)
...@@ -354,7 +438,8 @@ class ViewTestCase(TestCase): ...@@ -354,7 +438,8 @@ class ViewTestCase(TestCase):
data = {'neptun': new_owner.code} data = {'neptun': new_owner.code}
resp = self.client.post(url, data) resp = self.client.post(url, data)
self.assertEqual(200, resp.status_code) self.assertEqual(200, resp.status_code)
# TODO parse json in response and verify status is OK content = json.loads(resp.content)
self.assertEqual('OK', content['status'])
group = Group.objects.get(id=group.id) group = Group.objects.get(id=group.id)
self.assertIn(new_owner, group.owners.all()) self.assertIn(new_owner, group.owners.all())
...@@ -373,7 +458,8 @@ class ViewTestCase(TestCase): ...@@ -373,7 +458,8 @@ class ViewTestCase(TestCase):
data = {'neptun': new_owner.code} data = {'neptun': new_owner.code}
resp = self.client.post(url, data) resp = self.client.post(url, data)
self.assertEqual(200, resp.status_code) self.assertEqual(200, resp.status_code)
# TODO parse json in response and verify status is 'denied' content = json.loads(resp.content)
self.assertEqual('denied', content['status'])
group = Group.objects.get(id=group.id) group = Group.objects.get(id=group.id)
self.assertNotIn(new_owner, group.owners.all()) self.assertNotIn(new_owner, group.owners.all())
...@@ -411,5 +497,20 @@ class ViewTestCase(TestCase): ...@@ -411,5 +497,20 @@ class ViewTestCase(TestCase):
def test_group_ajax_add_new_owner_with_invalid_neptun(self): def test_group_ajax_add_new_owner_with_invalid_neptun(self):
# TODO self.login()
pass user_details = UserCloudDetails.objects.get(user=self.user)
user_details.share_quota = 10
user_details.save()
group = Group.objects.create(name="mytestgroup",
semester=Semester.get_current())
new_owner = Person.objects.get(code=self.user.username)
self.assertNotIn(new_owner, group.owners.all())
url = reverse('school.views.group_ajax_add_new_owner',
kwargs={'gid': group.id})
data = {'neptun': '1' + new_owner.code}
resp = self.client.post(url, data)
self.assertEqual(200, resp.status_code)
content = json.loads(resp.content)
self.assertEqual('Error', content['status'])
group = Group.objects.get(id=group.id)
self.assertNotIn(new_owner, group.owners.all())
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment