Skip to content

Commit 21051c9

Browse files
committed
allow programming the response
1 parent 5ade9df commit 21051c9

File tree

1 file changed

+20
-14
lines changed

1 file changed

+20
-14
lines changed

tests/test_mig_wsgi-bin_migwsgi.py

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ def _is_return_value(return_value):
8888
return return_value in defined_return_values
8989

9090

91-
def _unpack_result(application_result):
91+
def _trigger_and_unpack_result(application_result):
9292
chunks = list(application_result)
9393
assert len(chunks) > 0, "invocation returned no output"
9494
complete_value = b''.join(chunks)
@@ -147,17 +147,17 @@ def _instrumented_format_output(
147147
return _instrumented_format_output
148148

149149

150-
def create_instrumented_retrieve_handler(output_objects=None, return_value=None):
151-
if not output_objects:
152-
output_objects = []
153-
154-
assert isinstance(output_objects, list)
155-
assert _is_return_value(return_value), "return value must be present in returnvalues"
156-
150+
def create_instrumented_retrieve_handler():
157151
def _instrumented_retrieve_handler(*args):
158152
_instrumented_retrieve_handler.calls.append(tuple(args))
159-
return [], return_value
153+
return _instrumented_retrieve_handler.returning or ([], returnvalues.ERROR)
154+
def _program(output_objects=None, return_value=None):
155+
assert _is_return_value(return_value), "return value must be present in returnvalues"
156+
assert isinstance(output_objects, list)
157+
_instrumented_retrieve_handler.returning = (output_objects, return_value)
160158
_instrumented_retrieve_handler.calls = []
159+
_instrumented_retrieve_handler.returning = None
160+
_instrumented_retrieve_handler.program = _program
161161

162162
return _instrumented_retrieve_handler
163163

@@ -178,12 +178,14 @@ def noop(*args):
178178

179179
class MigWsgi_binMigwsgi(MigTestCase):
180180
def assertInstrumentation(self):
181+
self.assertIsNotNone(self.instrumented_retrieve_handler.returning, "no response programmed")
182+
181183
def was_called(fake):
182184
assert hasattr(fake, 'calls')
183185
return len(fake.calls) > 0
184186

185-
self.assertTrue(was_called(self.instrumented_format_output))
186-
self.assertTrue(was_called(self.instrumented_retrieve_handler))
187+
self.assertTrue(was_called(self.instrumented_format_output), "no output generated")
188+
self.assertTrue(was_called(self.instrumented_retrieve_handler), "no output generated")
187189

188190
def assertResponseStatus(self, expected_status_code):
189191
def called_once(fake):
@@ -223,7 +225,7 @@ def fake_set_environ(value):
223225
))
224226

225227
self.instrumented_format_output = create_instrumented_format_output('HELLO WORLD')
226-
self.instrumented_retrieve_handler = create_instrumented_retrieve_handler(None, returnvalues.OK)
228+
self.instrumented_retrieve_handler = create_instrumented_retrieve_handler()
227229

228230
self.application_args = (fake_wsgi_environ, fake_start_response,)
229231
self.application_kwargs = dict(
@@ -233,6 +235,8 @@ def fake_set_environ(value):
233235
)
234236

235237
def test_return_value_ok_returns_status_200(self):
238+
self.instrumented_retrieve_handler.program([], returnvalues.OK)
239+
236240
application_result = migwsgi._application(
237241
*self.application_args,
238242
_wrap_wsgi_errors=noop,
@@ -241,12 +245,14 @@ def test_return_value_ok_returns_status_200(self):
241245
**self.application_kwargs
242246
)
243247

244-
output = _unpack_result(application_result)
248+
_trigger_and_unpack_result(application_result)
245249

246250
self.assertInstrumentation()
247251
self.assertResponseStatus(200)
248252

249253
def test_return_value_ok_creates_valid_html_page(self):
254+
self.instrumented_retrieve_handler.program([], returnvalues.OK)
255+
250256
application_result = migwsgi._application(
251257
*self.application_args,
252258
_wrap_wsgi_errors=noop,
@@ -255,7 +261,7 @@ def test_return_value_ok_creates_valid_html_page(self):
255261
**self.application_kwargs
256262
)
257263

258-
output = _unpack_result(application_result)
264+
output = _trigger_and_unpack_result(application_result)
259265

260266
self.assertInstrumentation()
261267
self.assertIsValidHtmlDocument(output)

0 commit comments

Comments
 (0)