예제 #1
0
파일: views.py 프로젝트: gkoberger/zamboni
def in_app_config(request, addon_id, addon, webapp=True):
    if addon.premium_type not in amo.ADDON_INAPPS:
        messages.error(request, 'Your app does not use payments.')
        return redirect(addon.get_dev_url('payments'))

    try:
        inapp_config = InappConfig.objects.get(addon=addon,
                                               status=amo.INAPP_STATUS_ACTIVE)
    except models.ObjectDoesNotExist:
        inapp_config = None

    inapp_form = InappConfigForm(request.POST or None,
                                 instance=inapp_config)

    if request.method == 'POST' and inapp_form.is_valid():
        new_inapp = inapp_form.save(commit=False)
        new_inapp.addon = addon
        new_inapp.status = amo.INAPP_STATUS_ACTIVE
        if not new_inapp.public_key:
            new_inapp.public_key = InappConfig.generate_public_key()
        new_inapp.save()
        if not new_inapp.has_private_key():
            new_inapp.set_private_key(InappConfig.generate_private_key())

        messages.success(request, _('Changes successfully saved.'))
        return redirect(addon.get_dev_url('in_app_config'))

    return jingo.render(request, 'developers/payments/in-app-config.html',
                        dict(addon=addon, inapp_form=inapp_form,
                             inapp_config=inapp_config))
예제 #2
0
파일: views.py 프로젝트: vdt/zamboni
def reset_in_app_config(request, addon_id, addon, config_id, webapp=True):
    if addon.premium_type not in amo.ADDON_INAPPS:
        messages.error(request, 'Your app does not use payments.')
        return redirect(addon.get_dev_url('payments'))

    cfg = get_object_or_404(InappConfig,
                            addon=addon,
                            status=amo.INAPP_STATUS_ACTIVE)
    msg = ('user reset in-app payment config %s; '
           'key: %r; app: %s' % (cfg.pk, cfg.public_key, addon.pk))
    log.info(msg)
    inapp_cef.log(request, addon, 'inapp_reset', msg, severity=6)
    cfg.update(status=amo.INAPP_STATUS_REVOKED)
    kw = dict(addon=cfg.addon,
              status=amo.INAPP_STATUS_ACTIVE,
              postback_url=cfg.postback_url,
              chargeback_url=cfg.chargeback_url,
              public_key=InappConfig.generate_public_key())
    new_cfg = InappConfig.objects.create(**kw)
    new_cfg.set_private_key(InappConfig.generate_private_key())
    messages.success(
        request,
        _('Old credentials revoked; '
          'new credentials were generated successfully.'))
    return redirect(addon.get_dev_url('in_app_config'))
예제 #3
0
def in_app_config(request, addon_id, addon, webapp=True):
    if addon.premium_type not in amo.ADDON_INAPPS:
        messages.error(request, 'Your app does not use payments.')
        return redirect(addon.get_dev_url('payments'))

    try:
        inapp_config = InappConfig.objects.get(addon=addon,
                                               status=amo.INAPP_STATUS_ACTIVE)
    except models.ObjectDoesNotExist:
        inapp_config = None

    inapp_form = InappConfigForm(request.POST or None, instance=inapp_config)

    if request.method == 'POST' and inapp_form.is_valid():
        new_inapp = inapp_form.save(commit=False)
        new_inapp.addon = addon
        new_inapp.status = amo.INAPP_STATUS_ACTIVE
        if not new_inapp.public_key:
            new_inapp.public_key = InappConfig.generate_public_key()
        new_inapp.save()
        if not new_inapp.has_private_key():
            new_inapp.set_private_key(InappConfig.generate_private_key())

        messages.success(request, _('Changes successfully saved.'))
        return redirect(addon.get_dev_url('in_app_config'))

    return jingo.render(
        request, 'developers/payments/in-app-config.html',
        dict(addon=addon, inapp_form=inapp_form, inapp_config=inapp_config))
예제 #4
0
 def test_any_active(self):
     assert not InappConfig.any_active(self.app)
     InappConfig.objects.create(addon=self.app,
                                status=amo.INAPP_STATUS_ACTIVE,
                                public_key='asd-1')
     assert InappConfig.any_active(self.app)
     self.assertRaises(ValueError, InappConfig.objects.create,
                       addon=self.app, status=amo.INAPP_STATUS_ACTIVE,
                       public_key='asd-2')
