Exemplo n.º 1
0
 def test_if_request_is_valid_with_no_validator(self):
     ctx = ApiInvocationContext("POST", "/", b"", {})
     ctx.api_id = "deadbeef"
     ctx.resource = {
         "resourceMethods": {
             "POST": {
                 "requestValidatorId": " "
             }
         }
     }
     validator = RequestValidator(ctx, None)
     self.assertTrue(validator.is_request_valid())
Exemplo n.º 2
0
 def test_request_validate_body_with_no_request_model(self):
     apigateway_client = self._mock_client()
     apigateway_client.get_request_validator.return_value = {
         "validateRequestBody": True
     }
     ctx = ApiInvocationContext("POST", "/", '{"id":"1"}', {})
     ctx.api_id = "deadbeef"
     ctx.resource = {
         "resourceMethods": {
             "POST": {
                 "requestValidatorId": "112233",
                 "requestModels": None,
             }
         }
     }
     validator = RequestValidator(ctx, apigateway_client)
     self.assertFalse(validator.is_request_valid())
Exemplo n.º 3
0
    def test_apply_template_no_json_payload(self):
        api_context = ApiInvocationContext(
            method="POST",
            path="/foo/bar?baz=test",
            data=b'"#foobar123"',
            headers={"content-type": APPLICATION_JSON},
            stage="local",
        )
        api_context.integration = {
            "requestTemplates": {
                APPLICATION_JSON:
                "$util.escapeJavaScript($input.json('$.message'))"
            },
        }

        rendered_request = RequestTemplates().render(api_context=api_context)

        self.assertEqual("[]", rendered_request)
Exemplo n.º 4
0
    def test_apply_template(self):
        api_context = ApiInvocationContext(
            method="POST",
            path="/foo/bar?baz=test",
            data='{"action":"$default","message":"foobar"}',
            headers={"content-type": APPLICATION_JSON},
            stage="local",
        )
        api_context.response = requests_response({})
        api_context.integration = {
            "requestTemplates": {
                APPLICATION_JSON:
                "$util.escapeJavaScript($input.json('$.message'))"
            },
        }

        rendered_request = RequestTemplates().render(api_context=api_context)

        self.assertEqual('"foobar"', rendered_request)
Exemplo n.º 5
0
 def test_request_validate_body_with_no_model_for_schema_name(self):
     apigateway_client = Mock(boto3.client(service_name="apigateway"))
     apigateway_client.get_request_validator.return_value = {
         "validateRequestBody": True
     }
     apigateway_client.get_model.return_value = None
     ctx = ApiInvocationContext("POST", "/", '{"id":"1"}', {})
     ctx.api_id = "deadbeef"
     ctx.resource = {
         "resourceMethods": {
             "POST": {
                 "requestValidatorId": "112233",
                 "requestModels": {
                     "application/json": "schemaName"
                 },
             }
         }
     }
     validator = RequestValidator(ctx, apigateway_client)
     self.assertFalse(validator.is_request_valid())
Exemplo n.º 6
0
 def test_if_request_has_body_validator(self):
     apigateway_client = self._mock_client()
     apigateway_client.get_request_validator.return_value = {
         "validateRequestBody": True
     }
     apigateway_client.get_model.return_value = {
         "schema": '{"type": "object"}'
     }
     ctx = ApiInvocationContext("POST", "/", '{"id":"1"}', {})
     ctx.api_id = "deadbeef"
     ctx.resource = {
         "resourceMethods": {
             "POST": {
                 "requestValidatorId": "112233",
                 "requestModels": {
                     "application/json": "schemaName"
                 },
             }
         }
     }
     validator = RequestValidator(ctx, apigateway_client)
     self.assertTrue(validator.is_request_valid())
Exemplo n.º 7
0
    def test_render_custom_template(self, template):
        api_context = ApiInvocationContext(
            method="POST",
            path="/foo/bar?baz=test",
            data=b'{"spam": "eggs"}',
            headers={"content-type": APPLICATION_JSON},
            stage="local",
        )
        api_context.integration = {
            "requestTemplates": {
                APPLICATION_JSON: RESPONSE_TEMPLATE
            },
            "integrationResponses": {
                "200": {
                    "responseTemplates": {
                        APPLICATION_JSON: RESPONSE_TEMPLATE
                    }
                }
            },
        }
        api_context.resource_path = "/{proxy+}"
        api_context.path_params = {"id": "bar"}
        api_context.response = requests_response({"spam": "eggs"})
        api_context.context = {
            "httpMethod": api_context.method,
            "stage": api_context.stage,
            "authorizer": {
                "principalId": "12233"
            },
            "identity": {
                "accountId": "00000",
                "apiKey": "11111"
            },
            "resourcePath": api_context.resource_path,
        }
        api_context.stage_variables = {
            "stageVariable1": "value1",
            "stageVariable2": "value2"
        }

        rendered_request = template.render(api_context=api_context)
        result_as_json = json.loads(rendered_request)

        assert result_as_json.get("body") == {"spam": "eggs"}
        assert result_as_json.get("method") == "POST"
        assert result_as_json.get("principalId") == "12233"
        assert result_as_json.get("stage") == "local"
        assert result_as_json.get("enhancedAuthContext") == {
            "principalId": "12233"
        }
        assert result_as_json.get("identity") == {
            "accountId": "00000",
            "apiKey": "11111"
        }
        assert result_as_json.get("headers") == {
            "content-type": APPLICATION_JSON
        }
        assert result_as_json.get("query") == {"baz": "test"}
        assert result_as_json.get("path") == {"id": "bar"}
        assert result_as_json.get("stageVariables") == {
            "stageVariable1": "value1",
            "stageVariable2": "value2",
        }
Exemplo n.º 8
0
 def test_if_request_is_valid_with_no_matching_method(self):
     ctx = ApiInvocationContext("POST", "/", b"", {})
     ctx.resource = {"resourceMethods": {"GET": {}}}
     validator = RequestValidator(ctx, None)
     self.assertTrue(validator.is_request_valid())
Exemplo n.º 9
0
 def test_if_request_is_valid_with_no_resource_methods(self):
     ctx = ApiInvocationContext("POST", "/", b"", {})
     validator = RequestValidator(ctx, None)
     self.assertTrue(validator.is_request_valid())