Skip to content

Commit 3013049

Browse files
author
Ofego Edafe
committed
MAPI-81 test auth get req
1 parent 52c18bd commit 3013049

File tree

4 files changed

+65
-47
lines changed

4 files changed

+65
-47
lines changed

message_media_messages/configuration.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ class Configuration(object):
3636

3737
# The username to use with HMAC authentication
3838
# TODO: Set an appropriate value
39-
hmac_auth_user_name = 'FxJMSlsivOoHAjDbWcO7'
39+
hmac_auth_user_name = os.environ.get('AUTHUSERNAME')
4040

4141
# The password to use with HMAC authentication
4242
# TODO: Set an appropriate value
43-
hmac_auth_password = 'HbR3jfA1b0J3AHVmPajTWuGGaDIsk4'
43+
hmac_auth_password = os.environ.get('AUTHPASSWORD')

tests/authorization_test.py

Lines changed: 55 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,10 @@
1111
from datetime import datetime
1212
from time import mktime
1313
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
1615
from message_media_messages.http.auth.auth_manager import AuthManager
1716
from message_media_messages.configuration import Configuration
1817
from message_media_messages.api_helper import APIHelper
19-
from message_media_messages.message_media_messages_client import MessageMediaMessagesClient
2018
from message_media_messages.models.send_messages_request import SendMessagesRequest
2119
from message_media_messages.models.message import Message
2220
from message_media_messages.models.format_enum import FormatEnum
@@ -56,6 +54,10 @@ def setUpClass(cls):
5654
stamp = mktime(now.timetuple())
5755
cls.date_header = format_date_time(stamp)
5856

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+
5961
def test_post_request_authorization_values_are_appropriate(self):
6062
http = urllib3.PoolManager()
6163
body = APIHelper.json_serialize(self.__class__.body)
@@ -67,7 +69,32 @@ def test_post_request_authorization_values_are_appropriate(self):
6769
expected_username = 'hmac username="FxJMSlsivOoHAjDbWcO7"'
6870
expected_algorithm = ' algorithm="hmac-sha1"'
6971
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
7198

7299
_request = http.request(
73100
'POST',
@@ -77,10 +104,34 @@ def test_post_request_authorization_values_are_appropriate(self):
77104
)
78105

79106
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)
80128
username, algorithm, header, signature = _request.getheader('Authorization').split(',')
129+
print(signature)
130+
print(expected_signature)
81131

82132
with self.subTest():
83133
self.assertEqual(expected_username, username)
84134
self.assertEqual(expected_header, header)
85135
self.assertEqual(expected_algorithm, algorithm)
86136
self.assertEqual(expected_signature, signature)
137+

tests/sendMessageTest.py renamed to tests/messages_test.py

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,31 +6,19 @@
66
This file was automatically generated for MessageMedia by APIMATIC v2.0 ( https://apimatic.io ).
77
"""
88

9-
import hashlib
109
import unittest
11-
from datetime import datetime
12-
from time import mktime
13-
from wsgiref.handlers import format_date_time
1410
from message_media_messages.exceptions.api_exception import APIException
15-
from tests.testConfiguration import TestConfiguration
16-
from message_media_messages.http.auth.auth_manager import AuthManager
17-
from message_media_messages.configuration import Configuration
18-
from message_media_messages.api_helper import APIHelper
11+
from tests.test_util import TestUtility
1912
from message_media_messages.message_media_messages_client import MessageMediaMessagesClient
20-
from message_media_messages.models.send_messages_request import SendMessagesRequest
21-
from message_media_messages.models.message import Message
22-
from message_media_messages.models.format_enum import FormatEnum
23-
import urllib3
2413

2514

26-
class Test_MM_send_message(unittest.TestCase):
27-
"""@classmethod
28-
def setUpClass(cls):"""
15+
16+
class TestMessages(unittest.TestCase):
2917

3018
# Testing successful message to MM endpoint
3119
def test_successful_message_to_endpoint(self):
3220
use_hmac_authentication = True
33-
body = TestConfiguration.create_body()
21+
body = TestUtility.create_body()
3422

3523
client = MessageMediaMessagesClient(use_hmac_authentication)
3624
messages_controller = client.messages
@@ -44,7 +32,7 @@ def test_unsuccessful_request_raises_exception(self):
4432
auth_user_name = 'Rubbish'
4533
auth_password = 'Random'
4634
use_hmac_authentication = True
47-
body = TestConfiguration.create_body()
35+
body = TestUtility.create_body()
4836

4937
client = MessageMediaMessagesClient(auth_user_name, auth_password, use_hmac_authentication)
5038
messages_controller = client.messages

tests/testConfiguration.py renamed to tests/test_util.py

Lines changed: 3 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -16,33 +16,12 @@
1616
from message_media_messages.models.send_messages_request import SendMessagesRequest
1717

1818

19-
class TestConfiguration(object):
20-
"""A class used for configuring the sendMessageTests by a user.
19+
class TestUtility(object):
2120

22-
This class need not be instantiated and all properties and methods
23-
are accessible without instance creation.
24-
25-
"""
26-
27-
"""def create_auth(url, request_type, date_header, content_hash):
28-
content_header = "x-Content-MD5 "
29-
content_signature = "x-Content-MD5: {}\n".format(content_hash)
30-
31-
hmac_signature = TestConfiguration.create_signature(date_header,
32-
content_signature,
33-
url,
34-
request_type)
35-
36-
joined = 'username="{}", algorithm="hmac-sha1", headers="date {}'\
37-
'request-line", signature="{}"'\
38-
.format(Configuration.hmac_auth_user_name, content_header, hmac_signature)
39-
40-
header_value = "hmac {}".format(joined)
41-
return header_value"""
4221
@staticmethod
4322
def create_signature(date, content_signature, url, request_type, wrapper=None):
4423
signature = ' signature="'
45-
signing_string = "date: {}\n{}{} {} HTTP/1.1"\
24+
signing_string = "date: {}\n{}{} {} HTTP/1.1" \
4625
.format(date, content_signature, request_type, url)
4726

4827
hashed = hmac.new(Configuration.hmac_auth_password.encode("utf-8"),
@@ -59,7 +38,7 @@ def create_body():
5938
body.messages = []
6039
body.messages.append(Message())
6140
body.messages[0].content = 'My tests message'
62-
body.messages[0].destination_number = '+My Number'
41+
body.messages[0].destination_number = '+61452549798'
6342
body.messages[0].format = FormatEnum.SMS
6443

6544
return body

0 commit comments

Comments
 (0)