Esempio n. 1
0
 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)
Esempio n. 2
0
    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")
Esempio n. 3
0
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")
Esempio n. 4
0
##################################################################################
# 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
Esempio n. 5
0
    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")
Esempio n. 6
0
 def setUp(self):
     self.user = ExtendedUser(username='******',
                              password='******',
                              first_name='Dwayne',
                              last_name='Johnson',
                              email='*****@*****.**')
Esempio n. 7
0
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))
Esempio n. 8
0
def to_extended_user(user):
    attrs = {
        field.name: getattr(user, field.name)
        for field in user._meta.fields
    }
    return ExtendedUser(**attrs)
Esempio n. 9
0
 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)