Пример #1
0
 def setUp(self):
     self.app = mkt.site.tests.app_factory(status=mkt.STATUS_PENDING)
     self.user = user_factory(email='editor')
     self.grant_permission(self.user, 'Apps:Review')
     self.admin_user = user_factory(email='admin')
     self.grant_permission(self.admin_user, '*:*', name='Admins')
     user_factory(email='regular')
Пример #2
0
 def setUp(self):
     self.app = mkt.site.tests.app_factory(status=mkt.STATUS_PENDING)
     self.user = user_factory(email="editor")
     self.grant_permission(self.user, "Apps:Review")
     self.admin_user = user_factory(email="admin")
     self.grant_permission(self.admin_user, "*:*", name="Admins")
     user_factory(email="regular")
Пример #3
0
 def setUp(self):
     super(TestUserHasPermNoteApps, self).setUp()
     self.app = app_factory()
     self.developer = user_factory()
     self.developer.addonuser_set.create(addon=self.app)
     self.reviewer = user_factory()
     self.grant_permission(self.reviewer, "Apps", "Review")
     self.thread = CommunicationThread.objects.create(_addon=self.app, _version=self.app.latest_version)
Пример #4
0
 def setUp(self):
     self.app = app_factory(status=mkt.STATUS_PENDING)
     self.website = website_factory()
     self.user = user_factory(email='editor')
     self.grant_permission(self.user, 'Apps:Review')
     self.admin_user = user_factory(email='admin')
     self.grant_permission(self.admin_user, '*:*', name='Admins')
     user_factory(email='regular')
Пример #5
0
 def setUp(self):
     super(TestUserHasPermNoteApps, self).setUp()
     self.app = app_factory()
     self.developer = user_factory()
     self.developer.addonuser_set.create(addon=self.app)
     self.reviewer = user_factory()
     self.grant_permission(self.reviewer, 'Apps', 'Review')
     self.thread = CommunicationThread.objects.create(
         _addon=self.app, _version=self.app.latest_version)
Пример #6
0
    def test_dev_total(self):
        p1 = user_factory(source=mkt.LOGIN_SOURCE_MMO_BROWSERID)
        p2 = user_factory(source=mkt.LOGIN_SOURCE_MMO_BROWSERID)
        a1 = mkt.site.tests.app_factory()
        AddonUser.objects.create(addon=a1, user=p1)
        AddonUser.objects.create(addon=a1, user=p2)

        eq_(tasks._get_monolith_jobs()
            ['mmo_developer_count_total'][0]['count'](), 2)
Пример #7
0
 def setUp(self):
     super(TestUserHasPermNoteExtensions, self).setUp()
     self.extension = extension_factory()
     self.developer = user_factory()
     self.developer.extension_set.add(self.extension)
     self.reviewer = user_factory()
     self.grant_permission(self.reviewer, 'ContentTools: AddonReview')
     self.thread = CommunicationThread.objects.create(
         _extension=self.extension,
         _extension_version=self.extension.latest_version)
Пример #8
0
 def setUp(self):
     super(TestUserHasPermNoteExtensions, self).setUp()
     self.extension = extension_factory()
     self.developer = user_factory()
     self.developer.extension_set.add(self.extension)
     self.reviewer = user_factory()
     self.grant_permission(self.reviewer, "ContentTools: AddonReview")
     self.thread = CommunicationThread.objects.create(
         _extension=self.extension, _extension_version=self.extension.latest_version
     )
Пример #9
0
    def test_dev_total(self):
        p1 = user_factory(source=mkt.LOGIN_SOURCE_MMO_BROWSERID)
        p2 = user_factory(source=mkt.LOGIN_SOURCE_MMO_BROWSERID)
        a1 = mkt.site.tests.app_factory()
        AddonUser.objects.create(addon=a1, user=p1)
        AddonUser.objects.create(addon=a1, user=p2)

        eq_(
            tasks._get_monolith_jobs()['mmo_developer_count_total'][0]['count']
            (), 2)