예제 #5
0
 def setUp(self):
     self.app = self.get_app()
     cfg = self.inapp_config = InappConfig(addon=self.app,
                                           status=amo.INAPP_STATUS_ACTIVE)
     cfg.public_key = self.app_id = InappConfig.generate_public_key()
     cfg.private_key = self.app_secret = InappConfig.generate_private_key()
     cfg.save()
     self.app.paypal_id = '*****@*****.**'
     self.app.save()
예제 #6
0
 def setUp(self):
     self.app = self.get_app()
     cfg = self.inapp_config = InappConfig(addon=self.app,
                                           status=amo.INAPP_STATUS_ACTIVE)
     cfg.public_key = self.app_id = InappConfig.generate_public_key()
     self.app_secret = InappConfig.generate_private_key()
     cfg.save()
     cfg.set_private_key(self.app_secret)
     self.app.paypal_id = '*****@*****.**'
     self.app.save()
예제 #7
0
 def test_any_active(self):
     assert not InappConfig.any_active(self.app)
     InappConfig.objects.create(addon=self.app,
                                status=amo.INAPP_STATUS_ACTIVE,
                                public_key='asd-1')
     assert InappConfig.any_active(self.app)
     self.assertRaises(ValueError,
                       InappConfig.objects.create,
                       addon=self.app,
                       status=amo.INAPP_STATUS_ACTIVE,
                       public_key='asd-2')
예제 #8
0
 def setUp(self):
     self.app = self.get_app()
     cfg = self.inapp_config = InappConfig(addon=self.app,
                                           status=amo.INAPP_STATUS_ACTIVE)
     cfg.public_key = self.app_id = InappConfig.generate_public_key()
     self.app_secret = InappConfig.generate_private_key()
     cfg.save()
     cfg.set_private_key(self.app_secret)
     self.app.paypal_id = '*****@*****.**'
     self.app.save()
     if hasattr(Price, '_currencies'):
         del Price._currencies  # needed to pick up fixtures.
예제 #9
0
파일: test_views.py 프로젝트: flyun/zamboni
 def setUp(self):
     self.app = self.get_app()
     cfg = self.inapp_config = InappConfig(addon=self.app,
                                           status=amo.INAPP_STATUS_ACTIVE)
     cfg.public_key = self.app_id = InappConfig.generate_public_key()
     self.app_secret = InappConfig.generate_private_key()
     cfg.save()
     cfg.set_private_key(self.app_secret)
     self.app.paypal_id = '*****@*****.**'
     self.app.save()
     if hasattr(Price, '_currencies'):
         del Price._currencies  # needed to pick up fixtures.
예제 #10
0
    def setUp(self):
        super(TestInappIPN, self).setUp()
        self.app = self.get_app()
        cfg = self.inapp_config = InappConfig(addon=self.app,
                                              status=amo.INAPP_STATUS_ACTIVE)
        cfg.public_key = self.app_id = InappConfig.generate_public_key()
        cfg.private_key = self.app_secret = InappConfig.generate_private_key()
        cfg.save()
        self.app.paypal_id = '*****@*****.**'
        self.app.save()

        waffle.models.Switch.objects.create(name='in-app-payments-ui',
                                            active=True)
        self.user = UserProfile.objects.get(email='*****@*****.**')
        assert self.client.login(username='******',
                                 password='******')
예제 #11
0
 def test_retry_private_keygen_until_unique(self, fake_conn):
     (fake_conn.expects('cursor').returns_fake()
               .expects('execute')
               .expects('fetchone').returns([1])
               .next_call().returns([1])
               .next_call().returns([0]))
     assert InappConfig.generate_private_key(max_tries=5)
예제 #12
0
파일: test_ipn.py 프로젝트: zzdjk6/zamboni
    def setUp(self):
        super(TestInappIPN, self).setUp()
        self.app = self.get_app()
        cfg = self.inapp_config = InappConfig(addon=self.app,
                                              status=amo.INAPP_STATUS_ACTIVE)
        cfg.public_key = self.app_id = InappConfig.generate_public_key()
        cfg.private_key = self.app_secret = InappConfig.generate_private_key()
        cfg.save()
        self.app.paypal_id = '*****@*****.**'
        self.app.save()

        waffle.models.Switch.objects.create(name='in-app-payments-ui',
                                            active=True)
        self.user = UserProfile.objects.get(email='*****@*****.**')
        assert self.client.login(username='******',
                                 password='******')
