Esempio n. 1
0
    def test_superuser(self):
        """A logged-in superuser can access the users page."""

        LoginPage(self).login(self.superuser['username'],
                              self.superuser['password'])
        UsersPage(self).go_to()
        assert UsersPage(self).is_on_page()
    def generic_test_de_activate_user(self, user_data):
        """(De)activating a user does make the user (in)active."""

        # Cache default state
        statuses = {}
        for user in self.test_data['users']:
            statuses[user['username']] = user['is_active']

        # Activate/deactivate user using the superuser
        LoginPage(self).login(self.superuser['username'],
                              self.superuser['password'])
        users_page = UsersPage(self)
        users_page.go_to()
        users_page.click_de_activate_button(user_data['username'])
        self.logout()

        # Check that activated user can now log in
        if not user_data['is_active']:
            LoginPage(self).login(user_data['username'], user_data['password'])
            self.logout()

        # Check that deactivated user cannot log in
        if user_data['is_active']:
            self.check_inactive_login(user_data)

        # Check that status of all users are OK
        statuses[user_data['username']] = not user_data['is_active']
        self.check_user_status(statuses)
    def access_direct_activate_urls(self):
        """Access the (de)activate URLs directly (GET method)."""

        # Note: Selenium cannot provide access to HTTP response codes
        # so we can't check that the server returns an HTTP error

        users_page = UsersPage(self)
        for user_data in self.test_data['users']:
            users_page.go_to_activate_user_url(user_data['username'])
            users_page.go_to_deactivate_user_url(user_data['username'])
    def check_user_status(self, statuses):
        """Check that the named users have the specified state
        by looking at the state of the activate/deactivate button
        on the users management page."""

        LoginPage(self).login(self.superuser['username'],
                              self.superuser['password'])
        users_page = UsersPage(self)
        users_page.go_to()
        for username in iter(statuses.keys()):
            assert (users_page.is_user_active(username) == bool(
                statuses[username]))
Esempio n. 5
0
    def test_nonloggedin_user(self):
        """A non-logged-in user cannot access the users page,
        but will be directed to it once logged in as a superuser."""

        self.browser.get(UsersPage(self).url)
        assert LoginPage(self).is_on_page()
        assert self.get_url_query() == 'next=' + UsersPage.path

        LoginPage(self).login(self.superuser['username'],
                              self.superuser['password'],
                              wait=(By.ID, 'users'))
        assert UsersPage(self).is_on_page()
    def check_user_status(self, statuses):
        """Check that the named users have the specified state
        by looking at the state of the activate/deactivate button
        on the users management page."""

        LoginPage(self).login(self.superuser['username'],
                              self.superuser['password'])
        users_page = UsersPage(self)
        users_page.go_to()
        for username in iter(statuses.keys()):
            assert (
                users_page.is_user_active(username) ==
                bool(statuses[username])
            )
Esempio n. 7
0
    def test_nonsuperuser(self):
        """A logged-in non-superuser cannot access the users page."""

        LoginPage(self).login(self.user1['username'], self.user1['password'])
        self.browser.get(UsersPage(self).url)
        self.assert_has_message('alert', "have permission")
        assert DashboardPage(self).is_on_page()