Пример #10
0
    def setUp(self):
        self.developer = user_factory()
        self.mozilla_contact = user_factory()
        self.reviewer = user_factory()
        self.senior_reviewer = user_factory()

        self.grant_permission(self.senior_reviewer, '*:*',
                              'Senior App Reviewers')

        self.app = app_factory()
        self.app.addonuser_set.create(user=self.developer)
        self.app.update(mozilla_contact=self.mozilla_contact.email)
Пример #11
0
    def setUp(self):
        self.developer = user_factory()
        self.mozilla_contact = user_factory()
        self.reviewer = user_factory()
        self.senior_reviewer = user_factory()

        self.grant_permission(self.senior_reviewer, '*:*',
                              'Senior App Reviewers')

        self.app = app_factory()
        self.app.addonuser_set.create(user=self.developer)
        self.app.update(mozilla_contact=self.mozilla_contact.email)
Пример #12
0
 def test_escalate_on_prerelease_permissions(self):
     """Test that apps that use prerelease permissions are escalated."""
     user_factory(email=settings.NOBODY_EMAIL_ADDRESS)
     self.app.current_version.update(version='0.9',
                                     created=self.days_ago(1))
     ok_(not EscalationQueue.objects.filter(addon=self.app).exists(),
         'App in escalation queue')
     self._post(302)
     version = self.app.versions.latest()
     eq_(version.version, '1.0')
     eq_(version.all_files[0].status, mkt.STATUS_PENDING)
     self.app.update_status()
     eq_(self.app.status, mkt.STATUS_PUBLIC)
     ok_(EscalationQueue.objects.filter(addon=self.app).exists(),
         'App not in escalation queue')
Пример #13
0
 def test_escalate_on_prerelease_permissions(self):
     """Test that apps that use prerelease permissions are escalated."""
     user_factory(email=settings.NOBODY_EMAIL_ADDRESS)
     self.app.current_version.update(version='0.9',
                                     created=self.days_ago(1))
     ok_(not EscalationQueue.objects.filter(addon=self.app).exists(),
         'App in escalation queue')
     self._post(302)
     version = self.app.versions.latest()
     eq_(version.version, '1.0')
     eq_(version.all_files[0].status, mkt.STATUS_PENDING)
     self.app.update_status()
     eq_(self.app.status, mkt.STATUS_PUBLIC)
     ok_(EscalationQueue.objects.filter(addon=self.app).exists(),
         'App not in escalation queue')
Пример #14
0
    def test_rereview_flag_adult(self):
        mkt.set_user(user_factory())
        app = app_factory()

        app.set_content_ratings({
            mkt.ratingsbodies.ESRB:
            mkt.ratingsbodies.ESRB_E,
            mkt.ratingsbodies.CLASSIND:
            mkt.ratingsbodies.CLASSIND_18,
        })
        _flag_rereview_adult(app, mkt.ratingsbodies.ESRB,
                             mkt.ratingsbodies.ESRB_T)
        assert not app.rereviewqueue_set.count()
        assert not ActivityLog.objects.filter(
            action=mkt.LOG.CONTENT_RATING_TO_ADULT.id).exists()

        # Adult should get flagged to rereview.
        _flag_rereview_adult(app, mkt.ratingsbodies.ESRB,
                             mkt.ratingsbodies.ESRB_A)
        eq_(app.rereviewqueue_set.count(), 1)
        eq_(
            ActivityLog.objects.filter(
                action=mkt.LOG.CONTENT_RATING_TO_ADULT.id).count(), 1)

        # Test things same same if rating stays the same as adult.
        app.set_content_ratings({
            mkt.ratingsbodies.ESRB:
            mkt.ratingsbodies.ESRB_A,
        })
        _flag_rereview_adult(app, mkt.ratingsbodies.ESRB,
                             mkt.ratingsbodies.ESRB_A)
        eq_(app.rereviewqueue_set.count(), 1)
        eq_(
            ActivityLog.objects.filter(
                action=mkt.LOG.CONTENT_RATING_TO_ADULT.id).count(), 1)
Пример #15
0
 def test_dev_cannot_see_internal_rev(self):
     developer2 = user_factory()
     developer2.extension_set.add(self.extension)
     note = self.thread.notes.create(author=self.reviewer,
                                     body='abc',
                                     note_type=const.REVIEWER_COMMENT)
     ok_(not user_has_perm_note(note, self.developer, request=True))
