Example #1
0
    def test_parse_ok(self):
        self.req.post.return_value = self.get_response('', 204)
        form = WebhookParseForm({'bt_payload': 'p', 'bt_signature': 's'})

        assert form.is_valid()
        self.req.post.assert_called_with(
            'http://m.o/parse',
            {'bt_signature': 's', 'bt_payload': 'p'}
        )
Example #2
0
    def test_parse_ok(self):
        self.req.post.return_value = self.get_response('', 204)
        form = WebhookParseForm({'bt_payload': 'p', 'bt_signature': 's'})

        assert form.is_valid()
        self.req.post.assert_called_with('http://m.o/parse', {
            'bt_signature': 's',
            'bt_payload': 'p'
        })
Example #3
0
def parse(request):
    form = WebhookParseForm(request.DATA)
    if not form.is_valid():
        raise FormError(form.errors)

    # Parse the gateway without doing a validation on this server.
    # The validation has happened on the solitude-auth server.
    gateway = get_client().Configuration.instantiate().gateway()
    payload = base64.decodestring(form.cleaned_data['bt_payload'])
    attributes = XmlUtil.dict_from_xml(payload)
    parsed = WebhookNotification(gateway, attributes['notification'])

    log.info('Received webhook: {p.kind}.'.format(p=parsed))
    debug_log.debug(parsed)
    Processor(parsed).process()
    return Response(status=204)
Example #4
0
def parse(request):
    form = WebhookParseForm(request.DATA)
    if not form.is_valid():
        raise FormError(form.errors)

    # Parse the gateway without doing a validation on this server.
    # The validation has happened on the solitude-auth server.
    gateway = get_client().Configuration.instantiate().gateway()
    payload = base64.decodestring(form.cleaned_data['bt_payload'])
    attributes = XmlUtil.dict_from_xml(payload)
    parsed = WebhookNotification(gateway, attributes['notification'])

    log.info('Received webhook: {p.kind}.'.format(p=parsed))
    debug_log.debug(parsed)

    processor = Processor(parsed)
    processor.process()
    data = processor.data
    return Response(data, status=200 if data else 204)
Example #5
0
 def test_parse_not_204(self):
     self.req.post.return_value = self.get_response('something', 200)
     form = WebhookParseForm({'bt_payload': 'p', 'bt_signature': 's'})
     assert not form.is_valid()
Example #6
0
 def test_parse_fails(self):
     self.req.post.return_value = self.get_response('nope', 403)
     form = WebhookParseForm({'bt_payload': 'p', 'bt_signature': 's'})
     assert not form.is_valid()
Example #7
0
 def test_parse_not_204(self):
     self.req.post.return_value = self.get_response('something', 200)
     form = WebhookParseForm({'bt_payload': 'p', 'bt_signature': 's'})
     assert not form.is_valid()
Example #8
0
 def test_parse_fails(self):
     self.req.post.return_value = self.get_response('nope', 403)
     form = WebhookParseForm({'bt_payload': 'p', 'bt_signature': 's'})
     assert not form.is_valid()