11
11
from datetime import datetime
12
12
from time import mktime
13
13
from wsgiref .handlers import format_date_time
14
- from message_media_messages .exceptions .api_exception import APIException
15
- from tests .testConfiguration import TestConfiguration
14
+ from tests .test_util import TestUtility
16
15
from message_media_messages .http .auth .auth_manager import AuthManager
17
16
from message_media_messages .configuration import Configuration
18
17
from message_media_messages .api_helper import APIHelper
19
- from message_media_messages .message_media_messages_client import MessageMediaMessagesClient
20
18
from message_media_messages .models .send_messages_request import SendMessagesRequest
21
19
from message_media_messages .models .message import Message
22
20
from message_media_messages .models .format_enum import FormatEnum
@@ -56,6 +54,10 @@ def setUpClass(cls):
56
54
stamp = mktime (now .timetuple ())
57
55
cls .date_header = format_date_time (stamp )
58
56
57
+ cls .content_signature = "x-Content-MD5: {}\n " .format (cls .content_hash )
58
+ cls .expected_signature = TestConfiguration .create_signature (cls .date_header , cls .content_signature ,
59
+ cls ._query_url , 'POST' , True )
60
+
59
61
def test_post_request_authorization_values_are_appropriate (self ):
60
62
http = urllib3 .PoolManager ()
61
63
body = APIHelper .json_serialize (self .__class__ .body )
@@ -67,7 +69,32 @@ def test_post_request_authorization_values_are_appropriate(self):
67
69
expected_username = 'hmac username="FxJMSlsivOoHAjDbWcO7"'
68
70
expected_algorithm = ' algorithm="hmac-sha1"'
69
71
expected_header = ' headers="date x-Content-MD5 request-line"'
70
- expected_signature = TestConfiguration .create_signature (date_header , content_signature , query_url , 'POST' , True )
72
+ expected_signature = TestUtility .create_signature (date_header , content_signature , query_url , 'POST' , True )
73
+
74
+ _request = http .request (
75
+ 'POST' ,
76
+ query_url ,
77
+ body = body ,
78
+ headers = request_header
79
+ )
80
+
81
+ AuthManager .apply_hmac_auth (_request , query_url , body )
82
+ username , algorithm , header , signature = _request .getheader ('Authorization' ).split (',' )
83
+ print (signature )
84
+ print (expected_signature )
85
+
86
+ with self .subTest ():
87
+ self .assertEqual (expected_username , username )
88
+ self .assertEqual (expected_header , header )
89
+ self .assertEqual (expected_algorithm , algorithm )
90
+ self .assertEqual (expected_signature , signature )
91
+
92
+ def test_MD5_content_hash_equivalent_to_body (self ):
93
+ http = urllib3 .PoolManager ()
94
+ body = APIHelper .json_serialize (self .__class__ .body )
95
+ md5 = self .__class__ .content_hash
96
+ query_url = self .__class__ ._query_url
97
+ request_header = self .__class__ ._headers
71
98
72
99
_request = http .request (
73
100
'POST' ,
@@ -77,10 +104,34 @@ def test_post_request_authorization_values_are_appropriate(self):
77
104
)
78
105
79
106
AuthManager .apply_hmac_auth (_request , query_url , body )
107
+ requestMD5 = _request .getheader ('x-Content-MD5' )
108
+ assert md5 == requestMD5
109
+
110
+ def test_get_request_authorization_values_are_appropriate (self ):
111
+ http = urllib3 .PoolManager ()
112
+ date_header = self .__class__ .date_header
113
+ request_header = self .__class__ ._headers
114
+ query_url = self .__class__ ._query_url
115
+ content_signature = ""
116
+ expected_username = 'hmac username=""'
117
+ expected_algorithm = ' algorithm="hmac-sha1"'
118
+ expected_header = ' headers="date request-line"'
119
+ expected_signature = TestUtility .create_signature (date_header , content_signature , query_url , 'GET' , True )
120
+
121
+ _request = http .request (
122
+ 'GET' ,
123
+ query_url ,
124
+ headers = request_header
125
+ )
126
+
127
+ AuthManager .apply_hmac_auth (_request , query_url )
80
128
username , algorithm , header , signature = _request .getheader ('Authorization' ).split (',' )
129
+ print (signature )
130
+ print (expected_signature )
81
131
82
132
with self .subTest ():
83
133
self .assertEqual (expected_username , username )
84
134
self .assertEqual (expected_header , header )
85
135
self .assertEqual (expected_algorithm , algorithm )
86
136
self .assertEqual (expected_signature , signature )
137
+
0 commit comments