def setUp(self): # Called each time before a testcase runs # Set up data for each test. self.user = User.objects.create_user(username="******", password="******", email='*****@*****.**') User.save(self.user)
def test_get_set_display_name(self): self.assertEqual(self.user.get_display_name(), self.user.get_simple_display_name()) ExtendedUser.set_display_name_method( lambda x: f"{x.first_name} 'the Rock' {x.last_name}") self.assertEqual(self.user.get_display_name(), "Dwayne 'the Rock' Johnson")
class ExtendedUserTest(TestCase): def setUp(self): self.user = ExtendedUser(username='******', password='******', first_name='Dwayne', last_name='Johnson', email='*****@*****.**') # Tests the get_simple_display_name method def test_get_simple_display_name(self): user = ExtendedUser(username='******', password='******') self.assertEqual(user.get_simple_display_name(), "blurp") self.assertEqual(self.user.get_simple_display_name(), "Dwayne") # Tests the getter and setter of the application-wide display name of users def test_get_set_display_name(self): self.assertEqual(self.user.get_display_name(), self.user.get_simple_display_name()) ExtendedUser.set_display_name_method( lambda x: f"{x.first_name} 'the Rock' {x.last_name}") self.assertEqual(self.user.get_display_name(), "Dwayne 'the Rock' Johnson")
################################################################################## # Models related to the Membership File-functionality of the application. # @since 06 JUL 2019 ################################################################################## # Display method for a user that may also be a member def get_member_display_name(user): member = MemberUser(user.id).get_member() if member is not None: return member.get_full_name() return user.get_simple_display_name() # Users should be displayed by their names according to the membership file (if they're a member) User.set_display_name_method(get_member_display_name) # Provides additional methods on the ExtendedUser model class MemberUser(User): class Meta: proxy = True # Returns the associated member to a given user def get_member(self): return Member.objects.filter(user__id=self.id).first() # Checks whether a given user is a member def is_member(self): return self.get_member() is not None
def test_get_simple_display_name(self): user = ExtendedUser(username='******', password='******') self.assertEqual(user.get_simple_display_name(), "blurp") self.assertEqual(self.user.get_simple_display_name(), "Dwayne")
def setUp(self): self.user = ExtendedUser(username='******', password='******', first_name='Dwayne', last_name='Johnson', email='*****@*****.**')
def checkAccessPermissions(test: TestCase, url: str, httpMethod: str, permissionLevel: PermissionLevel, user: User = None, redirectUrl: str = "", data: dict = {}) -> None: client = Client() # Ensure the correct type of user makes the request if permissionLevel == PermissionLevel.LEVEL_USER: if user is None: user = User.objects.get(username='******') elif user.is_superuser: user.is_superuser = False User.save(user) elif permissionLevel == PermissionLevel.LEVEL_ADMIN: if user is None: user = User.objects.get(username='******') elif not user.is_superuser: user.is_superuser = True User.save(user) # Ensure the correct user is logged in if user: client.force_login(user) # Issue a HTTP request. response = getattr(client, httpMethod)(url, data=data, follow=(bool(redirectUrl)), secure=True) # Ensure that a 200 OK response is received test.assertEqual(response.status_code, 200) # Ensure we were redirected to the correct page if redirectUrl: # Ensure a redirection to the expected URL took place test.assertRedirects(response, redirectUrl) # Check if we get redirected to the login page if not logged in, but a login is required # Skip this check if we expect a different redirect (which was already checked earlier) if permissionLevel <= PermissionLevel.LEVEL_PUBLIC or redirectUrl: return # Ensure the client is not logged in client.logout() # Issue a HTTP request. response = getattr(client, httpMethod)(url, data=data, follow=True, secure=True) # Ensure that a 200 OK response is received test.assertEqual(response.status_code, 200) # Ensure a redirection to the login page took place test.assertRedirects(response, '{0}?next={1}'.format(settings.LOGIN_URL, url)) # Check if we get redirected to the login page if we're not an admin if permissionLevel <= PermissionLevel.LEVEL_USER: return # Ensure the client is not logged in client.force_login(user) # Issue a HTTP request. response = getattr(client, httpMethod)(url, data=data, follow=True, secure=True) # Ensure that a 200 OK response is received test.assertEqual(response.status_code, 200) # Ensure a redirection to the login page took place test.assertRedirects(response, '{0}?next={1}'.format(settings.LOGIN_URL, url))
def to_extended_user(user): attrs = { field.name: getattr(user, field.name) for field in user._meta.fields } return ExtendedUser(**attrs)
def setUp(self): # Called each time before a testcase runs # Set up data for each test. self.user = User.objects.create_user(username="******", password="******") User.save(self.user)