Пример #16
0
    def test_rereview_flag_adult(self):
        mkt.set_user(user_factory())
        app = app_factory()

        app.set_content_ratings({
            mkt.ratingsbodies.ESRB: mkt.ratingsbodies.ESRB_E,
            mkt.ratingsbodies.CLASSIND: mkt.ratingsbodies.CLASSIND_18,
        })
        _flag_rereview_adult(app, mkt.ratingsbodies.ESRB,
                             mkt.ratingsbodies.ESRB_T)
        assert not app.rereviewqueue_set.count()
        assert not ActivityLog.objects.filter(
            action=mkt.LOG.CONTENT_RATING_TO_ADULT.id).exists()

        # Adult should get flagged to rereview.
        _flag_rereview_adult(app, mkt.ratingsbodies.ESRB,
                             mkt.ratingsbodies.ESRB_A)
        eq_(app.rereviewqueue_set.count(), 1)
        eq_(ActivityLog.objects.filter(
            action=mkt.LOG.CONTENT_RATING_TO_ADULT.id).count(), 1)

        # Test things same same if rating stays the same as adult.
        app.set_content_ratings({
            mkt.ratingsbodies.ESRB: mkt.ratingsbodies.ESRB_A,
        })
        _flag_rereview_adult(app, mkt.ratingsbodies.ESRB,
                             mkt.ratingsbodies.ESRB_A)
        eq_(app.rereviewqueue_set.count(), 1)
        eq_(ActivityLog.objects.filter(
            action=mkt.LOG.CONTENT_RATING_TO_ADULT.id).count(), 1)
Пример #17
0
 def test_incorrect_user(self):
     self.file.user = user_factory()
     self.file.save()
     form = forms.NewWebappForm({'upload': self.file.uuid},
                                request=self.request)
     assert not form.is_valid()
     eq_(form.ERRORS['user'], form.errors['upload'])
Пример #18
0
 def setUp(self):
     self.app = app_factory(status=mkt.STATUS_PENDING)
     self.version = self.app.latest_version
     self.thread = CommunicationThread.objects.create(
         _addon=self.app, _version=self.version)
     self.user = user_factory()
     self.app.addonuser_set.create(user=self.user)
Пример #19
0
    def test_all_results(self):
        for x in range(4):
            name = 'chr' + str(x)
            user_factory(email=name)

        # Test not at search limit.
        data = self.search(q='clouserw')
        eq_(len(data['objects']), 1)

        # Test search limit.
        data = self.search(q='chr')
        eq_(len(data['objects']), 2)

        # Test maximum search result.
        data = self.search(q='chr', limit='max')
        eq_(len(data['objects']), 3)
Пример #20
0
 def test_dev_can_see_dev(self):
     developer2 = user_factory()
     developer2.addonuser_set.create(addon=self.app)
     note = self.thread.notes.create(author=self.developer,
                                     body='abc',
                                     note_type=const.DEVELOPER_COMMENT)
     ok_(user_has_perm_note(note, developer2, request=True))
Пример #21
0
    def test_not_note_owner(self):
        self.note.update(author=user_factory())
        data = self._attachments(num=2)
        res = self.client.post(self.attachment_url, data=data,
                               content_type=MULTIPART_CONTENT)

        eq_(res.status_code, 403)
Пример #22
0
    def test_not_note_owner(self):
        self.note.update(author=user_factory())
        data = self._attachments(num=2)
        res = self.client.post(self.attachment_url, data=data,
                               content_type=MULTIPART_CONTENT)

        eq_(res.status_code, 403)
Пример #23
0
 def test_incorrect_user(self):
     self.file.user = user_factory()
     self.file.save()
     form = forms.NewWebappForm({'upload': self.file.uuid},
                                request=self.request)
     assert not form.is_valid()
     eq_(form.ERRORS['user'], form.errors['upload'])
Пример #24
0
    def setUp(self):
        self.extension = extension_factory()
        self.version = self.extension.latest_version
        self.user = UserProfile.objects.get(email="*****@*****.**")

        self.thread = CommunicationThread.objects.create(_extension=self.extension, _extension_version=self.version)
        self.author = user_factory(email="lol")
        self.note = CommunicationNote.objects.create(thread=self.thread, author=self.author, note_type=0, body="xyz")
