diff --git a/zebra/management/commands/test_stripe_webhook.py b/zebra/management/commands/test_stripe_webhook.py new file mode 100644 index 0000000..6f2ffda --- /dev/null +++ b/zebra/management/commands/test_stripe_webhook.py @@ -0,0 +1,38 @@ +import sys + +from zebra.signals import WEBHOOK_MAP + +try: + import json +except ImportError: + from django.utils import simplejson as json + +from django.core.management.base import BaseCommand, CommandError + +class Command(BaseCommand): + def add_arguments(self, parser): + parser.add_argument('webhook', metavar='webhook', + help="Webhook to test") + parser.add_argument('filenames', nargs='+', metavar='filename', + help="Filenames to read data from") + + def handle(self, *args, **options): + for filename in options['filenames']: + if filename == '-': + data = sys.stdin.read() + else: + with open(filename) as f: + data = f.read() + + full_json = json.loads(data) + + signal_name = full_json['type'].replace('.', '_') + + try: + signal = WEBHOOK_MAP[signal_name] + except KeyError: + raise CommandError( + "'%s' is not a valid signal name" % signal_name, + ) + + signal.send(sender=None, full_json=full_json)