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))
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'))
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))
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')
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()
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()
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.
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='******')
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)
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"))
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)
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)
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)
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)
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)
def test_generate_private_key(self): key = InappConfig.generate_private_key() assert key
def test_generate_public_key(self): key = InappConfig.generate_public_key() assert key
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
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)