#
# Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved.
#
import json
from functools import wraps
from greengrass_common.env_vars import MY_FUNCTION_ARN
[docs]def mock(func):
"""
mock decorates _invoke_internal by checking if MY_FUNCTION_ARN is present
if MY_FUNCTION_ARN is present, the actual _invoke_internal is invoked
otherwise, the mock _invoke_internal is invoked
"""
@wraps(func)
def mock_invoke_internal(self, function_arn, payload, client_context, invocation_type="RequestResponse"):
if MY_FUNCTION_ARN is None:
if invocation_type == 'RequestResponse':
return {
'Payload': json.dumps({
'TestKey': 'TestValue'
}),
'FunctionError': ''
}
elif invocation_type == 'Event':
return {
'Payload': b'',
'FunctionError': ''
}
else:
raise Exception('Unsupported invocation type {}'.format(invocation_type))
else:
return func(self, function_arn, payload, client_context, invocation_type)
return mock_invoke_internal