def test_known_ip_adresses(self):
     self.user.update(last_login_ip='127.1.2.3')
     Rating.objects.create(addon=addon_factory(),
                           user=self.user,
                           ip_address='127.1.2.3')
     dummy_addon = addon_factory()
     Rating.objects.create(
         addon=dummy_addon,
         version=dummy_addon.current_version,
         user=self.user,
         ip_address='128.1.2.3',
     )
     Rating.objects.create(
         addon=dummy_addon,
         version=version_factory(addon=dummy_addon),
         user=self.user,
         ip_address='129.1.2.4',
     )
     Rating.objects.create(addon=addon_factory(),
                           user=self.user,
                           ip_address='130.1.2.4')
     Rating.objects.create(addon=addon_factory(),
                           user=self.user,
                           ip_address='130.1.2.4')
     Rating.objects.create(addon=dummy_addon,
                           user=user_factory(),
                           ip_address='255.255.0.0')
     model_admin = UserAdmin(UserProfile, admin.site)
     doc = pq(model_admin.known_ip_adresses(self.user))
     result = doc('ul li').text().split()
     assert len(result) == 4
     assert set(result) == set(
         ['130.1.2.4', '128.1.2.3', '129.1.2.4', '127.1.2.3'])
    def test_last_known_activity_time(self):
        someone_else = user_factory(username='******')
        addon = addon_factory()

        model_admin = UserAdmin(UserProfile, admin.site)
        assert str(model_admin.last_known_activity_time(self.user)) == ''

        # Add various activities. They will be attached to whatever user is
        # set in the thread global at the time, so set that in advance.
        core.set_user(self.user)
        expected_date = self.days_ago(1)
        activity = ActivityLog.create(amo.LOG.CREATE_ADDON, addon)
        activity.update(created=self.days_ago(2))
        activity.userlog_set.update(created=self.days_ago(2))

        activity = ActivityLog.create(amo.LOG.EDIT_PROPERTIES, addon)
        activity.update(created=expected_date)
        activity.userlog_set.update(created=expected_date)

        assert activity.reload().created == expected_date

        # Create another activity, more recent, attached to a different user.
        core.set_user(someone_else)
        activity = ActivityLog.create(amo.LOG.EDIT_PROPERTIES, addon)

        expected_result = DateFormat(expected_date).format(
            settings.DATETIME_FORMAT)

        assert str(model_admin.last_known_activity_time(
            self.user)) == expected_result
Exemple #3
0
    def test_last_known_activity_time(self):
        someone_else = user_factory(username='******')
        addon = addon_factory()

        model_admin = UserAdmin(UserProfile, admin.site)
        assert six.text_type(
            model_admin.last_known_activity_time(self.user)) == ''

        # Add various activities. They will be attached to whatever user is
        # set in the thread global at the time, so set that in advance.
        core.set_user(self.user)
        expected_date = self.days_ago(1)
        activity = ActivityLog.create(amo.LOG.CREATE_ADDON, addon)
        activity.update(created=self.days_ago(2))
        activity.userlog_set.update(created=self.days_ago(2))

        activity = ActivityLog.create(amo.LOG.EDIT_PROPERTIES, addon)
        activity.update(created=expected_date)
        activity.userlog_set.update(created=expected_date)

        assert activity.reload().created == expected_date

        # Create another activity, more recent, attached to a different user.
        core.set_user(someone_else)
        activity = ActivityLog.create(amo.LOG.EDIT_PROPERTIES, addon)

        expected_result = DateFormat(expected_date).format(
            settings.DATETIME_FORMAT)

        assert (
            six.text_type(model_admin.last_known_activity_time(self.user)) ==
            expected_result)
    def test_picture_img(self):
        model_admin = UserAdmin(UserProfile, admin.site)
        assert self.user.picture_url.endswith('anon_user.png')
        assert (model_admin.picture_img(self.user) == '<img src="%s" />' %
                self.user.picture_url)

        self.user.update(picture_type='image/png')
        assert (model_admin.picture_img(self.user) == '<img src="%s" />' %
                self.user.picture_url)
Exemple #5
0
    def test_get_actions(self):
        user_admin = UserAdmin(UserProfile, admin.site)
        request = RequestFactory().get('/')
        request.user = AnonymousUser()
        assert list(user_admin.get_actions(request).keys()) == []

        request.user = user_factory()
        self.grant_permission(request.user, 'Users:Edit')
        assert list(user_admin.get_actions(request).keys()) == ['ban_action']
