|
8 | 8 | from pyramid.response import Response |
9 | 9 | from pyramid.config import Configurator |
10 | 10 | from pyramid.renderers import render_to_response |
11 | | -from pyramid.httpexceptions import HTTPInternalServerError |
| 11 | +from pyramid.httpexceptions import ( |
| 12 | + HTTPInternalServerError, |
| 13 | + HTTPFound, |
| 14 | + HTTPNoContent |
| 15 | +) |
12 | 16 | import webtest |
13 | 17 | from nose.tools import eq_ |
14 | 18 |
|
@@ -59,6 +63,36 @@ def test_404(self): |
59 | 63 | eq_(s.meta.get('http.status_code'), '404') |
60 | 64 | eq_(s.meta.get('http.url'), '/404') |
61 | 65 |
|
| 66 | + def test_302(self): |
| 67 | + self.app.get('/redirect', status=302) |
| 68 | + |
| 69 | + writer = self.tracer.writer |
| 70 | + spans = writer.pop() |
| 71 | + eq_(len(spans), 1) |
| 72 | + s = spans[0] |
| 73 | + eq_(s.service, 'foobar') |
| 74 | + eq_(s.resource, 'GET raise_redirect') |
| 75 | + eq_(s.error, 0) |
| 76 | + eq_(s.span_type, 'http') |
| 77 | + eq_(s.meta.get('http.method'), 'GET') |
| 78 | + eq_(s.meta.get('http.status_code'), '302') |
| 79 | + eq_(s.meta.get('http.url'), '/redirect') |
| 80 | + |
| 81 | + def test_204(self): |
| 82 | + self.app.get('/nocontent', status=204) |
| 83 | + |
| 84 | + writer = self.tracer.writer |
| 85 | + spans = writer.pop() |
| 86 | + eq_(len(spans), 1) |
| 87 | + s = spans[0] |
| 88 | + eq_(s.service, 'foobar') |
| 89 | + eq_(s.resource, 'GET raise_no_content') |
| 90 | + eq_(s.error, 0) |
| 91 | + eq_(s.span_type, 'http') |
| 92 | + eq_(s.meta.get('http.method'), 'GET') |
| 93 | + eq_(s.meta.get('http.status_code'), '204') |
| 94 | + eq_(s.meta.get('http.url'), '/nocontent') |
| 95 | + |
62 | 96 | def test_exception(self): |
63 | 97 | try: |
64 | 98 | self.app.get('/exception', status=500) |
@@ -241,16 +275,26 @@ def json(request): |
241 | 275 | def renderer(request): |
242 | 276 | return render_to_response('template.pt', {'foo': 'bar'}, request=request) |
243 | 277 |
|
| 278 | + def raise_redirect(request): |
| 279 | + raise HTTPFound |
| 280 | + |
| 281 | + def raise_no_content(request): |
| 282 | + raise HTTPNoContent |
| 283 | + |
244 | 284 | config.add_route('index', '/') |
245 | 285 | config.add_route('error', '/error') |
246 | 286 | config.add_route('exception', '/exception') |
247 | 287 | config.add_route('json', '/json') |
248 | 288 | config.add_route('renderer', '/renderer') |
| 289 | + config.add_route('raise_redirect', '/redirect') |
| 290 | + config.add_route('raise_no_content', '/nocontent') |
249 | 291 | config.add_view(index, route_name='index') |
250 | 292 | config.add_view(error, route_name='error') |
251 | 293 | config.add_view(exception, route_name='exception') |
252 | 294 | config.add_view(json, route_name='json', renderer='json') |
253 | 295 | config.add_view(renderer, route_name='renderer', renderer='template.pt') |
| 296 | + config.add_view(raise_redirect, route_name='raise_redirect') |
| 297 | + config.add_view(raise_no_content, route_name='raise_no_content') |
254 | 298 | return config.make_wsgi_app() |
255 | 299 |
|
256 | 300 |
|
|
0 commit comments