Add unit tests for authentication and webhook parsing
- Implement tests for basic and bearer authentication headers in `test_auth.py`. - Create tests for the `EasybillWebhookParser` in `test_webhooks.py`, covering JSON and form-encoded payloads, as well as a generic parse and acknowledgement method.
This commit is contained in:
commit
caacb339dd
550 changed files with 127217 additions and 0 deletions
58
tests/test_webhooks.py
Normal file
58
tests/test_webhooks.py
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
from easybill_client.webhooks import EasybillWebhookParser
|
||||
|
||||
|
||||
def test_parser_reads_headers_and_payload():
|
||||
parser = EasybillWebhookParser(secret="topsecret")
|
||||
|
||||
payload = {"id": 42, "number": "RE-42"}
|
||||
headers = {
|
||||
"X-easybill-Event": "document.completed",
|
||||
"X-easybill-Webhook-Delivery": "4711",
|
||||
}
|
||||
|
||||
envelope = parser.parse_json(headers=headers, payload=payload)
|
||||
|
||||
assert envelope.event == "document.completed"
|
||||
assert envelope.delivery_id == "4711"
|
||||
assert envelope.resource_id == 42
|
||||
assert envelope.payload == payload
|
||||
|
||||
|
||||
def test_parser_supports_form_encoded_payload():
|
||||
parser = EasybillWebhookParser()
|
||||
|
||||
headers = {
|
||||
"X-easybill-Event": "customer.update",
|
||||
"X-easybill-Webhook-Delivery": "99",
|
||||
}
|
||||
form_data = {
|
||||
"id": "15",
|
||||
"customer_id": "15",
|
||||
"company_name": "ACME GmbH",
|
||||
}
|
||||
|
||||
envelope = parser.parse_form(headers=headers, form_data=form_data)
|
||||
|
||||
assert envelope.event == "customer.update"
|
||||
assert envelope.delivery_id == "99"
|
||||
assert envelope.resource_id == 15
|
||||
assert envelope.payload["company_name"] == "ACME GmbH"
|
||||
|
||||
|
||||
def test_generic_parse_and_acknowledgement():
|
||||
parser = EasybillWebhookParser()
|
||||
|
||||
headers = {
|
||||
"X-easybill-Event": "document.completed",
|
||||
"X-easybill-Webhook-Delivery": "123",
|
||||
}
|
||||
|
||||
envelope = parser.parse(
|
||||
headers=headers,
|
||||
payload={"id": 7, "status": "done"},
|
||||
content_type="application/json",
|
||||
)
|
||||
|
||||
assert envelope.event == "document.completed"
|
||||
assert envelope.resource_id == 7
|
||||
assert parser.build_acknowledgement() == {"status": "ok"}
|
||||
Loading…
Add table
Add a link
Reference in a new issue