Пример #25
0
    def setUp(self):
        super(TestNoteListView, self).setUp()
        self.extension = extension_factory(name='yip')
        self.extension_author = user_factory(email='*****@*****.**')
        self.extension_thread = self.extension.threads.create(
            _extension_version=self.extension.latest_version)
        self.extension_note = self.extension_thread.notes.create(
            author=self.extension_author, body='extension note')

        self.app = app_factory(name='yip', app_slug='yip')
        self.app_author = user_factory(email='*****@*****.**')
        self.app_thread = self.app.threads.create(
            _version=self.app.current_version)
        self.app_note = self.app_thread.notes.create(
            author=self.app_author, body='webapp note')

        self.url = reverse('api-v2:comm-note-list-all')
Пример #26
0
 def test_user_total(self):
     day = datetime.date(2009, 1, 1)
     p = user_factory(source=mkt.LOGIN_SOURCE_MMO_BROWSERID)
     p.update(created=day)
     jobs = tasks._get_monolith_jobs
     eq_(jobs(day)['mmo_user_count_total'][0]['count'](), 1)
     eq_(jobs()['mmo_user_count_total'][0]['count'](), 1)
     eq_(jobs()['mmo_user_count_new'][0]['count'](), 0)
Пример #27
0
    def setUp(self):
        super(TestNoteListView, self).setUp()
        self.extension = extension_factory(name='yip')
        self.extension_author = user_factory(email='*****@*****.**')
        self.extension_thread = self.extension.threads.create(
            _extension_version=self.extension.latest_version)
        self.extension_note = self.extension_thread.notes.create(
            author=self.extension_author, body='extension note')

        self.app = app_factory(name='yip', app_slug='yip')
        self.app_author = user_factory(email='*****@*****.**')
        self.app_thread = self.app.threads.create(
            _version=self.app.current_version)
        self.app_note = self.app_thread.notes.create(author=self.app_author,
                                                     body='webapp note')

        self.url = reverse('api-v2:comm-note-list-all')
Пример #28
0
 def test_user_total(self):
     day = datetime.date(2009, 1, 1)
     p = user_factory(source=mkt.LOGIN_SOURCE_MMO_BROWSERID)
     p.update(created=day)
     jobs = tasks._get_monolith_jobs
     eq_(jobs(day)['mmo_user_count_total'][0]['count'](), 1)
     eq_(jobs()['mmo_user_count_total'][0]['count'](), 1)
     eq_(jobs()['mmo_user_count_new'][0]['count'](), 0)
Пример #29
0
 def add_pay_account(self, provider=PROVIDER_BANGO):
     user = user_factory()
     acct = PaymentAccount.objects.create(
         solitude_seller=SolitudeSeller.objects.create(user=user),
         provider=provider, user=user)
     AddonPaymentAccount.objects.create(addon=self.webapp,
                                        payment_account=acct)
     return acct
Пример #30
0
 def add_pay_account(self, provider=PROVIDER_BANGO):
     user = user_factory()
     acct = PaymentAccount.objects.create(
         solitude_seller=SolitudeSeller.objects.create(user=user),
         provider=provider,
         user=user)
     AddonPaymentAccount.objects.create(addon=self.webapp,
                                        payment_account=acct)
     return acct
Пример #31
0
 def setUp(self):
     self.user = user_factory(email="porkbelly")
     mkt.set_user(self.user)
     self.profile = self.user
     self.addon = Webapp.objects.get()
     self.version = self.addon.latest_version
     self.thread = self._thread_factory()
     self.note = self._note_factory(self.thread)
     self.attachment1, self.attachment2 = self._attachments(self.note)
Пример #32
0
    def setUp(self):
        self.addon = Webapp.objects.get()
        self.version = self.addon.current_version
        self.user = UserProfile.objects.get(email="*****@*****.**")

        self.thread = CommunicationThread.objects.create(_addon=self.addon, _version=self.version)
        self.author = user_factory(email="lol")
        self.note = CommunicationNote.objects.create(thread=self.thread, author=self.author, note_type=0, body="xyz")
        self.obj = None
