Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_creating_exception_from_call_error():
call_error = CallError(
unique_id="1337",
error_code="ProtocolError",
error_description="Something went wrong",
error_details="Some details about the error"
)
assert call_error.to_exception() == ProtocolError(
description="Something went wrong",
details="Some details about the error"
)
def test_call_error_representation():
call = CallError(
unique_id=1,
error_code="GenericError",
error_description="Some message",
error_details={}
)
assert str(call) == \
""
def test_creating_exception_from_call_error_with_unknown_error_code():
call_error = CallError(
unique_id="1337",
error_code="418",
error_description="I'm a teapot",
)
with pytest.raises(UnknownCallErrorCodeError):
call_error.to_exception()
def unpack(msg):
"""
Unpacks a message into either a Call, CallError or CallResult.
"""
try:
msg = json.loads(msg)
except json.JSONDecodeError as e:
raise FormatViolationError(f'Message is not valid JSON: {e}')
if not isinstance(msg, list):
raise ProtocolError("OCPP message hasn't the correct format. It "
f"should be a list, but got {type(msg)} instead")
for cls in [Call, CallResult, CallError]:
try:
if msg[0] == cls.message_type_id:
return cls(*msg[1:])
except IndexError:
raise ProtocolError("Message doesn\'t contain MessageTypeID")
raise PropertyConstraintViolationError(f"MessageTypeId '{msg[0]}' isn't "
"valid")
def create_call_error(self, exception):
error_code = "InternalError"
error_description = "An unexpected error occurred."
error_details = {}
if isinstance(exception, OCPPError):
error_code = exception.code
error_description = exception.description
error_details = exception.details
return CallError(
self.unique_id,
error_code,
error_description,
error_details,
)