Esempio n. 8
0
    def test_list(self):
        """The index page should display the complete and correct user
        information."""

        # Get time now for superuser's last login time
        login_time = datetime.now(tz=timezone.utc)

        LoginPage(self).login(self.superuser['username'],
                              self.superuser['password'])

        users_page = UsersPage(self)
        users_page.go_to()

        users = self.test_data['users']
        assert users_page.get_num_users() == len(users)

        # Construct list of orgs each user is in
        # (Basically, invert the '_members' test data)
        for user in users:
            user['orgs'] = []
        for org in self.test_data['orgs']:
            for idx in org['_members']:
                users[idx]['orgs'].append(org)

        for user in users:

            username = user['username']

            # Check email is displayed correctly
            expected_email = user['email'] or '—'
            actual_email = users_page.get_user_email(username)
            assert actual_email == expected_email

            # Check organizations are displayed correctly
            actual_orgs = users_page.get_user_orgs(username)
            if len(user['orgs']) == 0:
                assert actual_orgs == '—'
            else:
                for org in user['orgs']:
                    assert org['name'] in actual_orgs
                    actual_orgs = actual_orgs.replace(org['name'], '')
                assert re.match('^[, ]*$', actual_orgs)

            # Check last login is displayed correctly
            if user == self.superuser:
                # Fuzzy checking for superuser
                try:
                    self.check_last_login(username, login_time)
                except AssertionError:
                    login_time = login_time + timedelta(minutes=1)
                    self.check_last_login(username, login_time)
            else:
                self.check_last_login(username, user['last_login'])

            # Check active status is displayed correctly
            assert (users_page.is_user_active(username) == bool(
                user['is_active']))
    def generic_test_de_activate_user(self, user_data):
        """(De)activating a user does make the user (in)active."""

        # Cache default state
        statuses = {}
        for user in self.test_data['users']:
            statuses[user['username']] = user['is_active']

        # Activate/deactivate user using the superuser
        LoginPage(self).login(self.superuser['username'],
                              self.superuser['password'])
        users_page = UsersPage(self)
        users_page.go_to()
        users_page.click_de_activate_button(user_data['username'])
        self.logout()

        # Check that activated user can now log in
        if not user_data['is_active']:
            LoginPage(self).login(user_data['username'], user_data['password'])
            self.logout()

        # Check that deactivated user cannot log in
        if user_data['is_active']:
            self.check_inactive_login(user_data)

        # Check that status of all users are OK
        statuses[user_data['username']] = not user_data['is_active']
        self.check_user_status(statuses)
    def access_direct_activate_urls(self):
        """Access the (de)activate URLs directly (GET method)."""

        # Note: Selenium cannot provide access to HTTP response codes
        # so we can't check that the server returns an HTTP error

        users_page = UsersPage(self)
        for user_data in self.test_data['users']:
            users_page.go_to_activate_user_url(user_data['username'])
            users_page.go_to_deactivate_user_url(user_data['username'])
Esempio n. 11
0
 def check_last_login(self, username, expected_time):
     actual = UsersPage(self).get_user_last_login(username)
     expected = (formats.date_format(expected_time, "DATETIME_FORMAT")
                 if expected_time else '—')
     assert actual == expected
Esempio n. 12
0
    def test_list(self):
        """The index page should display the complete and correct user
        information."""

        # Get time now for superuser's last login time
        login_time = datetime.now(tz=timezone.utc)

        LoginPage(self).login(self.superuser['username'],
                              self.superuser['password'])

        users_page = UsersPage(self)
        users_page.go_to()

        users = self.test_data['users']
        assert users_page.get_num_users() == len(users)

        # Construct list of orgs each user is in
        # (Basically, invert the '_members' test data)
        for user in users:
            user['orgs'] = []
        for org in self.test_data['orgs']:
            for idx in org['_members']:
                users[idx]['orgs'].append(org)

        for user in users:

            username = user['username']

            # Check full name is displayed correctly
            full_name = user.get('full_name', '')
            expected_name = '{}\n{}'.format(username, full_name).strip()
            actual_name = users_page.get_user_name(username)
            assert actual_name == expected_name

            # Check email is displayed correctly
            expected_email = user['email'] or '—'
            actual_email = users_page.get_user_email(username)
            assert actual_email == expected_email

            # Check organizations are displayed correctly
            actual_orgs = users_page.get_user_orgs(username)
            if len(user['orgs']) == 0:
                assert actual_orgs == '—'
            else:
                for org in user['orgs']:
                    assert org['name'] in actual_orgs
                    actual_orgs = actual_orgs.replace(org['name'], '')
                assert re.match('^[, ]*$', actual_orgs)

            # Check last login is displayed correctly
            if user == self.superuser:
                # Fuzzy checking for superuser
                try:
                    self.check_last_login(username, login_time)
                except AssertionError:
                    login_time = login_time + timedelta(minutes=1)
                    self.check_last_login(username, login_time)
            else:
                self.check_last_login(username, user['last_login'])

            # Check active status is displayed correctly
            assert (
                users_page.is_user_active(username) ==
                bool(user['is_active'])
            )