Пример #33
0
 def setUp(self):
     self.user = user_factory(email='porkbelly')
     mkt.set_user(self.user)
     self.profile = self.user
     self.addon = Webapp.objects.get()
     self.version = self.addon.latest_version
     self.thread = self._thread_factory()
     self.note = self._note_factory(self.thread)
     self.attachment1, self.attachment2 = self._attachments(self.note)
Пример #34
0
    def test_author(self):
        app = app_factory()
        user = user_factory(display_name='Bob')
        thread, note = create_comm_note(app, app.current_version, user, 'hue')

        data = serializers.NoteSerializer(note, context={
            'request': req_factory_factory()
        }).data
        eq_(data['author_meta']['name'], 'Bob')
        ok_(data['author_meta']['gravatar_hash'])
Пример #35
0
 def test_post_subscribers(self):
     # Same test as above, but add a suscriber. We only want to make sure
     # we are not causing a traceback because of that.
     reviewer = user_factory(email='*****@*****.**')
     self.grant_permission(reviewer, 'Apps:Review')
     EditorSubscription.objects.create(addon=self.app, user=reviewer)
     self._post(302)
     version = self.app.versions.latest()
     eq_(version.version, '1.0')
     eq_(version.all_files[0].status, mkt.STATUS_PENDING)
Пример #36
0
    def test_reviewer_comment(self, email):
        another_reviewer = user_factory()
        self._create(comm.REVIEWER_COMMENT, author=self.reviewer)
        self._create(comm.REVIEWER_COMMENT, author=another_reviewer)
        eq_(email.call_count, 1)

        recipients = self._recipients(email)
        assert self.reviewer.email in recipients
        assert self.developer.email not in recipients

        self._check_template(email.call_args, 'generic')
Пример #37
0
    def test_author(self):
        app = app_factory()
        user = user_factory(display_name='Bob')
        thread, note = create_comm_note(app, app.current_version, user, 'hue')

        data = serializers.NoteSerializer(note,
                                          context={
                                              'request': req_factory_factory()
                                          }).data
        eq_(data['author_meta']['name'], 'Bob')
        ok_(data['author_meta']['gravatar_hash'])
Пример #38
0
    def test_create_note_existing_thread(self):
        # Initial note.
        thread, note = create_comm_note(
            self.extension, self.extension.latest_version, self.user, 'huehue')

        # Second person joins thread.
        thread, last_word = create_comm_note(
            self.extension, self.extension.latest_version, user_factory(),
            'euheuh!', note_type=comm.MORE_INFO_REQUIRED)

        eq_(thread.thread_cc.count(), 2)
Пример #39
0
    def test_reviewer_comment(self, email):
        another_reviewer = user_factory()
        self._create(comm.REVIEWER_COMMENT, author=self.reviewer)
        self._create(comm.REVIEWER_COMMENT, author=another_reviewer)
        eq_(email.call_count, 1)

        recipients = self._recipients(email)
        assert self.reviewer.email in recipients
        assert self.developer.email not in recipients

        self._check_template(email.call_args, 'generic')
Пример #40
0
    def setUp(self):
        self.extension = extension_factory()
        self.version = self.extension.latest_version
        self.user = UserProfile.objects.get(email='*****@*****.**')

        self.thread = CommunicationThread.objects.create(
            _extension=self.extension, _extension_version=self.version)
        self.author = user_factory(email='lol')
        self.note = CommunicationNote.objects.create(thread=self.thread,
                                                     author=self.author,
                                                     note_type=0,
                                                     body='xyz')
Пример #41
0
 def test_get_leaderboards_last(self):
     users = []
     for i in range(6):
         users.append(user_factory())
     last_user = users.pop(len(users) - 1)
     for u in users:
         self._give_points(user=u)
     # Last user gets lower points by a moderation review.
     ReviewerScore.award_moderation_points(last_user, self.app, 1)
     leaders = ReviewerScore.get_leaderboards(last_user)
     eq_(leaders['user_rank'], 6)
     eq_(len(leaders['leader_top']), 3)
     eq_(len(leaders['leader_near']), 2)
