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
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)
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']
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)
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_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
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', }