Skip to content

Commit

Permalink
Merge pull request #110 from austinmroczek/move_soap
Browse files Browse the repository at this point in the history
Move soap
  • Loading branch information
austinmroczek authored Mar 27, 2021
2 parents e1f94bc + 6a08e5f commit 6d70383
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 18 deletions.
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
setup(
name="total_connect_client",
py_modules=["total_connect_client"],
version="0.57",
version="0.58",
description="Interact with Total Connect 2 alarm systems",
author="Craig J. Midwinter",
author_email="[email protected]",
Expand Down
2 changes: 1 addition & 1 deletion tests/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ def create_client():
RESPONSE_DISARMED,
]

with patch("zeep.Client", autospec=True), patch(
with patch(
"TotalConnectClient.TotalConnectClient.request", side_effect=responses
) as mock_request:
client = TotalConnectClient.TotalConnectClient(
Expand Down
6 changes: 3 additions & 3 deletions tests/test_client_init.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ def tests_init_usercodes_none(self):
RESPONSE_DISARMED,
]

with patch("zeep.Client", autospec=True), patch(
with patch(
"TotalConnectClient.TotalConnectClient.request", side_effect=responses
) as mock_request:
client = TotalConnectClient.TotalConnectClient(
Expand All @@ -50,7 +50,7 @@ def tests_init_locations_empty(self):
RESPONSE_AUTHENTICATE_EMPTY,
]

with patch("zeep.Client", autospec=True), patch(
with patch(
"TotalConnectClient.TotalConnectClient.request", side_effect=responses
) as mock_request, pytest.raises(Exception):

Expand All @@ -68,7 +68,7 @@ def tests_init_usercodes_string(self):
RESPONSE_DISARMED,
]

with patch("zeep.Client", autospec=True), patch(
with patch(
"TotalConnectClient.TotalConnectClient.request", side_effect=responses
) as mock_request:
client = TotalConnectClient.TotalConnectClient(
Expand Down
36 changes: 24 additions & 12 deletions tests/test_client_request.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,11 @@ def tests_request_init(self):
RESPONSE_DISARMED,
]

with patch("zeep.Client", autospec=True), patch(
with patch(
"zeep.helpers.serialize_object", side_effect=serialize_responses
), patch("builtins.eval", side_effect=eval_responses) as mock_request:
), patch("TotalConnectClient.TotalConnectClient.setup_soap"), patch(
"builtins.eval", side_effect=eval_responses
) as mock_request:
client = TotalConnectClient.TotalConnectClient(
"username", "password", usercodes=None
)
Expand All @@ -79,9 +81,11 @@ def tests_request_init_bad_user_or_password(self):
RESPONSE_BAD_USER_OR_PASSWORD,
]

with patch("zeep.Client", autospec=True), patch(
with patch(
"zeep.helpers.serialize_object", side_effect=serialize_responses
), patch("builtins.eval", side_effect=eval_responses) as mock_request:
), patch("TotalConnectClient.TotalConnectClient.setup_soap"), patch(
"builtins.eval", side_effect=eval_responses
) as mock_request:
client = TotalConnectClient.TotalConnectClient(
"username", "password", usercodes=None
)
Expand All @@ -101,9 +105,11 @@ def tests_request_init_failed_to_connect(self):
)
serialize_responses.append(RESPONSE_FAILED_TO_CONNECT)

with patch("zeep.Client", autospec=True), patch(
with patch(
"zeep.helpers.serialize_object", side_effect=serialize_responses
), patch("time.sleep", autospec=True), patch(
), patch("TotalConnectClient.TotalConnectClient.setup_soap"), patch(
"time.sleep", autospec=True
), patch(
"builtins.eval", side_effect=eval_responses
) as mock_request, pytest.raises(
Exception
Expand Down Expand Up @@ -134,9 +140,11 @@ def tests_request_connection_error(self):
)
serialize_responses.append(RESPONSE_CONNECTION_ERROR)

with patch("zeep.Client", autospec=True), patch(
with patch(
"zeep.helpers.serialize_object", side_effect=serialize_responses
), patch("time.sleep", autospec=True), patch(
), patch("TotalConnectClient.TotalConnectClient.setup_soap"), patch(
"time.sleep", autospec=True
), patch(
"builtins.eval", side_effect=eval_responses
) as mock_request, pytest.raises(
Exception
Expand Down Expand Up @@ -185,9 +193,11 @@ def tests_request_invalid_session(self):
RESPONSE_ARMED_AWAY,
]

with patch("zeep.Client", autospec=True), patch(
with patch(
"zeep.helpers.serialize_object", side_effect=serialize_responses
), patch("builtins.eval", side_effect=eval_responses) as mock_request:
), patch("TotalConnectClient.TotalConnectClient.setup_soap"), patch(
"builtins.eval", side_effect=eval_responses
) as mock_request:
client = TotalConnectClient.TotalConnectClient(
"username", "password", usercodes=None
)
Expand All @@ -208,9 +218,11 @@ def tests_request_unknown_result_code(self):
RESPONSE_UNKNOWN,
]

with patch("zeep.Client", autospec=True), patch(
with patch(
"zeep.helpers.serialize_object", side_effect=serialize_responses
), patch("builtins.eval", side_effect=eval_responses) as mock_request:
), patch("TotalConnectClient.TotalConnectClient.setup_soap"), patch(
"builtins.eval", side_effect=eval_responses
) as mock_request:
client = TotalConnectClient.TotalConnectClient(
"username", "password", usercodes=None
)
Expand Down
11 changes: 10 additions & 1 deletion total_connect_client/TotalConnectClient.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,9 @@ def __init__(
"""Initialize."""
self.times = {}
self.time_start = time.time()
self.soapClient = zeep.Client("https://rs.alarmnet.com/TC21api/tc2.asmx?WSDL")
self.soapClient = None
self.soap_base = "self.soapClient.service."
self.soap_ready = False

self.applicationId = "14588"
self.applicationVersion = "1.0.34"
Expand Down Expand Up @@ -127,8 +128,16 @@ def get_times(self):

return msg

def setup_soap(self):
"""Set up soap for use."""
self.soapClient = zeep.Client("https://rs.alarmnet.com/TC21api/tc2.asmx?WSDL")
self.soap_ready = True

def request(self, request, attempts=0):
"""Send a SOAP request."""
if self.soap_ready is False:
self.setup_soap()

if attempts < self.MAX_REQUEST_ATTEMPTS:
attempts += 1
response = eval(self.soap_base + request)
Expand Down

0 comments on commit 6d70383

Please sign in to comment.