Пример #42
0
 def test_iarc_app_data(self):
     self.app = app_factory()
     self.profile = user_factory()
     self.app.addonuser_set.create(user=self.profile)
     eq_(_iarc_app_data(self.app),
         {'StoreProductID': self.app.guid,
          'StoreProductURL': absolutify(self.app.get_url_path()),
          'EmailAddress': self.profile.email,
          'CompanyName': u'',
          'StoreDeveloperID': self.app.pk,
          'DeveloperEmail': self.profile.email,
          'Publish': True,
          'ProductName': unicode(self.app.name)})
Пример #43
0
 def test_get_leaderboards_last(self):
     users = []
     for i in range(6):
         users.append(user_factory())
     last_user = users.pop(len(users) - 1)
     for u in users:
         self._give_points(user=u)
     # Last user gets lower points by a moderation review.
     ReviewerScore.award_moderation_points(last_user, self.app, 1)
     leaders = ReviewerScore.get_leaderboards(last_user)
     eq_(leaders['user_rank'], 6)
     eq_(len(leaders['leader_top']), 3)
     eq_(len(leaders['leader_near']), 2)
Пример #44
0
    def test_get_attachment_not_note_perm(self):
        data = self._attachments(num=1)
        res = self.client.post(self.attachment_url, data=data,
                               content_type=MULTIPART_CONTENT)
        attachment_id = res.json['attachments'][0]['id']

        # Remove perms.
        self.note.update(author=user_factory())
        self.profile.addonuser_set.all().delete()
        get_attachment_url = reverse('comm-attachment-detail',
                                     args=[self.note.id, attachment_id])
        res = self.client.get(get_attachment_url)
        eq_(res.status_code, 403)
Пример #45
0
    def test_get_attachment_not_note_perm(self):
        data = self._attachments(num=1)
        res = self.client.post(self.attachment_url, data=data,
                               content_type=MULTIPART_CONTENT)
        attachment_id = res.json['attachments'][0]['id']

        # Remove perms.
        self.note.update(author=user_factory())
        self.profile.addonuser_set.all().delete()
        get_attachment_url = reverse('comm-attachment-detail',
                                     args=[self.note.id, attachment_id])
        res = self.client.get(get_attachment_url)
        eq_(res.status_code, 403)
Пример #46
0
 def test_app_data(self):
     self.app = app_factory()
     self.profile = user_factory()
     self.app.addonuser_set.create(user=self.profile)
     eq_(app_data(self.app),
         {'StoreProductID': self.app.guid,
          'StoreProductURL': absolutify(self.app.get_url_path()),
          'EmailAddress': self.profile.email,
          'CompanyName': u'',
          'StoreDeveloperID': self.app.pk,
          'DeveloperEmail': self.profile.email,
          'Publish': True,
          'ProductName': unicode(self.app.name)})
Пример #47
0
    def setUp(self):
        self.addon = Webapp.objects.get()
        self.version = self.addon.current_version
        self.user = UserProfile.objects.get(email='*****@*****.**')

        self.thread = CommunicationThread.objects.create(_addon=self.addon,
                                                         _version=self.version)
        self.author = user_factory(email='lol')
        self.note = CommunicationNote.objects.create(thread=self.thread,
                                                     author=self.author,
                                                     note_type=0,
                                                     body='xyz')
        self.obj = None
Пример #48
0
    def test_processing(self):
        """
        The mock client always returns the same data. Set up the app so it
        matches the submission ID and verify the data is saved as expected.
        """
        mkt.set_user(user_factory())
        app = app_factory()
        IARCInfo.objects.create(addon=app,
                                submission_id=52,
                                security_code='FZ32CU8')
        app.set_descriptors([
            'has_classind_violence',
            'has_esrb_strong_lang',
            'has_pegi_language',
            'has_pegi_online',
            'has_usk_lang',
        ])
        app.set_interactives([])
        app.set_content_ratings(
            {mkt.ratingsbodies.CLASSIND: mkt.ratingsbodies.CLASSIND_L})

        process_iarc_changes()
        app = app.reload()

        # Check ratings. CLASSIND should get updated.
        cr = app.content_ratings.get(
            ratings_body=mkt.ratingsbodies.CLASSIND.id)
        eq_(cr.rating, mkt.ratingsbodies.CLASSIND_14.id)
        cr = app.content_ratings.get(ratings_body=mkt.ratingsbodies.ESRB.id)
        eq_(cr.rating, mkt.ratingsbodies.ESRB_M.id)

        assert ActivityLog.objects.filter(
            action=mkt.LOG.CONTENT_RATING_CHANGED.id).count()

        # Check descriptors.
        rd = RatingDescriptors.objects.get(addon=app)
        self.assertSetEqual(rd.to_keys(), [
            'has_esrb_strong_lang',
            'has_classind_lang',
            'has_pegi_lang',
            'has_pegi_online',
            'has_usk_lang',
        ])

        # Check interactives.
        ri = RatingInteractives.objects.get(addon=app)
        self.assertSetEqual(ri.to_keys(), [
            'has_shares_info', 'has_shares_location', 'has_digital_purchases',
            'has_users_interact'
        ])
Пример #49
0
    def test_create_note_existing_thread(self):
        # Initial note.
        thread, note = create_comm_note(self.extension,
                                        self.extension.latest_version,
                                        self.user, 'huehue')

        # Second person joins thread.
        thread, last_word = create_comm_note(self.extension,
                                             self.extension.latest_version,
                                             user_factory(),
                                             'euheuh!',
                                             note_type=comm.MORE_INFO_REQUIRED)

        eq_(thread.thread_cc.count(), 2)
Пример #50
0
    def test_create_note_existing_thread(self):
        # Initial note.
        thread, note = create_comm_note(self.app, self.app.current_version, self.user, "huehue")

        # Second note from contact.
        thread, reply = create_comm_note(
            self.app, self.app.current_version, self.contact, "euheuh!", note_type=comm.REJECTION
        )

        # Third person joins thread.
        thread, last_word = create_comm_note(
            self.app, self.app.current_version, user_factory(), "euheuh!", note_type=comm.MORE_INFO_REQUIRED
        )

        eq_(thread.thread_cc.count(), 3)
Пример #51
0
 def test_iarc_app_data_not_public(self):
     self.app = app_factory()
     self.profile = user_factory()
     self.app.addonuser_set.create(user=self.profile)
     with mock.patch.object(self.app, 'is_public') as is_public_mock:
         is_public_mock.return_value = False
         eq_(_iarc_app_data(self.app),
             {'StoreProductID': self.app.guid,
              'StoreProductURL': absolutify(self.app.get_url_path()),
              'EmailAddress': self.profile.email,
              'CompanyName': u'',
              'StoreDeveloperID': self.app.pk,
              'DeveloperEmail': self.profile.email,
              'Publish': False,
              'ProductName': unicode(self.app.name)})
Пример #52
0
 def test_app_data_not_public(self):
     self.app = app_factory()
     self.profile = user_factory()
     self.app.addonuser_set.create(user=self.profile)
     with mock.patch.object(self.app, 'is_public') as is_public_mock:
         is_public_mock.return_value = False
         eq_(app_data(self.app),
             {'StoreProductID': self.app.guid,
              'StoreProductURL': absolutify(self.app.get_url_path()),
              'EmailAddress': self.profile.email,
              'CompanyName': u'',
              'StoreDeveloperID': self.app.pk,
              'DeveloperEmail': self.profile.email,
              'Publish': False,
              'ProductName': unicode(self.app.name)})
Пример #53
0
    def test_basic(self):
        sample_email = os.path.join(settings.ROOT, 'mkt', 'comm', 'tests',
                                    'emails', 'email.txt')
        req = self.get_request(data={'body': open(sample_email).read()})

        app = app_factory()
        user = user_factory()
        self.grant_permission(user, 'Admin:*')
        t = CommunicationThread.objects.create(_addon=app,
                                               _version=app.current_version)
        t.token.create(user=user, uuid='5a0b8a83d501412589cc5d562334b46b')

        res = post_email(req)
        eq_(res.status_code, 201)
        ok_(t.notes.count())