예제 #13
0
파일: views.py 프로젝트: dbialer/zamboni
def reset_in_app_config(request, addon_id, addon, config_id, webapp=True):
    if addon.premium_type not in amo.ADDON_INAPPS:
        messages.error(request, "Your app does not use payments.")
        return redirect(addon.get_dev_url("payments"))

    cfg = get_object_or_404(InappConfig, addon=addon, status=amo.INAPP_STATUS_ACTIVE)
    msg = "user reset in-app payment config %s; " "key: %r; app: %s" % (cfg.pk, cfg.public_key, addon.pk)
    log.info(msg)
    inapp_cef.log(request, addon, "inapp_reset", msg, severity=6)
    cfg.update(status=amo.INAPP_STATUS_REVOKED)
    kw = dict(
        addon=cfg.addon,
        status=amo.INAPP_STATUS_ACTIVE,
        postback_url=cfg.postback_url,
        chargeback_url=cfg.chargeback_url,
        public_key=InappConfig.generate_public_key(),
    )
    new_cfg = InappConfig.objects.create(**kw)
    new_cfg.set_private_key(InappConfig.generate_private_key())
    messages.success(request, _("Old credentials revoked; " "new credentials were generated successfully."))
    return redirect(addon.get_dev_url("in_app_config"))
예제 #14
0
 def test_retry_public_keygen_until_unique(self, fake_filter):
     (
         fake_filter.expects_call()
         .returns_fake()
         .expects("count")
         .returns(1)
         .next_call()
         .returns(1)
         .next_call()
         .returns(0)
     )
     assert InappConfig.generate_public_key(max_tries=5)
예제 #15
0
 def test_exhaust_public_keygen_attempts(self, fake_filter):
     fake_filter.expects_call().returns_fake().expects('count').returns(1)
     InappConfig.generate_public_key(max_tries=5)
예제 #16
0
 def test_retry_public_keygen_until_unique(self, fake_filter):
     (fake_filter.expects_call().returns_fake().expects('count').returns(
         1).next_call().returns(1).next_call().returns(0))
     assert InappConfig.generate_public_key(max_tries=5)
예제 #17
0
 def test_retry_private_keygen_until_unique(self, fake_conn):
     (fake_conn.expects('cursor').returns_fake().expects('execute').expects(
         'fetchone').returns([1]).next_call().returns(
             [1]).next_call().returns([0]))
     assert InappConfig.generate_private_key(max_tries=5)
예제 #18
0
 def test_exhaust_public_keygen_attempts(self, fake_filter):
     fake_filter.expects_call().returns_fake().expects('count').returns(1)
     InappConfig.generate_public_key(max_tries=5)
예제 #19
0
 def test_exhaust_private_keygen_attempts(self, fake_conn):
     (fake_conn.expects('cursor').returns_fake().expects('execute').expects(
         'fetchone').returns([1]))
     InappConfig.generate_private_key(max_tries=5)
예제 #20
0
 def test_generate_private_key(self):
     key = InappConfig.generate_private_key()
     assert key
예제 #21
0
 def test_generate_public_key(self):
     key = InappConfig.generate_public_key()
     assert key
예제 #22
0
 def test_any_active_excludes_config_under_edit(self):
     c = InappConfig.objects.create(addon=self.app,
                                    status=amo.INAPP_STATUS_ACTIVE,
                                    public_key='asd-1')
     assert not InappConfig.any_active(self.app, exclude_config=c.pk)
     c.save()  # no exception
예제 #23
0
 def test_any_active_excludes_config_under_edit(self):
     c = InappConfig.objects.create(addon=self.app,
                                    status=amo.INAPP_STATUS_ACTIVE,
                                    public_key='asd-1')
     assert not InappConfig.any_active(self.app, exclude_config=c.pk)
     c.save()  # no exception
예제 #24
0
 def test_generate_public_key(self):
     key = InappConfig.generate_public_key()
     assert key
예제 #25
0
 def test_generate_private_key(self):
     key = InappConfig.generate_private_key()
     assert key
예제 #26
0
 def test_exhaust_private_keygen_attempts(self, fake_conn):
     (fake_conn.expects('cursor').returns_fake()
               .expects('execute').expects('fetchone').returns([1]))
     InappConfig.generate_private_key(max_tries=5)