def test_initialize_from_env(self): with mock.patch.object(os, 'environ', new={'PUSHER_URL':'https://*****:*****@somehost/apps/42'}): pusher = Pusher.from_env() self.assertEqual(pusher.ssl, True) self.assertEqual(pusher.key, u'plah') self.assertEqual(pusher.secret, u'bob') self.assertEqual(pusher.host, u'somehost') self.assertEqual(pusher.app_id, u'42') with mock.patch.object(os, 'environ', new={'PUSHER_DSN':'https://*****:*****@somehost/apps/42'}): pusher = Pusher.from_env('PUSHER_DSN') self.assertEqual(pusher.ssl, True) self.assertEqual(pusher.key, u'plah') self.assertEqual(pusher.secret, u'bob') self.assertEqual(pusher.host, u'somehost') self.assertEqual(pusher.app_id, u'42')
def process_transaction(self, request, pk): if request.GET.get("secret") != settings.BLOCKCHAIN_CALLBACK_SECRET: raise ParseError() try: value_in_satoshi = int(request.GET["value"]) transaction_hash = request.GET["transaction_hash"] except (KeyError, ValueError): raise ParseError("bad or missing value") value_in_btc = Decimal(value_in_satoshi / 100000000) account = get_object_or_404(CoinAccount.objects.all(), pk=pk) value_in_usd = get_bitcoin_price() * value_in_btc Transaction.objects.get_or_create(address=transaction_hash, defaults={ 'account': account, 'type': Transaction.RECEIVED, 'amount': value_in_btc, 'value_usd': value_in_usd, }) serializer = self.get_serializer(account) pusher_client = Pusher.from_env(json_encoder=UUIDEncoder) pusher_client.trigger(str(account.user.pk), 'account-changes', serializer.data) return Response('*ok*', status=HTTP_200_OK, content_type='text/plain')