Advertisement
Guest User

Untitled

a guest
Jan 20th, 2020
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.73 KB | None | 0 0
  1. from django.test import TestCase
  2. from .models import CourseInstance, Token, Student
  3. from .auth import auth_and_get_token
  4. from django.contrib.auth.models import User
  5. from .student_functions import sign_up_for_course
  6. from django.core import serializers
  7. import json
  8. from unittest.mock import MagicMock
  9. # https://docs.djangoproject.com/en/3.0/topics/auth/default/
  10.  
  11.  
  12. class CourseInstanceTestCase(TestCase):
  13.     def setUp(self):
  14.         u1 = User.objects.create_user('test1')
  15.         u2 = User.objects.create_user('test2')
  16.  
  17.         s1 = Student.objects.create(user=u1, registration_rights=True)
  18.         s2 = Student.objects.create(user=u2, registration_rights=True)
  19.  
  20.         CourseInstance.objects.create(
  21.             teacher="Roman Ptak", maxStudents=1)
  22.  
  23.     def test_sign_up_without_registration_rights(self):
  24.         course = CourseInstance.objects.get(teacher='Roman Ptak')
  25.         user1 = Student.objects.get(user__username='test1')
  26.         user1.registration_rights = False
  27.  
  28.         user1.save()
  29.  
  30.         with self.assertRaises(ValueError):
  31.             success = sign_up_for_course(user1, course)
  32.  
  33.     def test_sign_up_without_registration_rights_mock(self):
  34.         course = CourseInstance.objects.get(teacher='Roman Ptak')
  35.  
  36.         #TU JEST MOCKUP STUDENTA
  37.         user = Student()
  38.         user.registration_rights = MagicMock(return_value=False)
  39.  
  40.         user.registration_rights = False
  41.  
  42.         with self.assertRaises(ValueError):
  43.             success = sign_up_for_course(user, course)
  44.  
  45.     def test_assign_more_students_than_possible(self):
  46.         user1 = Student.objects.get(user__username='test1')
  47.         user2 = Student.objects.get(user__username='test2')
  48.         course = CourseInstance.objects.get(teacher='Roman Ptak')
  49.  
  50.         # Sign up the first student,
  51.         # course reaches maximum capacity
  52.         success = sign_up_for_course(user1, course)
  53.         self.assertTrue(success)
  54.  
  55.         # Sign up the second student,
  56.         # should disallow saving
  57.         success = sign_up_for_course(user2, course)
  58.         self.assertFalse(success)
  59.  
  60.     def test_sign_up_for_course_check_attendants(self):
  61.         user1 = Student.objects.get(user__username='test1')
  62.  
  63.         course: CourseInstance = CourseInstance.objects.get(
  64.             teacher='Roman Ptak')
  65.         sign_up_for_course(user1, course)
  66.  
  67.         self.assertIn(user1, course.attendants.all())
  68.  
  69.     def test_get_courses_json(self):
  70.         courses = CourseInstance.objects.all()
  71.  
  72.         data = serializers.serialize("json", courses)
  73.         json.loads(data)  # Try to parse the JSON to see if its valid
  74.         pass # Pass if no exception is thrown
  75.  
  76.  
  77. class LoginTestCase(TestCase):
  78.     def setUp(self):
  79.         user = User.objects.create_user(
  80.             'romanptak', 'roman.ptak@pwr.edu.pl', '123')
  81.  
  82.     def test_log_in_correct_password(self):
  83.         # Check if correct credentials authenticate the user
  84.         token = auth_and_get_token(login='romanptak', password='123')
  85.         self.assertIsNotNone(token)
  86.  
  87.     def test_log_in_incorrect_password(self):
  88.         # Check if correct credentials authenticate the user
  89.         token = auth_and_get_token(login='romanptak', password='error')
  90.         self.assertIsNone(token)
  91.  
  92.  
  93. class TokenTestCase(TestCase):
  94.     def setUp(self):
  95.         user = User.objects.create_user(
  96.             'romanptak', 'roman.ptak@pwr.edu.pl', '123')
  97.  
  98.     def test_new_token_is_saved(self):
  99.         num_of_tokens_before_login = len(Token.objects.all())
  100.         # Check if correct credentials authenticate the user
  101.         token = auth_and_get_token(login='romanptak', password='123')
  102.  
  103.         num_of_tokens_after_login = len(Token.objects.all())
  104.  
  105.         self.assertLess(num_of_tokens_before_login, num_of_tokens_after_login)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement