Skip to content

Commit 45dd6be

Browse files
committed
Cleaned up tests based on pr comments
1 parent 7f4cf7a commit 45dd6be

File tree

1 file changed

+30
-37
lines changed

1 file changed

+30
-37
lines changed

tests/unit/services/apigateway/test_handler_method_request.py

Lines changed: 30 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,13 @@
1919

2020

2121
@pytest.fixture
22-
def method_handler_chain() -> RestApiGatewayHandlerChain:
23-
"""Returns a dummy chain for testing."""
24-
method_handler_chain = RestApiGatewayHandlerChain(request_handlers=[MethodRequestHandler()])
25-
# Sets raise_on_error to allow capturing the Exceptions raised by the validator
26-
method_handler_chain.raise_on_error = True
27-
return method_handler_chain
22+
def method_request_handler():
23+
"""Returns a dummy request handler invoker for testing."""
24+
25+
def _handler_invoker(context: RestApiInvocationContext):
26+
return MethodRequestHandler()(RestApiGatewayHandlerChain(), context, Response())
27+
28+
return _handler_invoker
2829

2930

3031
@pytest.fixture
@@ -40,10 +41,10 @@ def dummy_context():
4041

4142

4243
class TestMethodRequestHandler:
43-
def test_no_validator(self, method_handler_chain, dummy_context):
44-
method_handler_chain.handle(dummy_context, Response())
44+
def test_no_validator(self, method_request_handler, dummy_context):
45+
method_request_handler(dummy_context)
4546

46-
def test_validator_no_validation_required(self, method_handler_chain, dummy_context):
47+
def test_validator_no_validation_required(self, method_request_handler, dummy_context):
4748
validator_id = "validatorId"
4849
validator = RequestValidator(id=validator_id, validateRequestParameters=False)
4950
dummy_context.deployment.rest_api.validators = {validator_id: validator}
@@ -54,9 +55,9 @@ def test_validator_no_validation_required(self, method_handler_chain, dummy_cont
5455
"method.request.header.foo": True,
5556
},
5657
)
57-
method_handler_chain.handle(dummy_context, Response())
58+
method_request_handler(dummy_context)
5859

59-
def test_validator_no_params_to_validate(self, method_handler_chain, dummy_context):
60+
def test_validator_no_params_to_validate(self, method_request_handler, dummy_context):
6061
validator_id = "validatorId"
6162
validator = RequestValidator(id=validator_id, validateRequestParameters=False)
6263
dummy_context.deployment.rest_api.validators = {validator_id: validator}
@@ -67,9 +68,9 @@ def test_validator_no_params_to_validate(self, method_handler_chain, dummy_conte
6768
"method.request.header.foo": False,
6869
},
6970
)
70-
method_handler_chain.handle(dummy_context, Response())
71+
method_request_handler(dummy_context)
7172

72-
def test_validator_request_parameters(self, method_handler_chain, dummy_context):
73+
def test_validator_request_parameters(self, method_request_handler, dummy_context):
7374
validator_id = "validatorId"
7475
validator = RequestValidator(id=validator_id, validateRequestParameters=True)
7576
dummy_context.deployment.rest_api.validators = {validator_id: validator}
@@ -87,29 +88,26 @@ def test_validator_request_parameters(self, method_handler_chain, dummy_context)
8788
headers={}, query_string_parameters={}, path=""
8889
)
8990
with pytest.raises(BadRequestParametersError) as e:
90-
method_handler_chain.handle(dummy_context, Response())
91+
method_request_handler(dummy_context)
9192
assert e.value.message == "Missing required request parameters: [x-header, proxy, query]"
9293

9394
# invocation with valid header
9495
dummy_context.invocation_request["headers"]["x-header"] = "foobar"
95-
method_handler_chain.error = None
9696
with pytest.raises(BadRequestParametersError) as e:
97-
method_handler_chain.handle(dummy_context, Response())
97+
method_request_handler(dummy_context)
9898
assert e.value.message == "Missing required request parameters: [proxy, query]"
9999

100100
# invocation with valid header and querystring
101101
dummy_context.invocation_request["query_string_parameters"]["query"] = "result"
102-
method_handler_chain.error = None
103102
with pytest.raises(BadRequestParametersError) as e:
104-
method_handler_chain.handle(dummy_context, Response())
103+
method_request_handler(dummy_context)
105104
assert e.value.message == "Missing required request parameters: [proxy]"
106105

