11import pytest
2-
32from datetime import datetime
4-
53from hubspot .exceptions import InvalidSignatureVersionError , InvalidSignatureTimestampError
64from hubspot .utils .signature import Signature
75
119 "request_body" : "{'example_field':'example_value'}" ,
1210 "url" : "https://www.example.com/webhook_uri" ,
1311 "http_method" : "POST" ,
14- "timestamp" : 15000000 ,
12+ "timestamp" : str ( int ( datetime . now (). timestamp () * 1000 )) ,
1513}
1614
1715
@@ -48,10 +46,12 @@ def test_get_signature__v2():
4846
4947def test_get_signature__v3 ():
5048 data = {
51- "signature" : "HPW73RUtKmcYoEDADG0s6MmGFWUzWJKAW07r8RDgcQw=" ,
52- "signature_version" : "v3"
53- }
49+ "signature" : "K36dawei4A+QBNolUOqo7s91KQDWQ5MXZ/QufNYuk/Y=" ,
50+ "signature_version" : "v3" ,
51+ }
52+
5453 data .update (TEST_DATA )
54+ data ["timestamp" ] = "1693657560000"
5555
5656 signature = Signature .get_signature (
5757 data ["client_secret" ],
@@ -66,13 +66,11 @@ def test_get_signature__v3():
6666
6767
6868def test_get_signature__wrong_version ():
69-
7069 with pytest .raises (InvalidSignatureVersionError ):
7170 Signature .get_signature (
7271 TEST_DATA ["client_secret" ],
7372 TEST_DATA ["request_body" ],
7473 "wrong_signature_version"
75-
7674 )
7775
7876
@@ -84,7 +82,6 @@ def test_is_valid__v1():
8482 TEST_DATA ["client_secret" ],
8583 TEST_DATA ["request_body" ],
8684 signature_version = "v1"
87-
8885 )
8986
9087 assert result
@@ -120,13 +117,12 @@ def test_is_valid__v2_get_method():
120117
121118
122119def test_is_valid__v3 ():
123- timestamp = datetime .now ().timestamp ()
124120 signature = Signature .get_signature (
125121 TEST_DATA ["client_secret" ],
126122 TEST_DATA ["request_body" ],
127123 signature_version = "v3" ,
128124 http_uri = TEST_DATA ["url" ],
129- timestamp = timestamp
125+ timestamp = TEST_DATA [ " timestamp" ]
130126 )
131127
132128 result = Signature .is_valid (
@@ -135,7 +131,7 @@ def test_is_valid__v3():
135131 TEST_DATA ["request_body" ],
136132 signature_version = "v3" ,
137133 http_uri = TEST_DATA ["url" ],
138- timestamp = timestamp
134+ timestamp = TEST_DATA [ " timestamp" ]
139135 )
140136
141137 assert result
@@ -161,13 +157,14 @@ def test_is_valid__none_timestamp():
161157
162158
163159def test_is_valid__expired_timestamp ():
164- timestamp = datetime .now ().timestamp ()
160+ expired_timestamp = str (int ((datetime .now ().timestamp () - Signature .MAX_ALLOWED_TIMESTAMP - 1 ) * 1000 ))
161+
165162 signature = Signature .get_signature (
166163 TEST_DATA ["client_secret" ],
167164 TEST_DATA ["request_body" ],
168165 signature_version = "v3" ,
169166 http_uri = TEST_DATA ["url" ],
170- timestamp = timestamp
167+ timestamp = expired_timestamp
171168 )
172169
173170 with pytest .raises (InvalidSignatureTimestampError ):
@@ -177,5 +174,17 @@ def test_is_valid__expired_timestamp():
177174 TEST_DATA ["request_body" ],
178175 signature_version = "v3" ,
179176 http_uri = TEST_DATA ["url" ],
180- timestamp = timestamp - Signature . MAX_ALLOWED_TIMESTAMP
177+ timestamp = expired_timestamp
181178 )
179+
180+
181+ def test_is_timestamp_valid__valid_timestamp ():
182+ current_timestamp = str (int (datetime .now ().timestamp () * 1000 ))
183+
184+ assert Signature ._is_timestamp_valid (current_timestamp ) is True
185+
186+
187+ def test_is_timestamp_valid__expired_timestamp ():
188+ expired_timestamp = str (int ((datetime .now ().timestamp () - Signature .MAX_ALLOWED_TIMESTAMP - 10 ) * 1000 ))
189+
190+ assert Signature ._is_timestamp_valid (expired_timestamp ) is False
0 commit comments