Exemple #6
0
    def test_get_actions(self):
        user_admin = UserAdmin(UserProfile, admin.site)
        request = RequestFactory().get('/')
        request.user = AnonymousUser()
        assert list(user_admin.get_actions(request).keys()) == []

        request.user = user_factory()
        self.grant_permission(request.user, 'Users:Edit')
        assert list(user_admin.get_actions(request).keys()) == ['ban_action']
Exemple #7
0
    def test_picture_img(self):
        model_admin = UserAdmin(UserProfile, admin.site)
        assert self.user.picture_url.endswith('anon_user.png')
        assert (
            model_admin.picture_img(self.user) ==
            '<img src="%s" />' % self.user.picture_url)

        self.user.update(picture_type='image/png')
        assert (
            model_admin.picture_img(self.user) ==
            '<img src="%s" />' % self.user.picture_url)
    def test_reset_api_key_action(self):
        another_user = user_factory()
        a_third_user = user_factory()

        APIKey.objects.create(user=self.user, is_active=True, key='foo')
        APIKeyConfirmation.objects.create(user=self.user)

        APIKeyConfirmation.objects.create(user=another_user)

        APIKey.objects.create(user=a_third_user, is_active=True, key='bar')
        APIKeyConfirmation.objects.create(user=a_third_user)

        users = UserProfile.objects.filter(pk__in=(another_user.pk,
                                                   self.user.pk))
        user_admin = UserAdmin(UserProfile, admin.site)
        request = RequestFactory().get('/')
        request.user = user_factory()
        core.set_user(request.user)
        request._messages = default_messages_storage(request)
        user_admin.reset_api_key_action(request, users)
        # APIKeys should have been deactivated, APIKeyConfirmation deleted.
        assert self.user.api_keys.exists()
        assert not self.user.api_keys.filter(is_active=True).exists()
        assert not APIKeyConfirmation.objects.filter(user=self.user).exists()

        # This user didn't have api keys before, it shouldn't matter.
        assert not another_user.api_keys.exists()
        assert not another_user.api_keys.filter(is_active=True).exists()
        assert not APIKeyConfirmation.objects.filter(
            user=another_user).exists()

        # The 3rd user should be unaffected.
        assert a_third_user.api_keys.exists()
        assert a_third_user.api_keys.filter(is_active=True).exists()
        assert APIKeyConfirmation.objects.filter(user=a_third_user).exists()

        # We should see 2 activity logs.
        assert (ActivityLog.objects.filter(
            action=amo.LOG.ADMIN_API_KEY_RESET.id).count() == 2)
    def test_reset_session_action(self):
        assert self.user.auth_id
        another_user = user_factory()
        assert another_user.auth_id
        a_third_user = user_factory()
        assert a_third_user.auth_id
        old_auth_id = a_third_user.auth_id

        users = UserProfile.objects.filter(pk__in=(another_user.pk,
                                                   self.user.pk))
        user_admin = UserAdmin(UserProfile, admin.site)
        request = RequestFactory().get('/')
        request.user = user_factory()
        core.set_user(request.user)
        request._messages = default_messages_storage(request)
        user_admin.reset_session_action(request, users)

        self.user.reload()
        assert self.user.auth_id is None
        another_user.reload()
        assert another_user.auth_id is None
        a_third_user.reload()
        assert a_third_user.auth_id == old_auth_id
    def test_ban_action(self):
        another_user = user_factory()
        a_third_user = user_factory()
        users = UserProfile.objects.filter(pk__in=(another_user.pk,
                                                   self.user.pk))
        user_admin = UserAdmin(UserProfile, admin.site)
        request = RequestFactory().get('/')
        request.user = user_factory()
        core.set_user(request.user)
        request._messages = default_messages_storage(request)
        user_admin.ban_action(request, users)
        # Both users should be banned.
        another_user.reload()
        self.user.reload()
        assert another_user.deleted
        assert another_user.email
        assert self.user.deleted
        assert self.user.email
        # The 3rd user should be unaffected.
        assert not a_third_user.reload().deleted

        # We should see 2 activity logs for banning.
        assert (ActivityLog.objects.filter(
            action=amo.LOG.ADMIN_USER_BANNED.id).count() == 2)
