def test_404_exception_with_status(self, event, context): os.environ['trace_id'] = "1-5eb5a279-87b966d0c206d010a3ddf0e8" utils = lambda_utils.Utils() @utils.api_gateway_response def handler(evt, ctx): try: raise SampleError("sample message") except SampleError as e: return (e, 404) res = handler(event, context) assert res == { "isBase64Encoded": False, "statusCode": 404, 'headers': { "Access-Control-Allow-Origin": "*", "Content-Type": "application/json" }, 'body': json.dumps({ "Code": "SampleError", "Message": "sample message", "TraceId": "1-5eb5a279-87b966d0c206d010a3ddf0e8" }) }
def test_none_body_204_response(self, event, context): utils = lambda_utils.Utils() @utils.api_gateway_response def handler(evt, ctx): return (None, 204) res = handler(event, context) assert res == { 'isBase64Encoded': False, 'statusCode': 204, 'headers': { "Access-Control-Allow-Origin": "*", "Content-Type": "application/json" } }
def test_normal_201_response_with_status(self, event, context): utils = lambda_utils.Utils() @utils.api_gateway_response def handler(evt, ctx): return ({"key": "value"}, 201) res = handler(event, context) assert res == { 'isBase64Encoded': False, 'statusCode': 201, 'headers': { "Access-Control-Allow-Origin": "*", "Content-Type": "application/json" }, 'body': json.dumps({"key": "value"}) }
def test_trace_id_with_X_AMZN_TRACE_ID(self, event, context): if 'trace_id' in os.environ: del os.environ['trace_id'] os.environ[ '_X_AMZN_TRACE_ID'] = "Self=1-5eb5a279-3495486f1d3332fba1b67b30;Root=1-5eb5a279-87b966d0c206d010a3ddf0e8;Parent=79be71115925fdf5;Sampled=1" utils = lambda_utils.Utils() logger = utils.logger @utils.set_trace_id def handler(evt, con): return {"key", "value"} handler(event, context) assert 'trace_id' in logger.__dict__['log_keys'] assert logger.__dict__['log_keys'][ 'trace_id'] == "1-5eb5a279-87b966d0c206d010a3ddf0e8" assert 'trace_id' in os.environ assert os.environ['trace_id'] == "1-5eb5a279-87b966d0c206d010a3ddf0e8"
def test_trace_id_without_X_AMZN_TRACE_ID(self, event, context, urandom_mock, urandom_list): if 'trace_id' in os.environ: del os.environ['trace_id'] os.environ['_X_AMZN_TRACE_ID'] = "1-5eb5a279-87b966d0c206d010a3ddf0e8" utils = lambda_utils.Utils() logger = utils.logger @utils.set_trace_id def handler(evt, con): return {"key", "value"} handler(event, context) START_TIME = time.time() HEX = hex(int(START_TIME))[2:] trace_id = "0-{}-{}".format( HEX, str(binascii.hexlify(urandom_list[0]), 'utf-8')) assert 'trace_id' in logger.__dict__['log_keys'] assert logger.__dict__['log_keys']['trace_id'] == trace_id assert 'trace_id' in os.environ assert os.environ['trace_id'] == trace_id