22
33from __future__ import annotations
44
5+ import json
56from typing import Any , Dict
67from datetime import datetime , timezone
78
1213 verify_webhook_event_signature ,
1314)
1415
16+ # Signature Creation ---------------------------------------------------------
17+
1518
1619def test_create_webhook_signature () -> None :
1720 """Test webhook signature creation."""
@@ -33,16 +36,16 @@ def test_create_webhook_signature() -> None:
3336 assert signature != different_signature
3437
3538
39+ # Webhook Verification --------------------------------------------------------
40+
41+
3642def test_verify_webhook_event_signature_valid () -> None :
3743 """Test webhook signature verification with valid signature."""
3844 secret = "test-secret-key"
3945 timestamp = "2023-01-01T00:00:00Z"
4046
41- # Create test webhook
4247 payload = WebhookTestPayload (test = "ok" )
4348 webhook = WebhookTest (type = "test" , timestamp = datetime .now (timezone .utc ), payload = payload )
44-
45- # Create signature
4649 signature = create_webhook_signature (webhook .payload .model_dump (), timestamp , secret )
4750
4851 # Verify signature
@@ -88,7 +91,7 @@ def test_verify_webhook_event_signature_wrong_secret() -> None:
8891
8992 # Create signature with correct secret
9093 signature = create_webhook_signature (
91- payload = webhook . payload .model_dump (),
94+ payload = payload .model_dump (),
9295 timestamp = timestamp ,
9396 secret = "test-secret-key" ,
9497 )
@@ -112,13 +115,13 @@ def test_verify_webhook_event_signature_string_body() -> None:
112115 # Create test webhook
113116 payload = WebhookTestPayload (test = "ok" )
114117 webhook = WebhookTest (type = "test" , timestamp = datetime .now (timezone .utc ), payload = payload )
115-
116- # Create signature
117118 signature = create_webhook_signature (webhook .payload .model_dump (), timestamp , secret )
118119
119- # Verify with string body
120120 verified_webhook = verify_webhook_event_signature (
121- body = webhook .model_dump (), secret = secret , expected_signature = signature , timestamp = timestamp
121+ body = json .dumps (webhook .model_dump ()),
122+ secret = secret ,
123+ timestamp = timestamp ,
124+ expected_signature = signature ,
122125 )
123126
124127 assert verified_webhook is not None
0 commit comments