Example #1
0
    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())
Example #2
0
    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())
Example #3
0
    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())
Example #4
0
    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")
Example #5
0
    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")
Example #6
0
    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")
Example #7
0
    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"}')
Example #8
0
    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"}')
Example #9
0
    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)