Пример #54
0
    def test_basic(self):
        sample_email = os.path.join(settings.ROOT, 'mkt', 'comm', 'tests',
                                    'emails', 'email.txt')
        req = self.get_request(data={'body': open(sample_email).read()})

        app = app_factory()
        user = user_factory()
        self.grant_permission(user, 'Admin:*')
        t = CommunicationThread.objects.create(_addon=app,
                                               _version=app.current_version)
        t.token.create(user=user, uuid='5a0b8a83d501412589cc5d562334b46b')

        res = post_email(req)
        eq_(res.status_code, 201)
        ok_(t.notes.count())
Пример #55
0
    def test_processing(self):
        """
        The mock client always returns the same data. Set up the app so it
        matches the submission ID and verify the data is saved as expected.
        """
        mkt.set_user(user_factory())
        app = app_factory()
        IARCInfo.objects.create(webapp=app, submission_id=52,
                                security_code='FZ32CU8')
        app.set_descriptors([
            'has_classind_violence',
            'has_esrb_strong_lang',
            'has_pegi_language', 'has_pegi_online',
            'has_usk_lang',
        ])
        app.set_interactives([])
        app.set_content_ratings({
            mkt.ratingsbodies.CLASSIND: mkt.ratingsbodies.CLASSIND_L
        })

        process_iarc_changes()
        app = app.reload()

        # Check ratings. CLASSIND should get updated.
        cr = app.content_ratings.get(
            ratings_body=mkt.ratingsbodies.CLASSIND.id)
        eq_(cr.rating, mkt.ratingsbodies.CLASSIND_14.id)
        cr = app.content_ratings.get(ratings_body=mkt.ratingsbodies.ESRB.id)
        eq_(cr.rating, mkt.ratingsbodies.ESRB_M.id)

        assert ActivityLog.objects.filter(
            action=mkt.LOG.CONTENT_RATING_CHANGED.id).count()

        # Check descriptors.
        rd = RatingDescriptors.objects.get(webapp=app)
        self.assertSetEqual(rd.to_keys(), [
            'has_esrb_strong_lang',
            'has_classind_lang',
            'has_pegi_lang', 'has_pegi_online',
            'has_usk_lang',
        ])

        # Check interactives.
        ri = RatingInteractives.objects.get(webapp=app)
        self.assertSetEqual(ri.to_keys(), [
            'has_shares_info', 'has_shares_location', 'has_digital_purchases',
            'has_users_interact'
        ])
Пример #56
0
    def test_visible_authors(self):
        AddonUser.objects.all().delete()
        for role in (mkt.AUTHOR_ROLE_DEV,
                     mkt.AUTHOR_ROLE_OWNER,
                     mkt.AUTHOR_ROLE_VIEWER,
                     mkt.AUTHOR_ROLE_SUPPORT):
            role_name = unicode(mkt.AUTHOR_CHOICES_NAMES[role])
            user = user_factory(display_name=role_name)
            role = AddonUser.objects.create(user=user,
                                            addon=self.app,
                                            role=role)
            self.app.addonuser_set.add(role)
        res = self.summary()

        eq_(sorted([u.display_name for u in res.context['authors']]),
            [unicode(mkt.AUTHOR_CHOICES_NAMES[mkt.AUTHOR_ROLE_DEV]),
             unicode(mkt.AUTHOR_CHOICES_NAMES[mkt.AUTHOR_ROLE_OWNER])])
Пример #57
0
    def test_create_note_existing_thread(self):
        # Initial note.
        thread, note = create_comm_note(self.app, self.app.current_version,
                                        self.user, 'huehue')

        # Second note from contact.
        thread, reply = create_comm_note(self.app,
                                         self.app.current_version,
                                         self.contact,
                                         'euheuh!',
                                         note_type=comm.REJECTION)

        # Third person joins thread.
        thread, last_word = create_comm_note(self.app,
                                             self.app.current_version,
                                             user_factory(),
                                             'euheuh!',
                                             note_type=comm.MORE_INFO_REQUIRED)

        eq_(thread.thread_cc.count(), 3)
Пример #58
0
 def setUp(self):
     self.request = RequestFactory().get('/')
     self.request.user = user_factory()
     self.file = FileUpload.objects.create(valid=True)
     self.file.user = self.request.user
     self.file.save()