Exemple #11
0
 def test_known_ip_adresses(self):
     self.user.update(last_login_ip='127.1.2.3')
     Rating.objects.create(
         addon=addon_factory(), user=self.user, ip_address='127.1.2.3')
     dummy_addon = addon_factory()
     Rating.objects.create(
         addon=dummy_addon, version=dummy_addon.current_version,
         user=self.user, ip_address='128.1.2.3')
     Rating.objects.create(
         addon=dummy_addon, version=version_factory(addon=dummy_addon),
         user=self.user, ip_address='129.1.2.4')
     Rating.objects.create(
         addon=addon_factory(), user=self.user, ip_address='130.1.2.4')
     Rating.objects.create(
         addon=addon_factory(), user=self.user, ip_address='130.1.2.4')
     Rating.objects.create(
         addon=dummy_addon,
         user=user_factory(), ip_address='255.255.0.0')
     model_admin = UserAdmin(UserProfile, admin.site)
     doc = pq(model_admin.known_ip_adresses(self.user))
     result = doc('ul li').text().split()
     assert len(result) == 4
     assert (set(result) ==
             set(['130.1.2.4', '128.1.2.3', '129.1.2.4', '127.1.2.3']))
Exemple #12
0
    def test_ban_action(self):
        another_user = user_factory()
        a_third_user = user_factory()
        users = UserProfile.objects.filter(
            pk__in=(another_user.pk, self.user.pk))
        user_admin = UserAdmin(UserProfile, admin.site)
        request = RequestFactory().get('/')
        request.user = user_factory()
        core.set_user(request.user)
        request._messages = default_messages_storage(request)
        user_admin.ban_action(request, users)
        # Both users should be banned.
        another_user.reload()
        self.user.reload()
        assert another_user.deleted
        assert another_user.email
        assert self.user.deleted
        assert self.user.email
        # The 3rd user should be unaffected.
        assert not a_third_user.reload().deleted

        # We should see 2 activity logs for banning.
        assert ActivityLog.objects.filter(
            action=amo.LOG.ADMIN_USER_BANNED.id).count() == 2
 def _call_related_content_method(self, method):
     model_admin = UserAdmin(UserProfile, admin.site)
     result = getattr(model_admin, method)(self.user)
     link = pq(result)('a')[0]
     return link.attrib['href'], link.text
Exemple #14
0
    def test_known_ip_adresses(self):
        self.user.update(last_login_ip='127.1.2.3')
        Rating.objects.create(addon=addon_factory(),
                              user=self.user,
                              ip_address='127.1.2.3')
        dummy_addon = addon_factory()
        Rating.objects.create(
            addon=dummy_addon,
            version=dummy_addon.current_version,
            user=self.user,
            ip_address='128.1.2.3',
        )
        Rating.objects.create(
            addon=dummy_addon,
            version=version_factory(addon=dummy_addon),
            user=self.user,
            ip_address='129.1.2.4',
        )
        Rating.objects.create(addon=addon_factory(),
                              user=self.user,
                              ip_address='130.1.2.4')
        Rating.objects.create(addon=addon_factory(),
                              user=self.user,
                              ip_address='130.1.2.4')
        Rating.objects.create(addon=dummy_addon,
                              user=user_factory(),
                              ip_address='255.255.0.0')
        with core.override_remote_addr('15.16.23.42'):
            ActivityLog.create(amo.LOG.ADD_VERSION,
                               dummy_addon,
                               user=self.user)
        UserRestrictionHistory.objects.create(user=self.user,
                                              last_login_ip='4.8.15.16')
        UserRestrictionHistory.objects.create(user=self.user,
                                              ip_address='172.0.0.2')
        model_admin = UserAdmin(UserProfile, admin.site)
        doc = pq(model_admin.known_ip_adresses(self.user))
        result = doc('ul li').text().split()
        assert len(result) == 7
        assert set(result) == {
            '130.1.2.4',
            '128.1.2.3',
            '129.1.2.4',
            '127.1.2.3',
            '15.16.23.42',
            '172.0.0.2',
            '4.8.15.16',
        }

        # Duplicates are ignored
        Rating.objects.create(
            addon=dummy_addon,
            version=version_factory(addon=dummy_addon),
            user=self.user,
            ip_address='127.1.2.3',
        )
        with core.override_remote_addr('172.0.0.2'):
            ActivityLog.create(amo.LOG.ADD_VERSION,
                               dummy_addon,
                               user=self.user)
        UserRestrictionHistory.objects.create(user=self.user,
                                              last_login_ip='15.16.23.42')
        UserRestrictionHistory.objects.create(user=self.user,
                                              ip_address='4.8.15.16')
        doc = pq(model_admin.known_ip_adresses(self.user))
        result = doc('ul li').text().split()
        assert len(result) == 7
        assert set(result) == {
            '130.1.2.4',
            '128.1.2.3',
            '129.1.2.4',
            '127.1.2.3',
            '15.16.23.42',
            '172.0.0.2',
            '4.8.15.16',
        }