def test_lambda_output_not_json_serializable(self): lambda_output = 'some str' with self.assertRaises(ValueError): Service._parse_lambda_output(lambda_output, binary_types=[], flask_request=Mock())
def test_lambda_output_list_not_dict(self): lambda_output = '[]' with self.assertRaises(TypeError): Service._parse_lambda_output(lambda_output, binary_types=[], flask_request=Mock())
def test_status_code_negative_int(self): lambda_output = '{"statusCode": -1, "headers": {}, "body": "{\\"message\\":\\"Hello from Lambda\\"}", ' \ '"isBase64Encoded": false}' with self.assertRaises(TypeError): Service._parse_lambda_output(lambda_output, binary_types=[], flask_request=Mock())
def test_custom_content_type_header_is_not_modified(self): lambda_output = '{"statusCode": 200, "headers":{"Content-Type": "text/xml"}, "body": "{}", ' \ '"isBase64Encoded": false}' (_, headers, _) = Service._parse_lambda_output(lambda_output, binary_types=[], flask_request=Mock()) self.assertIn("Content-Type", headers) self.assertEquals(headers["Content-Type"], "text/xml")
def test_default_content_type_header_added_with_empty_headers(self): lambda_output = '{"statusCode": 200, "headers":{}, "body": "{\\"message\\":\\"Hello from Lambda\\"}", ' \ '"isBase64Encoded": false}' (_, headers, _) = Service._parse_lambda_output(lambda_output, binary_types=[], flask_request=Mock()) self.assertIn("Content-Type", headers) self.assertEquals(headers["Content-Type"], "application/json")
def test_properties_are_null(self): lambda_output = '{"statusCode": 0, "headers": null, "body": null, ' \ '"isBase64Encoded": null}' (status_code, headers, body) = Service._parse_lambda_output(lambda_output, binary_types=[], flask_request=Mock()) self.assertEquals(status_code, 200) self.assertEquals(headers, {"Content-Type": "application/json"}) self.assertEquals(body, "no data")
def test_parse_returns_correct_tuple(self): lambda_output = '{"statusCode": 200, "headers": {}, "body": "{\\"message\\":\\"Hello from Lambda\\"}", ' \ '"isBase64Encoded": false}' (status_code, headers, body) = Service._parse_lambda_output(lambda_output, binary_types=[], flask_request=Mock()) self.assertEquals(status_code, 200) self.assertEquals(headers, {"Content-Type": "application/json"}) self.assertEquals(body, '{"message":"Hello from Lambda"}')
def test_extra_values_ignored(self): lambda_output = '{"statusCode": 200, "headers": {}, "body": "{\\"message\\":\\"Hello from Lambda\\"}", ' \ '"isBase64Encoded": false, "another_key": "some value"}' (status_code, headers, body) = Service._parse_lambda_output(lambda_output, binary_types=[], flask_request=Mock()) self.assertEquals(status_code, 200) self.assertEquals(headers, {"Content-Type": "application/json"}) self.assertEquals(body, '{"message":"Hello from Lambda"}')
def test_parse_returns_decodes_base64_to_binary(self, should_decode_body_patch): should_decode_body_patch.return_value = True binary_body = "011000100110100101101110011000010111001001111001" # binary in binary base64_body = base64.b64encode(binary_body) lambda_output = { "statusCode": 200, "headers": { "Content-Type": "application/octet-stream" }, "body": base64_body, "isBase64Encoded": False } (status_code, headers, body) = Service._parse_lambda_output(json.dumps(lambda_output), binary_types=['*/*'], flask_request=Mock()) self.assertEquals(status_code, 200) self.assertEquals(headers, {"Content-Type": "application/octet-stream"}) self.assertEquals(body, binary_body)