107106
# invocation with valid request
108107
dummy_context.invocation_request["path"] = "/proxy/path"
109-
method_handler_chain.error = None
110-
method_handler_chain.handle(dummy_context, Response())
108+
method_request_handler(dummy_context)
111109

112-
def test_validator_request_body_empty_model(self, method_handler_chain, dummy_context):
110+
def test_validator_request_body_empty_model(self, method_request_handler, dummy_context):
113111
validator_id = "validatorId"
114112
model_id = "model_id"
115113
validator = RequestValidator(id=validator_id, validateRequestBody=True)
@@ -128,13 +126,13 @@ def test_validator_request_body_empty_model(self, method_handler_chain, dummy_co
128126

129127
# Invocation with no body
130128
dummy_context.invocation_request = InvocationRequest(body=b"{}")
131-
method_handler_chain.handle(dummy_context, Response())
129+
method_request_handler(dummy_context)
132130

133131
# Invocation with a body
134132
dummy_context.invocation_request = InvocationRequest(body=b'{"foo": "bar"}')
135-
method_handler_chain.handle(dummy_context, Response())
133+
method_request_handler(dummy_context)
136134

137-
def test_validator_validate_body_with_schema(self, method_handler_chain, dummy_context):
135+
def test_validator_validate_body_with_schema(self, method_request_handler, dummy_context):
138136
validator_id = "validatorId"
139137
model_id = "model_id"
140138
validator = RequestValidator(id=validator_id, validateRequestBody=True)
@@ -155,25 +153,22 @@ def test_validator_validate_body_with_schema(self, method_handler_chain, dummy_c
155153

156154
# Invocation with no body
157155
dummy_context.invocation_request = InvocationRequest(body=b"{}")
158-
method_handler_chain.error = None
159156
with pytest.raises(BadRequestBodyError) as e:
160-
method_handler_chain.handle(dummy_context, Response())
157+
method_request_handler(dummy_context)
161158
assert e.value.message == "Invalid request body"
162159

163160
# Invocation with an invalid body
164161
dummy_context.invocation_request = InvocationRequest(body=b'{"not": "foo"}')
165-
method_handler_chain.error = None
166162
with pytest.raises(BadRequestBodyError) as e:
167-
method_handler_chain.handle(dummy_context, Response())
163+
method_request_handler(dummy_context)
168164
assert e.value.message == "Invalid request body"
169165

170166
# Invocation with a valid body
171167
dummy_context.invocation_request = InvocationRequest(body=b'{"foo": "bar"}')
172-
method_handler_chain.error = None
173-
method_handler_chain.handle(dummy_context, Response())
168+
method_request_handler(dummy_context)
174169

175170
def test_validator_validate_body_with_no_model_for_schema_name(
176-
self, method_handler_chain, dummy_context
171+
self, method_request_handler, dummy_context
177172
):
178173
# TODO verify this is required as it might not be a possible scenario on aws
179174
validator_id = "validatorId"
@@ -185,13 +180,12 @@ def test_validator_validate_body_with_no_model_for_schema_name(
185180
)
186181

187182
dummy_context.invocation_request = InvocationRequest(body=b"{}")
188-
method_handler_chain.error = None
189183
with pytest.raises(BadRequestBodyError) as e:
190-
method_handler_chain.handle(dummy_context, Response())
184+
method_request_handler(dummy_context)
191185
assert e.value.message == "Invalid request body"
192186

193187
def test_validate_body_with_circular_and_recursive_model(
194-
self, method_handler_chain, dummy_context
188+
self, method_request_handler, dummy_context
195189
):
196190
validator_id = "validatorId"
197191
model_1 = "Person"
@@ -266,7 +260,7 @@ def test_validate_body_with_circular_and_recursive_model(
266260
).encode()
267261
)
268262
with pytest.raises(BadRequestBodyError) as e:
269-
method_handler_chain.handle(dummy_context, Response())
263+
method_request_handler(dummy_context)
270264
assert e.value.message == "Invalid request body"
271265

272266
# Valid body
@@ -284,5 +278,4 @@ def test_validate_body_with_circular_and_recursive_model(
284278
}
285279
).encode()
286280
)
287-
method_handler_chain.error = None
288-
method_handler_chain.handle(dummy_context, Response())
281+
method_request_handler(dummy_context)

0 commit comments

Comments
 (0)