2
2
3
3
from __future__ import annotations
4
4
5
+ import json
5
6
from typing import Any , Dict
6
7
from datetime import datetime , timezone
7
8
12
13
verify_webhook_event_signature ,
13
14
)
14
15
16
+ # Signature Creation ---------------------------------------------------------
17
+
15
18
16
19
def test_create_webhook_signature () -> None :
17
20
"""Test webhook signature creation."""
@@ -33,16 +36,16 @@ def test_create_webhook_signature() -> None:
33
36
assert signature != different_signature
34
37
35
38
39
+ # Webhook Verification --------------------------------------------------------
40
+
41
+
36
42
def test_verify_webhook_event_signature_valid () -> None :
37
43
"""Test webhook signature verification with valid signature."""
38
44
secret = "test-secret-key"
39
45
timestamp = "2023-01-01T00:00:00Z"
40
46
41
- # Create test webhook
42
47
payload = WebhookTestPayload (test = "ok" )
43
48
webhook = WebhookTest (type = "test" , timestamp = datetime .now (timezone .utc ), payload = payload )
44
-
45
- # Create signature
46
49
signature = create_webhook_signature (webhook .payload .model_dump (), timestamp , secret )
47
50
48
51
# Verify signature
@@ -88,7 +91,7 @@ def test_verify_webhook_event_signature_wrong_secret() -> None:
88
91
89
92
# Create signature with correct secret
90
93
signature = create_webhook_signature (
91
- payload = webhook . payload .model_dump (),
94
+ payload = payload .model_dump (),
92
95
timestamp = timestamp ,
93
96
secret = "test-secret-key" ,
94
97
)
@@ -112,13 +115,13 @@ def test_verify_webhook_event_signature_string_body() -> None:
112
115
# Create test webhook
113
116
payload = WebhookTestPayload (test = "ok" )
114
117
webhook = WebhookTest (type = "test" , timestamp = datetime .now (timezone .utc ), payload = payload )
115
-
116
- # Create signature
117
118
signature = create_webhook_signature (webhook .payload .model_dump (), timestamp , secret )
118
119
119
- # Verify with string body
120
120
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 ,
122
125
)
123
126
124
127
assert verified_webhook is not None
0 commit comments